ãŸããã
以äžã®ããã¹ãã¯ã圌ïŒã€ãŸããç§ïŒãçã«ããªã£ãŠããåéã®ãããã«ãããŠãäœç³»çãªæè²ãåããŠããªã人ã®å®éã®çµéšãšç¬åŠã®è¡åã®çµæã§ãã ãããã£ãŠãããã§ã®é£è§£ãªæšè«ã«ã¯ããã©ãã£ãã£ã¹ãæ£ãã°ããããŸãã æåã¯ç§ãæã¡è² ããã2çªç®ã¯ç¡èŠããŸãã äžéšã®äººã«ãšã£ãŠã¯ã圌ãã¯å瀺ã«ãªãå¯èœæ§ããããŸãã
ãã¹ãWebãåã«ã»ããã¢ããããããã®çæ³çãªãªãã·ã§ã³ã«ã€ããŠèª¬æããããšããŸããããã¹ãWebãéåžžè¡ãæ··ä¹±ãç解ããŠããŸãã é »ç¹ã«ãããã€ããå¿
èŠãããå Žåãã€ãŸãããããžã§ã¯ããã¢ã¯ãã£ããªéçºã®æ®µéã§ãµãŒããŒäžã«ååšããŠããå ŽåããŸãã¯ç°ãªã段éã®è€æ°ã®ãããžã§ã¯ããååšããå Žåã®ç¶æ³ã«ã€ããŠèª¬æããŸãã ããŸããŸãªéçºè
ãŸãã¯ããŒã ããããžã§ã¯ãã«é¢äžããŠããããããããžã§ã¯ããäºãã«åé¢ããå¿
èŠããããŸãã ãã ãããµãŒããŒã¯å
éšã«ããããããªãŒã¹çšã®ãµãŒããŒã®ããã«ç®¡çããã»ã¹ãããçšåºŠåé¢ããã³èªååããå¿
èŠã¯ãããŸããã
ãµããŒããããŠããWebã¢ããªã±ãŒã·ã§ã³ã®èšèªãšããŠãããŸããŸãªããŒãžã§ã³ã®Pythonã®äœ¿çšã«çŠç¹ãåœãŠãŸãã RubyãPerlãªã©ãä»ã®èšèªã«ãå€ãã®ããšãåœãŠã¯ãŸããŸããã
Pythonããã°ã©ã ã¯ã
PEP 3333ããã³ãã®ä»¥åã®ããã¥ã¡ã³ãã§ãã
PEP 333ã§èª¬æãããŠããWSGIãããã³ã«ïŒãwiskeyããšåŒã°ããïŒã䜿çšããŠWebãµãŒããŒãšå¯Ÿè©±ããŸãã
ã·ã³ã°ã«ãªã³ã¯ã¢ãŒããã¯ãã£
1å±€ã¢ãããŒãã®å©ç¹ã¯ãæ§æãç°¡åã§ãããã¡ã¢ãªæ¶è²»éãå°ãªããããæè»æ§ãæãªãããå Žåã«ãã£ãŠã¯ããã©ãŒãã³ã¹ãäœäžããããšã§ãã
ãã®ãããªæ¡ä»¶äžã§åäœããæã人æ°ã®ããWebãµãŒããŒã§ããçŸä»£ã®Webã®æ¬åœã®ãã¹ã€ã¹ã¢ãŒããŒãã€ããã¯ãApache HTTPdã§ãïŒãã®ååã¯ãApacheããšç¥ãããŸãïŒã Apacheã®çŸåšã®ããŒãžã§ã³ã§ãã2.2ããã³2.4ã«çæããŠãã ããã
第2å±€ãµãŒããŒã䜿çšããã«ãWSGIã¢ããªã±ãŒã·ã§ã³ãApacheã«çŽæ¥æ¥ç¶ããã«ã¯ããã©ã°ã€ã³ïŒApacheçšèªã§ã¯ã¢ãžã¥ãŒã«ïŒ
mod_wsgiã䜿çšãããŸãã WSGIã¯ã
CGIãããã³ã«ã®é«åºŠãªPythonåºæããŒãžã§ã³ã§ãã æè¡çã«ã¯ãPythonã€ã³ã¿ãŒããªã¿ãŒïŒããæ£ç¢ºã«ã¯CPythonïŒã¯ãå€éšã©ã€ãã©ãªãšããŠmod_wsgiã«çµã¿èŸŒãŸããŠããŸãïŒéçãŸãã¯åç-ããã¯ã¢ãžã¥ãŒã«ã®æ§ç¯æã«æ±ºå®ãããŸãã Apacheã1ã€ã®ã€ã³ã¹ããŒã«ã§1ã€ã®mod_wsgiã¢ãžã¥ãŒã«ã®ã¿ã«å¯Ÿå¿ã§ããããã«ãCPythonã®1ã€ã®ããŒãžã§ã³ã®ã¿ãåæã«mod_pythonã«çµ±åã§ããããšã¯æããã§ãã ããã¯å¶éã«ã€ãªãã
ãŸããmod_wsgiã䜿çšããã·ã³ã°ã«ãªã³ã¯ã¢ãŒããã¯ãã£ã§
ã¯ããµãŒããŒã§Python2ãšPython3ã®äž¡æ¹ã䜿çšããããšã¯ã§ããŸãã ã
ãã«ãããã»ãã·ã³ã°ã¢ãžã¥ãŒã«ã®éžæã¯ç§ãã¡ã«ãšã£ãŠäžå¯æ¬ ã§ãã ãã«ãã³ã¢ïŒãã«ãããã»ããµïŒã³ã³ãã¥ãŒã¿ãŒæ§æã®ç°ãªãã³ã³ãã¥ãŒãã£ã³ã°ã³ã¢éã§å¹ççã«è² è·ãåæ£ããã«ã¯ãWebãµãŒããŒãè€æ°ã®ãªã¯ãšã¹ããåæã«åŠçããWebã¢ããªã±ãŒã·ã§ã³ã®è€æ°ã®ã€ã³ã¹ã¿ã³ã¹ã®èµ·åãéå§ã§ããå¿
èŠããããŸãã äžèšã®æ©èœãç°ãªãæ¹æ³ã§å®è¡ãã2çš®é¡ã®ãã«ãããã»ãã·ã³ã°ã¢ãžã¥ãŒã«ããããŸãã
ããªãã©ãŒã¯
UNIXã©ã€ã¯ãªç°å¢ã®WebãµãŒããŒã«ããCGIãªã¯ãšã¹ãã®ç°¡ç¥åãããå®è¡ã¯æ¬¡ã®ããã«ãªããŸãïŒãªã¯ãšã¹ããåä¿¡ããããšããµãŒããŒã¯CGIã¢ããªã±ãŒã·ã§ã³ããã»ã¹ãçæããç°å¢å€æ°ã®ãªã¯ãšã¹ããã©ã¡ãŒã¿ãŒãšæšæºå
¥åã¹ããªãŒã ã®ããã£ãæž¡ããŸãã æåã®æé©åã¯ãçæããã»ã¹ã«æéããããããªã¯ãšã¹ããžã®å¿çæéãé·ããªããšããäºå®ã«ãã£ãŠåŒãèµ·ããããŸããã CGIããã°ã©ã ïŒãã®å Žåãmod_wsgiã«çµã¿èŸŒãŸããŠããPythonã€ã³ã¿ãŒããªã¿ãŒïŒã®èµ·åã«æéãç¡é§ã«ããªãããã«ããªã¯ãšã¹ãããµãŒããŒã«å°çãããŸã§ãäºåã«èµ·åããå
¥åã¹ããªãŒã ãéããã«äžæåæ¢ç¶æ
ã«ä¿ã€ã ãã§ååã§ãã ãµãŒããŒãè€æ°ã®ã³ãŒãã¹ããªãŒã ãåæã«å®è¡ã§ããå Žåã¯ãè€æ°ã®CGIãã³ãã©ãŒãå®è¡ããæ°ãããã³ãã©ãŒãå®äºãããšãã«èµ·åãããããã«ããããšã¯çã«ããªã£ãŠããŸãã äœæ¥äžããã³åŸ
æ©äžã®ãã³ãã©ãŒã®æ°ïŒããŒã«ãµã€ãºïŒãæ§æã§ããŸãã 1ã€ã®èŠæ±ãåŠçãããšãããã»ããµããã»ã¹ã¯æ¬¡ãåãå
¥ããããšãã§ããŸãã ãªã¯ãšã¹ããå°ãªãããå ŽåããµãŒããŒã¯äžèŠãªã¢ã€ãã«ããã»ã¹ã匷å¶çµäºããŸãã ãŸãããµãŒããŒã¯ãåŠçãããªã¯ãšã¹ãã®æ°ãç¹å®ã®ïŒã«ã¹ã¿ãã€ãºå¯èœãªïŒå¶éã«éãããšãäºé²ç®çã§ããã»ã¹ã匷å¶çµäºããŸãã
ããã¯ã
mod_preforkããã³
mod_itkã¢ãžã¥ãŒã«ã®åäœæ¹æ³ãšãŸã£ããåãã§ãã åŸè
ã¯ããã®ä»®æ³ãã¹ãã®èšå®ã§èšå®ããããŠãŒã¶ãŒã«ä»£ãã£ãŠåä»®æ³ãã¹ãã«ãµãŒãã¹ãæäŸã§ãããããç§ãã¡ã«ãšã£ãŠæãèå³æ·±ããã®ã§ãã ããããããã«ã€ããŠã¯åŸã§ã
åŽåè
CGIããã»ã¹ã®çæã³ã¹ãããååŽããããšåæã«ãµãŒããŒã®å
šäœçãªè² è·ã軜æžãã2çªç®ã®æ¹æ³ã¯ã1ã€ã®ããã»ã¹ã䜿çšããŠè€æ°ã®ãªã¯ãšã¹ãã
åæã«åŠçããããšã§ãã
説æãããŠããæŠç¥ã¯ãmpm_workerããã³mpm_eventã¢ãžã¥ãŒã«ã«ãã£ãŠå®è£
ãããŸãã åŸè
ã¯ãŸããããã€ãã®ã¢ã«ãŠã³ãã£ã³ã°ã¢ã¯ã·ã§ã³ãããªã¯ãšã¹ãåŠçã®ã¡ã€ã³ã¹ã¬ãããã¢ã³ããŒããããããŸã§ã®ãšããå®éšçãªã¹ããŒã¿ã¹ãæã£ãŠããŸãã
ã¯ãŒã«ãŒã¯ãããèªäœã§ã¯ãªãäžå®å®ã§å®å
šã§ã¯ãªããšé·ãéèããããŠããŸããããä»ã®å€ãã®Apacheã¢ãžã¥ãŒã«ããã«ãã¹ã¬ããã¢ãŒãã«é©å¿ããŠããªãããå®è£
ã«ãšã©ãŒããã£ãããã§ãã ããããæéãçµã€ã«ã€ããŠããããã®åé¡ã¯è§£æ±ºãããä»ã§ã¯åŽåè
ã¯ããžãã¹ã§äœ¿çšããã®ã«ååå®å
šã§ãã
GILãªã©ã®CPythonæ©èœã®ãããã§ãmod_wsgiã¯ãã«ãã¹ã¬ããåãããäœæ¥ã«éåžžã«ç°¡åã«é©å¿ã§ããŸãããããã®åãæ©èœã§ã¯ãã«ãã¹ã¬ããåã®å©ç¹ãæ倧éã«æŽ»çšããããšã¯ã§ããŸããã GILã¯ã1ã€ã®ããã»ã¹å
ã§Pythonã³ãŒãã®ãã¹ãŠã®ã¹ã¬ãããã¯ã©ã³ã¿ã ããšã«é£ç¶ããŠå®è¡ãããããšãä¿èšŒããŸããããã«ãããåæå®è¡ã®é¯èŠã®ã¿ãäœæãããŸãã ããããããã¯Pythonãéå§ïŒãŸãã¯Pythonããå®è¡ïŒããCã³ãŒãã«ã¯é©çšãããŸããããèŠæ±ãã©ã¡ãŒã¿ãŒã®è§£æãWSGIãã³ãã©ãŒãžã®ã¢ãã¬ã¹ã®ãããã³ã°ãªã©-ããã¯ãã¹ãŠCã³ãŒãã§è¡ãããŸãã ãããã£ãŠãPythonã§äœæããããµã€ãã§ã¯ãmpm_workerã䜿çšããããšã§ç¹å®ã®ããã©ãŒãã³ã¹ãåäžããŸãã
2å±€ã¢ãŒããã¯ãã£
2å±€ã¢ãŒããã¯ãã£ã§ã¯ãå€éšïŒããã³ããšã³ãïŒãšå
éšïŒããã¯ãšã³ãïŒã®ç°ãªãã¬ãã«ã®WebãµãŒããŒãå
±åã§äœ¿çšããŸãã
å€éšãµãŒããŒã¯ãããªããŒã¹ãããã·ãã®ãããªãããã³ã«ãšãã©ã°ã€ã³ã䜿çšããŠããŠãŒã¶ãŒãšå
éšãµãŒããŒéã®ä»²ä»åœ¹ãšããŠæ©èœããŸãã ããã«ãå€éšãµãŒããŒã¯1990幎ã«äœæãããHTTPãããã³ã«ãå®è¡ããŸããã¯ã©ã€ã¢ã³ãã«éçãã¡ã€ã«ïŒã¢ã»ããïŒãæäŸããŸãã æè¿ã§ã¯ããã®æ©èœã¯æ¬çªç°å¢ã®CDNãµãŒãã¹ã«ãã°ãã°ç§»è¡ãããŠããŸãã
Apacheã¯å€éšãµãŒããŒãšããŠã䜿çšã§ããŸããã軜éã®nginxããŸãã¯ãªãœãŒã¹ãéãããŠããç¶æ³ã§ã¯ãlighttpdããã®åœ¹å²ã«é©ããŠããŸãã ãã®åœ¹å²ã§ã¯ããµãŒããŒã¯èŠæ±ã«å¯Ÿããè¿
éãªå¿çãšãæ¶è²»ããããªãœãŒã¹ã«é¢ããè¬èãã®ã¿ãå¿
èŠãšããŸãã
éåžžãå
éšãµãŒããŒã¯ãã¢ããªã±ãŒã·ã§ã³ã®ã¢ãŒããã¯ãã£ãšèšèªã«äŸåããŸãã Pythonã¢ããªã±ãŒã·ã§ã³ã¯ã
uWSGI ã
Green UnicornããŸãã¯twistedãTornadoãªã©ã®ãã«ãã¹ã¬ãããããã¯ãŒã¯ãã¬ãŒã ã¯ãŒã¯ã«åºã¥ããç¬èªã®ãµãŒããŒã䜿çšããããšããããããŸãã å€ãã®Webãã¬ãŒã ã¯ãŒã¯ã«ã¯ãæŠéæäœã«å€å°ãªããšãé©ããŠããWebãµãŒããŒãå«ãŸããŠããŸãã ããšãã°ãDjangoã«çµã¿èŸŒãŸããŠãã
WebãµãŒããŒã¯ãããã°å°çšã§ãããéçšç°å¢ã§ã¯ããæ·±å»ãªãã®ã«çœ®ãæããå¿
èŠããããŸãã äžæ¹ãçµã¿èŸŒã¿ã®
CherryPy WebãµãŒããŒã¯ãæŠéè² è·ã«å¯ŸããŠæé©åãããŠããŸãã
ãã¹ããµãŒããŒïŒCIãµãŒããŒïŒã®ç¹å¥ãªèŠä»¶
ãã¡ã€ã«èš±å¯ã®åé¡
POSIXã·ã¹ãã ã®ãããã¯ãŒã¯ã¢ãŒããã¯ãã£ã§ã¯ãç¹æš©ãŠãŒã¶ãŒã®ã¿ãããŒã1ã1024ã«ã¢ã¯ã»ã¹ã§ãããšæ³å®ããŠããŸãã ããŒã80ïŒHTTPïŒããã³443ïŒHTTPSïŒã¯ãã®å¶éã«è©²åœãããããWebãµãŒããŒã®èŠªããã»ã¹ïŒ2å±€ã¢ãŒããã¯ãã£ã«é¢ããŠã¯å€éšïŒã¯åžžã«ã«ãŒãæš©éãæã£ãŠããŸãã
ããããCGIã¹ã¯ãªãããã»ãã¥ãªãã£äžã®çç±ã§äžå¿
èŠã«åºãæš©å©ãäžããããšã¯æãŸãããããŸããã ãããã£ãŠãã¹ã¯ãªãããšããŒã¿ã䜿çšããå ŽåãWebãµãŒããŒã¯åžžã«ç¹æš©ãéåžžã®ãŠãŒã¶ãŒã®ã¬ãã«ãŸã§äžããŸãã Apacheã®ãã®ãããªãŠãŒã¶ãŒã¯ãç°å¢å€æ°APACHE_RUN_USERããã³APACHE_RUN_GROUPã«ãã£ãŠå®çŸ©ãããŸãã Debianããã³ãã®æŽŸçãã£ã¹ããªãã¥ãŒã·ã§ã³ã§ã¯ããã®ãŠãŒã¶ãŒã®ååã¯ãwww-dataãã§ãã ã·ã¹ãã ã®ã»ãã¥ãªãã£ãããã«åŒ·åããããã«ãä»ã®ãµãŒãã¹ãŠãŒã¶ãŒãšåæ§ã«ãwww-dataãŠãŒã¶ãŒã¯ã·ã§ã«ãæãããã·ã¹ãã ã«ãã°ã€ã³ã§ããŸããã
Webã¢ããªã±ãŒã·ã§ã³ããµãŒããŒã«äžåºŠã€ã³ã¹ããŒã«ãããå°æ¥å€æŽãããªãå ŽåïŒãŠãŒã¶ãŒãããŠã³ããŒããããã¡ã€ã«ãé€ãïŒãé«ãç¹æš©ãæã€ãŠãŒã¶ãŒãšããŠãµãŒããŒã«ãã°ã€ã³ããé©åãªãã£ã¬ã¯ããªïŒ '/ var / www'ã§ãã¡ã€ã«ãå±éããããšã¯è«ççã§ãDebianã§ïŒããã³ãããã®ãã¡ã€ã«ã®ææè
ãå€æŽããŸãã
# chown -R www-data:www-data /var/www/
éçºãµãŒããŒã«ãšã£ãŠããã®æ¹æ³ã¯äžäŸ¿ã§ãããç¹æš©ã¢ã«ãŠã³ãã絶ãã䜿çšããŠããããæžå¿µãåŒãèµ·ããããšã¯æããã§ãã 詳现ãªåçãå«ããã£ã¬ã¯ããªããã³WebãµãŒããŒããŒã¿ãžã®çæ³çãªã¢ã¯ã»ã¹æš©ã«ã€ããŠã®è³ªåã¯ã
ãã¡ããã芧ãã ãã ã ãã®èšäºã¯ãServerfaultã«é¢ããæ£èŠã®è³ªåã®ãªã¹ãã«ãããŸããããã¯äœããæå³ããŸãã
ãã®èšäºã®æ¬è³ªã¯æ¬¡ã®ãšããã§ãã
- ãµã€ãã®å±éãæ
åœããæ
åœè
ã1人ããå Žåããµã€ãã®ãã¹ãŠã®ãã¡ã€ã«ãšãã£ã¬ã¯ããªã®ãŠãŒã¶ãŒææè
ãããã³ãwww-dataããå®è¡ããææè
ã°ã«ãŒãã«ããå¿
èŠããããŸãããã£ã¬ã¯ããªã®ã¢ã¯ã»ã¹ã³ãŒãã750ã«èšå®ããŸãïŒãµã€ããŠãŒã¶ãŒãã¢ããããŒãã§ãããã£ã¬ã¯ããªã®770ãã¡ã€ã«ïŒããã³ãã¡ã€ã«çš640ïŒãµãŒããŒã«ãã£ãŠèšé²ããããã¡ã€ã«çš660ïŒã èµ·åã¹ã¯ãªããã®umaskã¯027ã«èšå®ããå¿
èŠããããŸãã
- è€æ°ã®ãŠãŒã¶ãŒããµã€ãã«ã¢ã¯ã»ã¹ããå¿
èŠãããå Žåãã«ãŒããŠãŒã¶ãŒã®ææè
ãäœæããå¿
èŠããããŸããææè
ã°ã«ãŒãã¯ãã¹ãŠã®éçºè
ãæ§æãããã°ã«ãŒãã«ãªããWebãµãŒããŒã¯äžäœ3ãããã«ãããããã®ãã¡ã€ã«ã«ã¢ã¯ã»ã¹ããŸãã
- www-dataãããŒã¿ã®ææè
ãšããŠèšå®ããéçºã°ã«ãŒããææè
ã°ã«ãŒããšããŠèšå®ããŸãããåãã¡ã€ã«ãäœæããåŸãææè
ãå€æŽããå¿
èŠããããŸãã å¥ã®åçè
ã¯ãäœæããããªããžã§ã¯ãã®äœæè
ãäœæè
ã§ã¯ãªãããªããžã§ã¯ããäœæããããã£ã¬ã¯ããªã®ææè
ã«ãªãããã«ããã£ã¬ã¯ããªã«suidããã³guidããããèšå®ããæ©èœã«èšåããŠããŸãã ãããã®ãããã䜿çšãããã®ãããªéæšæºçãªæ¹æ³ã¯ã* BSDããLinuxã«è»¢éããããã¡ã€ã«ãWebãµãŒããŒã«ãã£ãŠäœæãããå Žåã«åäœãããã©ããã¯ããããŸãããã
- çæ³çãªå Žåã§ã¯ãéçºããŒã ã¯èªåå±éããŒã«ïŒ Puppet ã Chef ïŒãŸãã¯CIç°å¢ïŒ Jenkins ïŒã䜿çšããŠç¶æ³ã1人ã®è²¬ä»»ãããŠãŒã¶ãŒã«æžããå¿
èŠããããŸãããå¯äžã®éãã¯ãŠãŒã¶ãŒããããã«ãªãããšã§ãã
- ãã®çµæãã¢ã¯ã»ã¹æš©ãèšå®ããã ãã§ã¯ä»®æ³ãã¹ããå®å
šã«åé¢ããããšã¯äžå¯èœã§ãããšçµè«ä»ããããŸãã1ã€ã®ãµã€ãã®è匱æ§ã«ãããæ»æè
ã¯å°ãªããšããã®ãµãŒããŒäžã®ãã¹ãŠã®Webã¢ããªã±ãŒã·ã§ã³ã®ã³ãŒããèªã¿åãããšãã§ããŸãã
è°è«ã§èšåãããŠããªãã®ã¯ãchmodãšchownã䜿çšããããããã¹ãŠã®æäœã®ççãªè€éãã§ããããã®çµæãè匱æ§ã«ã€ãªãã人çãšã©ãŒã®å¯èœæ§ãé«ãããšã§ãã
Apacheã§å©çšå¯èœãªç¹æš©åé¢ããŒã«ã䜿çšãããã2å±€ã¢ãŒããã¯ãã£ã«åãæ¿ãããšããã¹ãŠãããç°¡åã§å®å
šã«ãªããŸãã
Apacheç¹æš©å
±æããŒã«
mpm_itk
mpm_itkã¢ãžã¥ãŒã«ã䜿çšãããšãã©ã®ãŠãŒã¶ãŒã§æãç°¡åã§æãèªç¶ãªæ¹æ³ã§Webã¢ããªã±ãŒã·ã§ã³ãå®è¡ãããã決å®ã§ããŸãã
<VirtualHost *:80> <IfModule mpm_itk_module> AssignUserID johnd developers </IfModule> ⊠</VirtualHost>
mod_suexec
äœããã®çç±ã§å¥ã®ãã«ãããã»ããµã¢ãžã¥ãŒã«ã®äœ¿çšãäœåãªããããå Žåã¯ã
mod_suexecã
圹ç«ã¡ãŸãã æ¬ ç¹ã¯ããããã»ããã¢ããã®çžå¯Ÿçãªè€éãã§ãããšèããããšãã§ããŸãããããã¯ãœãŒã¹ããã€ã³ã¹ããŒã«ããå Žåã®ã¿ã§ãã ãã£ã¹ããªãã¥ãŒã·ã§ã³ã§ã¯ããã¹ãŠãèªååãããŠããŸãã ãŸããmod_suexecã®äœ¿çšã¯ãä»®æ³ãã¹ãæ§æã®åäžã®ãã£ã¬ã¯ãã£ãã«èŠçŽãããŸãã
<VirtualHost *:80> <IfModule mod_suexec.c> SuexecUserGroup johnd developers </IfModule> ⊠</VirtualHost>
ãã¹ããµãŒããŒäžã®2å±€ã¢ãŒããã¯ãã£
å€ãã®å ŽåããµãŒããŒã®ããã©ãŒãã³ã¹ãæé©åããããã«2å±€ã¢ãŒããã¯ãã£ã䜿çšãããŸãã éçºè
ã¯ãé床ãããWebã¢ããªã±ãŒã·ã§ã³ã®å±éã®å©äŸ¿æ§ãããéèŠããŠããŸãã ãã¹ããµãŒããŒã§2å±€ã¢ãŒããã¯ãã£ã䜿çšããããšã«ã¯ãç¹å®ã®å©ç¹ããããŸãã
å©ç¹ã«ã¯ãéçºè
ãå
éšãµãŒããŒã®ã€ã³ã¹ããŒã«ãšæ§æãæ
åœããæé©ãªãã©ã¡ãŒã¿ãŒãšèµ·åæ¹æ³ã決å®ãããšããäºå®ãå«ãŸããŸãã å
éšãµãŒããŒã¯éçºè
ç¹æš©ã§åäœããããã°ã©ã ãã¡ã€ã«ãšãããžã§ã¯ããã£ã¬ã¯ããªãžã®ã¢ã¯ã»ã¹æš©ã®æé©ãªèšå®ã«é¢ãã質åã¯ãªããªããŸããã ãã¹ããã°ãéçºè
ãå®å
šã«èªç±ã«äœ¿çšã§ããŸãã Webã¢ããªã±ãŒã·ã§ã³ã¯ãä»ã®ãããžã§ã¯ãã«é¢ä¿ãªããvirtualenvã§æå®ãããããŒãžã§ã³ã®Pythonã䜿çšã§ããŸãã ãµãŒããŒç®¡çè
ãåŠçããå¿
èŠãããã®ã¯ãå€éšãµãŒããŒãšå
éšãµãŒããŒãéä¿¡ããããã®éçå€æ°ãšUNIXãœã±ãããŸãã¯éç¹æš©ããŒããåãããã£ã¬ã¯ããªã ãã§ãã
éçºè
ã¯ããµãŒããŒã®èªåèµ·åãšãã®åæ»ãªéçšã«ã責任ãè² ããŸãã åè
ãcrontab -eã³ãã³ãã§ç°¡åã«è§£æ±ºã§ããå Žåã¯ãåŸè
ã«
ã¹ãŒããŒãã€ã¶ãŒãæäŸã§ããŸãã
WebãµãŒããŒã®åèµ·å
Apacheãå¯äžã®ãµãŒããŒãšããŠäœ¿çšããå Žåãèšå®ã«ã
MaxRequestsPerChild 1 ããã£ã¬ã¯ãã£ããè¿œå ããå¿
èŠããããŸãã ããã«ãããéçºè
ã¯ãµãŒããŒãåèµ·åããå¿
èŠããªããªããŸãã ãªã¯ãšã¹ãããšã«ã€ã³ã¿ãŒããªã¿ãŒã®æ°ããã€ã³ã¹ã¿ã³ã¹ãèµ·åãããããããµã€ãã³ãŒãã®ãã¹ãŠã®å€æŽã¯ããã«ãã®äœæ¥ã«åæ ãããŸãã
ãã¡ããããªã¯ãšã¹ããã³ãã©ã®äºæ¬¡äœ¿çšãçŠæ¢ãããšããµãŒããŒã®ããã©ãŒãã³ã¹ãäœäžããŸããããã以å€ã®å Žåã¯ãã³ãŒããå€æŽãããã³ã«ãµãŒããŒãåèµ·åããå¿
èŠããããŸãã Apacheãåèµ·åããã«ã¯ãWSGIåºæã®æ¹æ³ãšæ±çšã®2ã€ã®æ¹æ³ããããŸãã
- WSGIåºæã®æ¹æ³ã¯ãWSGIã¹ã¯ãªããã®ç·šéæ¥ãæŽæ°ããããšã§ãã ããã¯ãtouchã³ãã³ãã§å®è¡ã§ããŸãã ãã®ã¡ãœããã¯ãmod_wsgiãããŒã¢ã³ã¢ãŒãã§åäœããããã«èšå®ãããŠããå Žåã«ã®ã¿æ©èœããŸãã ïŒäžè¬ã«ãããŒã¢ã³ã¢ãŒãã§åäœããããã«mod_wsgi ãæ§æããããšã匷ããå§ãããŸããããã®ã¢ãŒãã¯ããã©ã«ãã§ãªãã«ãªã£ãŠããŸããïŒ
- äžè¬çãªæ¹æ³-apachectl restartã³ãã³ããŸãã¯é¡äŒŒã®æ¹æ³ã§ã¯ãã«ãŒãæš©éãå¿
èŠã§ãã ãã¡ãããsudoã®é©åãªæ§æã§ããŸãããããšãã§ããŸãããsudoèªäœã®äœ¿çšã¯èŠãããããè€éã§å±éºã§ãã ãããã£ãŠããã®æ¹æ³ã䜿çšããããšã¯æãŸãããããŸããã
2å±€ã¢ãŒããã¯ãã£ã䜿çšããå Žåã¯ãå
éšãµãŒããŒã®ã¿ãåèµ·åããå¿
èŠããããŸãã å±éãå®è¡ãããã®ãšåããŠãŒã¶ãŒã®ä»£ããã«æ©èœãããããåèµ·åïŒãŸãã¯åèµ·åã®å¿
èŠãªãã«èšå®ïŒããŠãåé¡ã¯ãããŸããã
çµè«
2å±€WebãµãŒããŒã¢ãŒããã¯ãã£ã¯ãåãäŒæ¥å
ã®è€æ°ã®éçºè
ãŸãã¯éçºããŒã ã䜿çšãããã¹ããµãŒããŒã«æé©ã§ãã ãµãŒããŒç®¡çè
ãå€æ°ã®ã«ãŒãã³ãã解æŸããéçºè
ãããââãžã§ã¯ããå®è£
ããæ段ãããèªç±ã«éžæã§ããããã«ããããŒããŠã§ã¢ãªãœãŒã¹ãããå¹ççã«äœ¿çšã§ããããã«ããŸãã åæã«ãéçºã®å©äŸ¿æ§ã¯çç£æ§ã®äœäžãç ç²ã«ããŠéæãããå ŽåããããŸãã ããããçµç¹ã®è³éãéåžžã«éãããŠããã1ã€ã®ãµãŒããŒã«ãã¹ããããžã§ã¯ããšæŠéãããžã§ã¯ããé
眮ããããšãäœåãªããããå Žåã§ãããã®å Žåãã»ãã¥ãªãã£ãšããªãè¯ãã¬ãã«ã®ããã©ãŒãã³ã¹ãå®çŸã§ããŸãã