ããã§ã¯ãä»®æ³ãã¹ãã£ã³ã°ããã䜿ããããããæ¹æ³ãšãäžèšã®ã¢ãžã¥ãŒã«ïŒmod_pythonããã³mod_wsgiïŒãæ§æããæ¹æ³ã説æããŸãã
ç§ã¯ããã«ã€ããŠã®ç§ã®èãã§ã¢ã¡ãªã«ãçºèŠããŠãããšã¯æããªãã ããããç§ã®äŸãããã®æ§æã®ã»ããã¢ããã«è²»ããæéãççž®ããèªåèªèº«ïŒãŸãã¯ç¬ïŒã«ãã倧ããªå©çãããããããã«èª°ããå©ããŠããããšå¬ããã§ãã
ããã§ãç§ãæã£ãŠãããã®ãšããœãæŒå¥ã®æåŸã«äœããã¹ããã説æããããšæããŸãã Python 2.7ãDjango 1.3ãããã³Apache 2.2 WebãµãŒããŒãFreeBSD 9.0ãªãã¬ãŒãã£ã³ã°ã·ã¹ãã ã«ã€ã³ã¹ããŒã«ãããŠããŸãã ç§ã®ããŒã ãã£ã¬ã¯ããªã«ã¯ãããã«äœ¿çšã§ãã2ã€ã®djangoãããžã§ã¯ããå«ãŸããŠããŸãã äºã¯å°ããã§ã-ApacheãšDjangoã®çžäºäœçšã®ããã®ã¢ãžã¥ãŒã«ãéžæããŠã€ã³ã¹ããŒã«ããå¿ èŠããããŸãããŸããããã€ãã®djangoãããžã§ã¯ãã®åæ管çã®ããã«å ±æãã¹ãã£ã³ã°ãèšå®ããå¿ èŠããããŸãã treeã³ãã³ãã§ååŸãããã£ã¬ã¯ããªããªãŒã次ã«ç€ºããŸãã
ãµãŒããŒã«Djangoããããã€ããã«ã¯ãWebãµãŒããŒãšå¯Ÿè©±ããã¢ãžã¥ãŒã«ãã€ã³ã¹ããŒã«ããŠæ§æããå¿ èŠããããŸãã ãã®ãããªã¢ãžã¥ãŒã«ãããã€ããããŸãã ã©ã¡ããåªå ãããã¯ãã·ã¹ãã ã®ç¹æ§ãšç¹æ§ãéžæãè¡ã人ã®çµéšãšå¿ççç¹æ§ã圌ã®æ£æ°ã®åºŠåããããã€ã¹/éçºè /æã®æ²çãè·¯äžã®å€©æ°ãªã©ã«ãã£ãŠç°ãªããŸãã ç°¡åã«èšãã°ã奜ã¿ã®åé¡ã§ãã 誰ããèªåã®ãæ°ã«å ¥ãã®ã¢ãžã¥ãŒã«ããµããŒãããå€ãã®è°è«ãæã£ãŠãããšç¢ºä¿¡ããŠããŸãã ç§ã¯åœŒãã®ãã¹ãŠãèããããªãã®ã§ãè°è«ããŸããã ããåãããå¿ èŠããã£ãã¢ãžã¥ãŒã«ã®æ§æã®ã¿ãæäŸããŸãã
ããã«ã¹ãŒããŒãŠãŒã¶ãŒã«ä»£ãã£ãŠè¡åããããšã«æ³šæãããã®ã§ããªã¹ãã«ã¯suãsudoã®ãããªã³ãã³ãã¯ãããŸããã ç¹æš©ã®äœããŠãŒã¶ãŒã®ã¢ã«ãŠã³ãã§ã·ã¹ãã ãæ§æãã人ã ã®ãããã®éæ³ã®èšèãå¿ããªãã§ãã ããã
ãããè¡ããïŒ
MOD_PYTHON
mod_pythonã¢ãžã¥ãŒã«ãåããApache WebãµãŒããŒã¯ããããŸã§åžžã«Djangoã®äž»ãªäœæ¥ç°å¢ãšèããããŠããŸããïŒDjangoãã©ãããã©ãŒã ã®äœæè ããè² è·ã®é«ããã¥ãŒã¹ãµã€ãã®åºç€ãšããŠäœ¿çšããã®ã¯ãã®çµã¿åããã§ããïŒã ãã®ã¢ãžã¥ãŒã«ã¯ãWebãµãŒããŒå ã«Pythonã€ã³ã¿ãŒããªã¿ãŒãå®è£ ãããµãŒããŒã®èµ·åæã«Pythonã§èšè¿°ãããã³ãŒããããŒãããŸãã Apacheããã»ã¹ã®å®è¡äžãã³ãŒãã¯ã¡ã¢ãªã«æ®ããŸãã ãã®ä»æ¥ã®Apache + mod_pythonã®æã¯ãååã«ãã¹ããããååã«ææžåãããå±éãªãã·ã§ã³ã§ãã ãããããã®ã¢ãžã¥ãŒã«ã¯ãã§ã«æ代é ãã§ããããã®ãµããŒãã¯Django 1.5ã§åé€ãããŸãã ãããã£ãŠã Djangoã®å ¬åŒWebãµã€ãã§ã¯ ãæ°ãããããžã§ã¯ãããããã€ããéã«mod_wsgiã¢ãžã¥ãŒã«ã®äœ¿çšãæ€èšããããšã匷ããå§ãããŸãïŒãã®ãããã¯ã«ã€ããŠã¯ããã®èšäºã§åŸã»ã©èª¬æããŸãïŒã
mod_pythonã§ãã ã¢ãžã¥ãŒã«èªäœã¯ããŒãã«ãããããããããã€ã³ã¹ããŒã«ããŸãã
# cd /usr/ports/www/mod_python3 # make install clean
ã€ã³ã¹ããŒã«åŸãã¢ãžã¥ãŒã«ã¯ãã®èšå®ãApacheæ§æãã¡ã€ã«ïŒhttpd.confïŒã«è¿œå ããŸãã ããŒãžã§ã³ç®¡çã·ã¹ãã ã䜿çšããŠhttpd.confãã¡ã€ã«ãä¿åããå ŽåïŒãéåžžã®ãã¡ããªãã§ããå¿ èŠããããŸãïŒãããŒããã€ã³ã¹ããŒã«ããåã«ãå¿ ããã¡ã€ã«ããã£ããã£ããŠãã ããã
次ã«ãåè¿°ã®httpd.confãç·šéçšã«éããŸãïŒå人çã«eeãšãã£ã¿ãŒã䜿çšããŸãããviãªã©ã®æ ¹æ¬çã«ç°ãªããã®ã䜿çšããããšãã§ããŸãïŒã
# ee /usr/local/etc/apache22/httpd.conf
ãã®ãã¡ã€ã«ã§æ¬¡ã®è¡ã確èªããå¿ èŠããããŸãã
LoadModule python_module libexec/apache22/mod_python.so
ïŒmod_pythonã¢ãžã¥ãŒã«ãããŒãããŸããããã¯ãåã®ã¹ãããã§ãã¡ã€ã«ã«èªåçã«è¿œå ãããã¯ãã®è¡ã§ããïŒUser www Group www
ïŒæš©éã®ãªããŠãŒã¶ãŒã«ä»£ãã£ãŠãµãŒããŒãèµ·åããŸããApacheãrootãšããŠå®è¡ããããšãæšå¥šãããå ŽåããããŸãããå®è¡ããªãã§ãã ãããæ»æè ãWebãµãŒããŒã«äŸµå ¥ãããšãè¿œå å ±é ¬ãšããŠã·ã¹ãã ã®rootæš©éãååŸããŸãïŒïŒServerName localhost
ïŒWebãµã€ãã®ååãå®éã®ãã¹ãåã§ãããé©åãªDNSãšã³ããªãå¿ èŠã§ãããã ãããã¹ãäžã¯ãDNSãšã³ããªã®ä»£ããã«ã/ etc / hostsã®ãšã³ããªã䜿çšã§ããŸããå®éããããç§ãã¡ã®ããããšã§ãã ãããŒã«ã«ãã¹ãã§ãã¹ãããå Žåããã®è¡ãè¿œå ããå¿ èŠã¯ãããŸããããåèµ·åãããã³ã«WebãµãŒããŒãããªãã®æ¹åã«çãæ·±ã錻ã鳎ãããŸãã
ããã«ãå¿ããªãããã«ã/ etc / hostsã«ãšã³ããªãè¿œå ããŸãïŒãããã¯ç§ã®ãµã€ãã®ååã§ãïŒïŒ
127.0.0.1 gallery.ru museum.ru
次ã«ãå ±æãã¹ãã£ã³ã°ãã»ããã¢ããããŸãã å ±æãã¹ãã£ã³ã°ã®å Žåãè€æ°ã®ãã¹ãåãåããã·ã³ãæããŸãã ãµãŒããŒã¯ç°ãªããã¡ã€ã³ãžã®ãªã¯ãšã¹ããåºå¥ããé©åãªããŒãžãæäŸããå¿ èŠããããŸãã ä»®æ³ãã¹ããµãŒãã¹æ©èœãæå¹ã«ããã«ã¯ãhttpd.confãã¡ã€ã«ã®Include etc / apache22 / extra / httpd vhosts.confã®è¡ãã³ã¡ã³ã解é€ãããã¹ãŠã®ãµã€ãã®æ§æã1ã€ã®httpd-vhosts.confãã¡ã€ã«ã«èšè¿°ããŸãïŒäžèšãåç §ïŒã ãã ããå¯äžã®ApacheãµãŒããŒã¯ããªãé©åãªæ°ã®ä»®æ³ãã¹ããæäŸã§ããããããã®ãããªåãã¹ãã®æ§æãIncludesãã£ã¬ã¯ããªïŒ/ usr / local / etc / apache22 / IncludesïŒã®åå¥ã®ãã¡ã€ã«ã«ä¿åããæ¹ãã¯ããã«äŸ¿å©ã§ãã ãã®ãã£ã¬ã¯ããªã«å«ãŸãããã¡ã€ã«ã®ååã®æ¡åŒµåã.confã§ããå ŽåãApacheã¯ãã®åŸã®åèµ·åæã«ãã®ãã¡ã€ã«ã®æ§æãèªåçã«å«ããŸãã ããã«ãå€æ°ã®ãã¡ã€ã«ã§è¿·åã«ãªããªãããã«ãããããæäŸãããã¡ã€ã³ã®ååãå«ãååãå²ãåœãŠãŸãã
ãã®ãããhttpd.confãã¡ã€ã«ã®æåŸã«ã次ã®æ瀺ãè¿œå ããŸãã
Include etc/apache22/ Includes/*.conf NameVirtualHost *
次ã«ãIncludesãã©ã«ããŒã§ãå°æ¥ã®ãµã€ãã®ååã§ãã¡ã€ã«ãäœæããŸãã
# cd /usr/local/etc/apache22/Includes # touch gallery.ru.conf # touch museum.ru.conf
ããšã¯ãæ°ããäœæãããã¡ã€ã«ã«æ§æèšå®ãè¿œå ããã ãã§ãã gallery.ru.confãã¡ã€ã«ã®ã¿ããªã¹ãããŸãã
<VirtualHost *> ServerName gallery.ru ServerAlias www.gallery.ru ServerAdmin test@test.ru DocumentRoot /home/valera/djcode/gallery <Location "/"> SetHandler python-program PythonHandler django.core.handlers.modpython SetEnv DJANGO_SETTINGS_MODULE gallery.settings PythonDebug On PythonPath "['/home/valera/djcode'] + sys.path" </Location> <Location "/media/"> SetHandler None </Location> </VirtualHost> <Directory /home/valera/djcode/gallery> Order allow,deny Allow from 127.0. </Directory>
museum.ru.confãã¡ã€ã«ããã³ãµã€ãã®ãã¹ãŠã®åŸç¶ã®æ§æã¯ãåãæ¹æ³ã§å ¥åãããŸãã museum.ruãããžã§ã¯ãã§ã¯ãç»åã䜿çšããŠããŸããããã®ããã次ã®è¡ã¯ãã®æ§æã«å«ãŸããŠããŸããã
<Location "/media/"> SetHandler None </Location>
ããã ãã§ãã ç§ãæãåºãããå¯äžã®ããšã¯ãWebãµãŒããŒãç»åãã¡ã€ã«ãjsã¹ã¯ãªãããªã©ãå«ããã£ã¬ã¯ããªãžã®æžã蟌ã¿ã¢ã¯ã»ã¹æš©ãæã£ãŠããå¿ èŠããããšããããšã§ãïŒç§ã®å Žåãããã¯ã¡ãã£ã¢ãã©ã«ãã§ãïŒã ãããè¡ãã«ã¯ãã¡ãã£ã¢ãã©ã«ããŒãå«ããã£ã¬ã¯ããªã§ã次ã®æé ã«åŸããŸãã
# chgrp www media # chmod g+w media
ãµãŒããŒãåèµ·åããŸãã
# /usr/local/etc/rc.d/apache22 restart
ãã©ãŠã¶ã®è¡ã«ãµã€ãã®ååãå ¥åãïŒç§ã®å Žåã¯gallery.ruãŸãã¯museum.ruïŒãç¡é§ã«ãªã£ãŠããªãæéã楜ããã§ãã ããïŒ
MOD_WSGI
mod_pythonã®ä»£æ¿ãšããŠäœçœ®ä»ããããŠããŸãã ã¢ãžã¥ãŒã«ã®äž»ãªå©ç¹ã¯ãmod_pythonãšæ¯èŒããŠã¡ã¢ãªæ¶è²»éãå°ãªããããã©ãŒãã³ã¹ãé«ãããšãšãããŒã¢ã³ã¢ãŒãã§åäœããèœåã§ãã
ã§ã¯ãããå°ãç°¡åã«ããŸãããã ç¹å®ã®å Žåã«ãããè¡ãçç±ã¯èª¬æããŸãããïŒãã¹ãŠã®çãã¯åã®ã¢ãžã¥ãŒã«ã®èª¬æã§èŠã€ããããšãã§ããŸãïŒãåã«ã¢ã¯ã·ã§ã³ã®é åºãšå¿ èŠãªã³ãã³ãã瀺ããŸãã
ããŒãããã¢ãžã¥ãŒã«ãã€ã³ã¹ããŒã«ããŸãã
# cd /usr/ports/www/mod_wsgi3 # make install clean
httpd.confãéããŠç·šéããŸãã
# ee /usr/local/etc/apache22/httpd.conf
ãã®ãã¡ã€ã«ã«æ¬¡ã®è¡ããããã©ããã確èªããŸãã
LoadModule wsgi_module libexec/apache22/mod_wsgi.so
ïŒmod_wsgiã¢ãžã¥ãŒã«ãããŒãããŸãããã®è¡ã¯ãã¢ãžã¥ãŒã«ãããŒãããã€ã³ã¹ããŒã«ãããšãã«èªåçã«è¡šç€ºãããŸããïŒUser www Group www
ïŒéç¹æš©ãŠãŒã¶ãŒã«ä»£ãã£ãŠãµãŒããŒãèµ·åããïŒServerName localhost
ïŒãŠã§ããµã€ãåïŒ
ãã®ãããhttpd.confãã¡ã€ã«ã®æåŸã«ã次ã®æ瀺ãè¿œå ããŸãã
Include etc/apache22/ Includes/*.conf NameVirtualHost *
/ etc / hostsãã¡ã€ã«ã®ãšã³ããªã¯ãåã®ã¢ãžã¥ãŒã«ãšåæ§ã«1察1ã§ãã ã€ãŸããç§ã®å ŽåïŒ
127.0.0.1 gallery.ru museum.ru
次ã«ãIncludesãã©ã«ããŒã§ãå°æ¥ã®ãµã€ãã®ååã§ãã¡ã€ã«ãäœæããŸãã
# cd /usr/local/etc/apache22/Includes # touch gallery.ru.conf # touch museum.ru.conf
次ã«ãæ°ããäœæãããã¡ã€ã«ã«æ§æèšå®ãè¿œå ããŸãã gallery.ru.confãã¡ã€ã«ã®ã¿ããªã¹ãããŸãã
<VirtualHost *> ServerName gallery.ru ServerAlias www.gallery.ru ServerAdmin test@test.ru WSGIScriptAlias / /home/valera/djcode/gallery/mod.wsgi Alias /media/ /home/valera/djcode/gallery/media/ </VirtualHost> <Directory /home/valera/djcode/gallery> Order allow,deny Allow from 127.0. </Directory>
museum.ru.confãã¡ã€ã«ããã³ãµã€ãã®ãã¹ãŠã®åŸç¶ã®æ§æã¯ãåãæ¹æ³ã§å ¥åãããŸãã museum.ruãããžã§ã¯ãã§ã¯ãç»åã䜿çšããŠããŸããããã®ããã次ã®è¡ã¯ãã®æ§æã«å«ãŸããŠããŸããã
Alias /media/ /home/valera/djcode/gallery/media/
ãªã¹ãã«èšèŒãããŠããmod.wsgiãã¡ã€ã«ãäœæããã ãã§ãã
# cd /home/valera/djcode/gallery # touch mod.wsgi
ãã®å 容ã¯æ¬¡ã®ãšããã§ãã
import os, sys sys.path.append('/home/valera/djcode') os.environ['DJANGO_SETTINGS_MODULE'] = 'gallery.settings' import django.core.handlers.wsgi application = django.core.handlers.wsgi.WSGIHandler()
ã¡ãã£ã¢ãã£ã¬ã¯ããªãæžã蟌ã¿å¯èœã«ããŸãã
# chgrp www media # chmod g+w media
ãµãŒããŒãåèµ·åããŸãã
# /usr/local/etc/rc.d/apache22 restart
ãã©ãŠã¶ã®è¡ã«ãµã€ãã®ååãå ¥åãïŒç§ã®å Žåã¯gallery.ruãšmuseum.ruïŒãåã³åã³ãŸãïŒ
ã©ã¹ãã¯ã³
ãã®çµæã1ã€ã®ãã©ã«ããŒã«ãµã€ãã管çããæ§æãã¡ã€ã«ã®æãååŸããŸãã ããã«ããã¹ãŠã®æ§æã¯ååã§åå²ãããåæ§æã«ã¯å¹³å30è¡ä»¥äžã®ã³ãŒããå«ãŸããŸãã ã¢ããªã·ãã¯æ§æãšæ¯èŒããŠããã¹ãŠã®èšå®ã1ã€ã®ãã¡ã€ã«ã«éäžããŠããå Žåããã®ã¢ãããŒãã«ããããµã€ãã§ã®ãã©ãã«ã·ã¥ãŒãã£ã³ã°ãç°¡çŽ åã§ããŸãã
ç°ãªãã¢ãžã¥ãŒã«ãä»ããŠãµãŒããŒãšå¯Ÿè©±ããããã«ç°ãªããµã€ããå¿ èŠãªå Žåãå¿ èŠãªäžèšã®æ¹æ³ã§åæ§æãæ§æã§ããŸãã äž»ãªããšã¯ãäž¡æ¹ã®ã¢ãžã¥ãŒã«ã®ããŒããhttpd.confãã¡ã€ã«ã«ååšããããšã確èªããããšã§ãã
LoadModule python_module libexec/apache22/mod_python.so LoadModule wsgi_module libexec/apache22/mod_wsgi.so
ç§ã®ããã«ããã¹ãŠã®ãããžã§ã¯ãã1ã€ã®ãã£ã¬ã¯ããªã«ä¿åããŠãããæ°ããæ§æãäœæããã«ã¯ã次ã®æé ã§ååã§ãã äœæããªããã°ãªããªããã®ãšåæ§ã®æ§æãèŠã€ããŸãã ãã¡ã€ã«åãå€æŽããªããã³ããŒããŠãã ããã ãããŠããã®äžã®å€ããµã€ãã®ååããã¹ãŠæ°ãããµã€ãã®ååã«çœ®ãæããŸãã ããã¯ïŒ
# cp old_site.ru.conf new_site.ru.conf # sed âi âe 's/old_site/new_site/g' new_site.ru.conf
ãã®çµæãæ°ãããµã€ããWebãµãŒããŒæ§æã«è¿œå ããã«ã¯ãããŒããŒãã§äžèšã®2ã€ã®ã³ãã³ããå ¥åããŠãµãŒããŒãåèµ·åããã®ãšåããããã®æéãããããŸãïŒmod_wsgiã¢ãžã¥ãŒã«ã䜿çšããå Žåãmod.wsgiãã¡ã€ã«ã®ã³ããŒã¯è¿œå ãããŸãïŒã
ããã§çµäºããããã§ãã è¯ãäžæ¥ãïŒ
ãã®èšäºã®æèã®æµãã«åœ±é¿ãäžããæ¬ïŒ