翻蚳è
ãã
Django Adventã«é¢ãããã®èšäºãèªãã§ããã§ã«éããªããªãªãŒã¹ããã
Django 1.2ã®ãªãªãŒã¹ã«åãããŠãããã翻蚳ããããšã«ããŸããã ããã«ãèšäºã®ããã¹ãã
Djangoã§Webãµã€ããéçºãããšãã¯ãã³ã³ãœãŒã«ãéããŠæ¬¡ã®ããã«å
¥åããã ãã§ãã
python manage.py runserver
ãã®åçŽãªç®¡çã³ãã³ãã䜿çšãããšããµã€ãã®ç®¡çã¡ãã£ã¢ã¡ãã£ã¢ãæ£ããæ¹æ³ã§ãµããŒããããPYTHONPATHãæ£ããæ§æããããããžã§ã¯ãã®ã«ãŒããã©ã«ããŒãå«ãŸããŸãããŸããæå®ããããŒãïŒãã©ã³ã¹ã¬ãŒã¿ãŒããïŒããã©ã«ãã§ã¯ããŒã8000ââïŒã§èªåçã«åããŒããããWebãµãŒããŒãèµ·åããŸã ãšãŠãç°¡åïŒ
Webãµã€ããæŠéãµãŒããŒã«é
眮ãããšããæ¥ããšã人ã
ãéåžžã«å€±æããããšã¯é©ãããšã§ã¯ãããŸããããã®ããã»ã¹ã«ã¯éåžžã«å€ãã®ã¹ããããããããã¹ãŠãåŠç¿ããŠãã¹ãŠãæ£ããå®è¡ããããšã¯å°é£ã§ãã ãã®è€éãããã¹ãŠãDjangoã§ã®Webãµã€ãã®å±éã«ã€ããŠå€ãã®èšäºãæžãããŠãããšããäºå®ã«ã€ãªããããšã¯é©ãããšã§ã¯ãããŸããã ãããããããã®èšäºã®ã»ãšãã©ãã¹ãŠã¯ãApacheãš
mod_wsgiãŸãã¯
mod_pythonã䜿çšãããµã€ãã®ãããã€ã¡ã³ãã«çŠç¹ãåœãŠãŠããŸãã
ãã ããApacheã¯çæ³çãªãœãªã¥ãŒã·ã§ã³ã§ã¯ãªãå ŽåããããŸãã
VPSã®ã¡ã¢ãªã256 MBãããªãå Žåããã€ã³ã¹ããŒã«äžã«Apacheãæ§æããè€éããé¿ãããå ŽåããããŸãã ãŸãã¯ãApacheã奜ãã§ã¯ãªããããããŸããã ãããã®ãããã®çç±ã§ãã
FastCGIã«æ³šæãåããããšãã§ããŸãã
ãããã
å±éãéå§ããåã«ãã·ã¹ãã ã®åºç€ãã€ã³ã¹ããŒã«ãããŠããããšã確èªããå¿
èŠããããŸãã ãŸããã¢ããªã±ãŒã·ã§ã³ããããã€ãããµãŒããŒãå¿
èŠã§ãã ä»»æã®ãµãŒããŒãšãªãã¬ãŒãã£ã³ã°ã·ã¹ãã ã䜿çšã§ããŸãããç°¡åã«ããããã«Ubuntu Linuxã§ãããšä»®å®ããŸãã
ããã€ãã®ã³ã³ãã€ã©ãPythonããããŒãã¡ã€ã«ãããã³
setuptoolsãå«ãã·ã¹ãã ã®ããŒã¹ãã»ããã¢ããããŸããã
sudo apt-get install build-essential python-dev python-setuptools
ãŸãã
NginxãWebãµãŒããŒãšããŠé
眮ããŸãã ããã¯æ¬¡ã®ããã«å®è¡ã§ããŸãã
sudo apt-get install nginx
Daemontoolsã
ã€ã³ã¹ããŒã«ããå¿
èŠããããŸã-ããã¯ããµãŒãã¹ã管çããããã®ããŒã«ã®ã³ã¬ã¯ã·ã§ã³ã§ãã ãããã䜿çšããŠããµãŒããŒãšã©ãŒãŸãã¯åèµ·åã®ã€ãã³ããçºçããå Žåã§ãããµãŒãã¹ãå®è¡ããç¶ããããã«ããŸãïŒãŸãã¯å°ãªããšãå
ã®ç¶æ
ã«æ»ããŸãïŒã daemontoolsãã€ã³ã¹ããŒã«ããã«ã¯ïŒ
sudo apt-get install daemontools
æ®å¿µãªãããdaemontoolsããã±ãŒãžã§ã¯ãåèµ·åæã«èªåçã«åèµ·åããããã«å°ãäœåãªäœæ¥ãå¿
èŠã§ãã ãŸãã次ã®å
容ã§
/etc/event.d/svscanboot
ãã¡ã€ã«ãäœæããŸãã
start on runlevel 2
start on runlevel 3
start on runlevel 4
start on runlevel 5
stop on runlevel 0
stop on runlevel 1
stop on runlevel 6
respawn
exec /usr/bin/svscanboot
次ã«ã次ã®ã³ãã³ããå®è¡ããŠ
/etc/service
ãã©ã«ããŒãäœæããŸãã
sudo mkdir /etc/service
daemontools
ã次ã®ã³ãã³ããå®è¡ããŠ
daemontools
ãå®è¡ããŸãã
sudo initctl start svscanboot
ãµã€ãã®æ°ãããŠãŒã¶ãŒãäœæããŸãã
adduser mysite
ãŠãŒã¶ãŒã§sudoã³ãã³ãã䜿çšããå Žåã¯ã
/etc/sudoers
ãç·šéããå¿
èŠããã
/etc/sudoers
ã ãã®ãã¡ã€ã«ã§è¡ã®
root ALL=(ALL) ALL
ãèŠã€ããŠã以äžãè¿œå ããŸãã
mysite ALL=(ALL) ALL
ããã§ããŠãŒã¶ãŒã«åãæ¿ããããšãã§ããŸãã
su - mysite
ããã§ãã·ã¹ãã ã®åºç€ãæŽããŸããã ããŒã¿ããŒã¹ãã¡ãŒã«ãµãŒããŒãããŒãžã§ã³ç®¡çã·ã¹ãã ãmemcachedãããã³ãã®ä»ã®ããŸããŸãªãµãŒãã¹ã«ã€ããŠã¯ãå人çãªå¥œã¿ã«ãã£ãŠå€§ããç°ãªãå¯èœæ§ããããããæå³çã«è©±ããŸããã
Pythonçšã®ä»®æ³ç°å¢ã®ã»ããã¢ãã
ã·ã¹ãã ã®åºç€ã確ç«ãããã®ã§ãèå³æ·±ãããšã«éäžã§ããŸãã æåã«ãPythonçšã®ãµã³ãããã¯ã¹ãäœæããããã®ããŒã«ã§ããvirtualenvãã€ã³ã¹ããŒã«ããŸãã
virtualenvã䜿çšããŠãã¢ããªã±ãŒã·ã§ã³ã®ãµã³ãããã¯ã¹ãäœæããŸãã
sudo easy_install virtualenv
virtualdevã®ææ°ã®ã³ããŒã䜿çšããŠãããã«é²ãã§æ°ããä»®æ³ç°å¢ãã»ããã¢ããã§ããŸãã
mkdir ~/virtualenvs
virtualenv ~/virtualenvs/mysite
ããŒã ãã©ã«ããŒã«virtualenvsãã£ã¬ã¯ããªãäœæãããã®äžã«mysiteãšããä»®æ³ç°å¢ãäœæããŸããã 次ã«ãããã䜿ãå§ããŠ
pipãã€ã³ã¹ããŒã«ããPythonããã±ãŒãžãç°¡åã«ã€ã³ã¹ããŒã«ããŸãããã
source ~/virtualenvs/mysite/bin/activate
easy_install pip
ããã§ã
Flupããã±ãŒãžã
ã€ã³ã¹ããŒã«ãããŠããããšã確èªããå¿
èŠããããŸãã ããã¯ãWSGIã¢ããªã±ãŒã·ã§ã³ãFastCGIã«å€æããããã®ã¢ããã¿ãŒãå«ããWCGIã¢ããªã±ãŒã·ã§ã³ãæäœããããã®æçšãªããŒã«ã®ã»ããã§ãïŒSCGIãšAJPã®äž¡æ¹...ããããããã¯ãã®èšäºã®ç¯å²å€ã§ãïŒã Djangoã§ã¯ãrunfcgå¶åŸ¡ã³ãã³ãã䜿çšããåã«Flupãã€ã³ã¹ããŒã«ããå¿
èŠããããŸãã pipã䜿çšãããšãç°¡åã«ã€ã³ã¹ããŒã«ã§ããŸãã
pip install flup
Pythonã·ã¹ãã ãã¹ã«æ²¿ã£ãŠã€ã³ã¹ããŒã«ãããããŒã¿ããŒã¹ã¢ããã¿ãŒãã°ã©ãã£ãã¯ã©ã€ãã©ãªããŸãã¯XMLããŒãµãŒã䜿çšããå Žåã¯ãä»®æ³ç°å¢ããã¢ã¯ã»ã¹ã§ããããšã確èªããå¿
èŠããããŸãã ãããè¡ãã«ã¯ã.pthãã¡ã€ã«ãsite-packagesä»®æ³ç°å¢ã®ãã£ã¬ã¯ããªã«è¿œå ããŸãã
echo "/usr/lib/python2.6/dist-packages/" > ~/virtualenvs/mysite/lib/python2.6/site-packages/fix.pth
次ã®ã¹ãããã¯ãDjangoã³ãŒãããµãŒããŒã«è€è£œããããšã§ãïŒæããã«
git
ã¯
mercurial, svn
ãŸãã¯
rsync
眮ãæããããšãã§ããŸãïŒã
git clone github.com/myusername/mysite.git
ãããžã§ã¯ãã«
pipèŠä»¶ãã¡ã€ã«ãããå Žåãããã䜿çšã§ããŸãã
pip install -U -r mysite/requirements.txt
ãŸãã¯ã
requirements file
ããªãå Žåã¯ãäŸåé¢ä¿ãæåã§ã€ã³ã¹ããŒã«ã§ã
requirements file
ã äŸïŒ
pip install -U Django simplejson python-memcached
FastCGIãµãŒããŒã®ãªãã·ã§ã³ãéžæãã
ããïŒ ç§ãã¡ã¯ã·ã¹ãã ãã»ããã¢ããããäžã§é·ãéã®ããæ©ãã§ããŸããããFastCGIã®éšåã«ã€ããŠã¯ãŸã 話ããŠããŸããã æããŠã¯ãããŸãããç§ãã¡ã¯ä»ãããããæºåãã§ããŠããŸãã FastCGIãµãŒããŒãèµ·åãããšãã«ã©ã®ãªãã·ã§ã³ã䜿çšãããã決ããŸãããã
æåã«è¡ãéžæã¯ã䜿çšãã䞊ååæ¹æ³ã§ãã
- ã¹ã¬ããåïŒ
ãã¹ãŠã®HTTPèŠæ±ã«å¯ŸããŠ1ã€ã®ããã»ã¹ã§ã¹ããªãŒãã³ã°ãµãŒããŒãå®è¡ããŸãã ããã«ããå€ãã®ã¡ã¢ãªãç¯çŽã§ããŸããããã¹ãŠã®ã¹ã¬ããã§1ã€ã®ã°ããŒãã«ã€ã³ã¿ãŒããªã¿ãŒãã㯠ïŒGILïŒã®åé¡ãçºçããŸãã ããã¯ãCPU䜿çšçãé«ãããã«ããã©ãŒãã³ã¹ãå¶éãããå¯èœæ§ãããããšãæå³ããŸãã I / Oæäœã¯GILã®å€éšã§è¡ããããããI / Oã®è² è·ãéãå Žåã§ãGILã®åé¡ã¯çºçããŸããã ãŸããäžéšã®pythonæ¡åŒµæ©èœã¯ã¹ã¬ããã»ãŒãã«ããããšãç®çãšããŠããªãããããã®ç«¶åæ¹æ³ã§ã¯äœ¿çšã§ããŸããã
- ããªãã©ãŒã¯ïŒ
ããã»ã¹ã®ããŒã«ãçæããåå²ãµãŒããŒãå®è¡ããŸããåããã»ã¹ã«ã¯ããžã£ã³ã°ã«ãšPythonã®ç¬èªã®ã³ããŒãã¡ã¢ãªã«èªã¿èŸŒãŸããŸãã ããã¯ãããå€ãã®ã¡ã¢ãªã䜿çšãããããšãæå³ããŸãããGILãŸãã¯ã¹ã¬ããã»ãŒãã«é¢ããåè¿°ã®åé¡ã¯ãããŸããã
ã¡ã¢ãªãµã€ãºãå°ãããµãŒããŒããããããFastCGIã«èå³ããããšä»®å®ããŸãã preforkã¡ãœããã¯ããå€ãã®ã¡ã¢ãªã䜿çšãããããã¹ã¬ããåãããã¡ãœãããéžæããŸãã
ããã§ãè² è·ãããã£ãç¶æ
ã§ã®æäœæ¹æ³ããµãŒããŒã«äŒããããã€ãã®ãªãã·ã§ã³ãéžæããŸãã
- minspareïŒ
ãµãŒããŒãæºåãæŽããå°æ¥ã®ãªã¯ãšã¹ããåŸ
æ©ããããã»ã¹/ã¹ã¬ããã®æå°æ°ã¯ïŒ
- maxspareïŒ
ãµãŒããŒãæºåãä¿ã¡ãå°æ¥ã®ãªã¯ãšã¹ããåŸ
æ©ããããã»ã¹/ã¹ã¬ããã®æ倧æ°ã¯ããã€ã§ããïŒ
- maxrequestsïŒpreforkã¡ãœããã®ã¿ïŒïŒ
匷å¶çµäºããŠåèµ·åãããŸã§ã«åããã»ã¹ãåŠçãããªã¯ãšã¹ãã®æ°ã ãããåé¡ã«ãªããŸã§ã¡ã¢ãªãªãŒã¯ãé²ãããã ãã®ãªãã·ã§ã³ãèšå®ããããšããå§ãããŸãã
- maxchildrenïŒããªãã©ãŒã¯ã¡ãœããã®ã¿ïŒïŒ
ã©ã®æç¹ã§ããã€ã®åããã»ã¹ããªã¯ãšã¹ãããµããŒãã§ããŸããïŒ
ãµãŒããŒã¯265 MBã®ã¡ã¢ãªãåããå°ããªVPSã§å®è¡ããããããéåžžã«æ§ãããªèšå®ãéžæããŸãã
minspare
ã
minspare
å Žåã¯4ã
maxspare
å Žåã¯6ã
maxchildren
500ã
æåŸã«ãæåŸã®ããã€ãã®èšå®ãéžæããŸãã
- ãã¹ã
çä¿¡æ¥ç¶ããªãã¹ã³ãããã¹ãåïŒãã¹ãåïŒ
- 枯
ã©ã®ããŒãã§çä¿¡æ¥ç¶ããªãã¹ã³ããŸããïŒ
- pidfile
FastCGIãµãŒããŒãèµ·åãããšãããã»ã¹èå¥åïŒããã»ã¹IDïŒã§ãã¡ã€ã«ãäœæãããŸãã ãã®ããã»ã¹IDã¯ãã¡ã€ã³ã¹ã¬ãã/ããã»ã¹ã®pidã§ã ã ããã¯ã SIGHUPãªã©ã®OSä¿¡å·ããµããŒãããããã»ã¹ã§ãã ãã®ãªãã·ã§ã³ã¯ããã®ãã¡ã€ã«ã®å Žæã決å®ããŸãã
éžæã
runfcgi
ã
runfcgi
ã³ãã³ããå®è¡ããŠãµãŒããŒãèµ·åã§ããŸãã
python manage.py runfcgi method=threaded host=127.0.0.1 port=8080 pidfile=mysite.pid minspare=4 maxspare=30 daemonize=false
daemonize=false
ãã©ã°ãè¿œå ãããŠ
daemonize=false
ããšã«æ³šæããŠãã ããã åžžã«ã€ã³ã¹ããŒã«ããå¿
èŠããããŸãïŒäœæè
ã«ãããšããã®ãªãã·ã§ã³ãã¹ããããããšãrunfcgiã³ãã³ãã®èšç®ãééã£ãŠããŸãïŒã ãŸãããã®ã³ãã³ãã®çµæãšããŠãããžã§ã¯ããã£ã¬ã¯ããªã«
mysite.pid
ãã¡ã€ã«ãäœæããããããããŒãžã§ã³ç®¡çã·ã¹ãã ããã®ãã¡ã€ã«ãç¡èŠããããšããå§ãããŸãã
FastCGIãµãŒããŒãæ£ããå®è¡ãããŠããããšã確èªããã®ã§ãåæ¢ããŠæ¬¡ã®ã¹ãããã«é²ã¿ãŸã
daemontools
ã䜿çšããŠãã®ã³ãã³ããå®è¡ãããµãŒããŒãåžžã«ããã¯ã°ã©ãŠã³ãã§å®è¡ãç¶ããŸãã
Daemontoolsã¯FastCGIãµãŒããŒãå®è¡ããŸã
Daemontoolsã¯/ etc / serviceãã£ã¬ã¯ããªã®ãã¹ãŠã®ãµããã£ã¬ã¯ããªãæ€çŽ¢ããããããã®ãµããã£ã¬ã¯ããªã§runãšããå®è¡å¯èœãã¡ã€ã«ãæ€çŽ¢ããŸãã 圌ããã®ãããªãã¡ã€ã«ãèŠã€ããå Žåã圌ã¯ãããéå§ãã圌ãæ»ã¬ãšåèµ·åããŸãã ããã§ã¯ãmysiteãã£ã¬ã¯ããªãäœæããŸãããã
sudo mkdir /etc/service/mysite
ããã§ã¯ãfastcgiãµãŒããŒãèµ·åããå°ããªã¹ã¯ãªãããäœæããŸãããã ãæ°ã«å
¥ãã®ããã¹ããšãã£ã¿ã䜿çšããŠããã®ããã¹ãã
/etc/service/mysite/run
ã«æžã蟌ã¿
/etc/service/mysite/run
ã
#!/usr/bin/env bash
source /home/mysite/virtualenvs/mysite/bin/activate
cd /home/mysite/mysite
exec envuidgid mysite python manage.py runfcgi method=threaded host=127.0.0.1 port=8080 pidfile=mysite.pid minspare=4 maxspare=30 daemonize=false
ããã«ã¯é£ããããšã¯äœããããŸããã ãŸããæ£ããä»®æ³ç°å¢ïŒvirtualenvïŒã«ããããšã確èªããŠãããçŸåšã®ãã£ã¬ã¯ããªã
mysite
å€æŽããŠããã
runfcgi
ã³ãã³ããå®è¡ããŸãã
envuidgid mysite
ã¯ã次ã®ã³ãã³ãã
root
ã§ã¯ãªããŠãŒã¶ãŒ
mysite
ãšããŠå®è¡ãããããšã確èªããã ãã§ãã
ã¹ã¯ãªããã¯daemontoolsãèªèã§ããããã«å®è¡å¯èœã§ããå¿
èŠãããããã次ã®ã³ãã³ããå®è¡ããŠã¿ãŸãããã
sudo chmod +x /etc/service/mysite/run
svstat
ã³ãã³ãã䜿çšããŠãå®è¡ãããŠããããšã確èªã§ããŸãã
sudo svstat /etc/service/mysite/
çµæã¯æ¬¡ã®ããã«ãªããŸãã
/etc/service/mysite/: up (pid 3610) 33 seconds
ããã¯ãããã»ã¹ãèµ·åããããã»ã¹ID = 3610ãå²ãåœãŠããã33ç§éæ©èœããããšãæå³ããŸãã
svc
ã³ãã³ãã䜿çšããŠãããã»ã¹ãåæ¢ã§ããŸãã
sudo svc -d /etc/service/mysite/
ãã®åŸãsvstatãå床å®è¡ãããšã次ã®ãããªçµæãåŸãããŸãã
/etc/service/mysite/: down 4 seconds, normally up
ããã»ã¹ãåãæ»ãã«ã¯ã次ã®ããã«ããŸãã
sudo svc -u /etc/service/mysite/
svcã³ãã³ãã®å®å
šãªãªã¹ãã¯
ãªã³ã©ã€ã³ã§èŠã€ããããšãã§ã
ãŸã -ããã¯ã
daemontools
ããã«æ·±ãæãäžããå Žåã«éåžžã«åªãããœãŒã¹ã§ãã
ãµãŒããŒã§åäœããããã«Nginxãæ§æãã
ãã§ã«ãã£ããã·ã¥ã©ã€ã³ã«è¿ã¥ããŠããŸãã ç§ãã¡ãããªããã°ãªããªãããšã¯ãFastCGIãµãŒããŒãšéä¿¡ããããããå¿çãåä¿¡ãããŠãŒã¶ãŒã«éä¿¡ããããã«nginxãæ§æããããšã§ãã
Ubuntuã«ã¯äŸ¿å©ãª
/etc/nginx/fastcgi_params
ãã¡ã€ã«ã
/etc/nginx/fastcgi_params
ãŸãã æ®å¿µãªãããããã¯å®å
šã«æ£ããããã§ã¯ãããŸããã ïŒãšã³ã³ãŒãïŒ
SCRIPT_NAME
ãã©ã¡ãŒã¿ãŒããšã³ã³ãŒãããŸããããµãŒããŒãå®éã«å¿
èŠãªã®ã¯
PATH_INFO
ã§ãã 以äžã®å
容ãæ€çŽ¢ããŠçœ®ãæãããã
/etc/nginx/fastcgi_params
ãã¡ã€ã«ã«ã³ããŒãããã§ããŸãã
fastcgi_param QUERY_STRING $query_string;
fastcgi_param REQUEST_METHOD $request_method;
fastcgi_param CONTENT_TYPE $content_type;
fastcgi_param CONTENT_LENGTH $content_length;
fastcgi_param PATH_INFO $fastcgi_script_name;
fastcgi_param REQUEST_URI $request_uri;
fastcgi_param DOCUMENT_URI $document_uri;
fastcgi_param DOCUMENT_ROOT $document_root;
fastcgi_param SERVER_PROTOCOL $server_protocol;
fastcgi_param GATEWAY_INTERFACE CGI/1.1;
fastcgi_param SERVER_SOFTWARE nginx/$nginx_version;
fastcgi_param REMOTE_ADDR $remote_addr;
fastcgi_param REMOTE_PORT $remote_port;
fastcgi_param SERVER_ADDR $server_addr;
fastcgi_param SERVER_PORT $server_port;
fastcgi_param SERVER_NAME $server_name;
次ã«ããµã€ãã®å®çŸ©ãäœæããŸãã ããã¹ããšãã£ã¿ãŒã䜿çšããŠã次ã®å
容ã®ãã¡ã€ã«
/etc/nginx/sites-available/mysite
ãäœæããŸãããã
server {
listen 80;
server_name mysite.com www.mysite.com;
access_log /var/log/nginx/mysite.access.log;
location /media {
autoindex on;
index index.html;
root /home/mysite/mysite;
break;
}
location / {
include /etc/nginx/fastcgi_params;
fastcgi_pass 127.0.0.1:8080;
break;
}
}
圌ã¯ãããŒã80ïŒHTTPã®æšæºïŒããªãã¹ã³ãããšèšããŸã
mysite.com http://www.mysite.com/
mysite.com http://www.mysite.com/
ã
/home/mysite/mysite/media
ãªã¯ãšã¹ãã¯ã
/home/mysite/mysite/media
ãã£ã¬ã¯ããªã®ãã£ã¹ã¯ããçŽã¡ã«åŠçããå¿
èŠããããŸãã ãããŠæãéèŠãªããšïŒä»ã®ãã¹ãŠã®ãªã¯ãšã¹ãã¯FastCGIãä»ããŠãµãŒããŒã«éä¿¡ãããŸãã
次ã«ãã·ã³ããªãã¯ãªã³ã¯ãä»ããŠæ¥ç¶ããŸãããã
sudo ln -s /etc/nginx/sites-available/mysite /etc/nginx/sites-enabled/mysite
æåŸã«ãnginxãåèµ·åããŠãæ°ããèšå®ãæå¹ã«ããŸãã
sudo /etc/init.d/nginx restart
ãããã«
nginxã䜿çšããŠã¡ãã£ã¢ãã¡ã€ã«ãé©ç°çãªé床ã§æäŸããæå°éã®ãµãŒããŒãšãäžéå±€ãªãã§åçãªã¯ãšã¹ããæäŸããã¯ãªãŒã³ãªPython FastCGIãµãŒããŒãã»ããã¢ããããŸãã daemontoolsã䜿çšãããšãFastCGIããã»ã¹ãå®å
šã«å¶åŸ¡ã§ãããã€ã§ãåæ¢ãåèµ·åããŸãã¯èšå®ãå€æŽã§ããŸãã
æ¬åœã«èå³æ·±ãã®ã¯ãã»ãã®å°ãã®èª¿æŽã§ååã§ãããåãã¹ã¿ãã¯ã
gunicorn ã
spawning ããŸãã¯
pasteã«åºã¥ããœãªã¥ãŒã·ã§ã³ã«äœ¿çšã§ããããšã§ãã fastcgi_passã䜿çšãã代ããã«ãproxy_passã䜿çšã§ããŸãã ããã§ããããŒã¢ã³ããŒã«ã䜿çšããŠããã»ã¹ãå®è¡ããå¶åŸ¡ãç¶ããããšãã§ããŸãã ãã®èšäºã®ã»ãŒãã¹ãŠã®ã¹ãããã¯åããŸãŸã§ãã
ããã¯ãApache / mod_wsgiããé »ç¹ã«èª²ãããã¹ã¿ãã¯ã«å¯Ÿããéåžžã«å®è¡å¯èœãªä»£æ¿æ段ã§ããããã®èšäºãèªãã åŸãããå€ãã®äººã
ããããèªåã®Webãµã€ããdjangoã«ãããã€ããæ¹æ³ãšèŠãªãããšãé¡ã£ãŠããŸã
èšäºã®èè
ã«ã€ããŠ
Eric Florenzanoã¯ãœãããŠã§ã¢éçºè
ã§ãã 圌ã¯çŸåšãµã³ãã©ã³ã·ã¹ã³ã«äœãã§ããŠãMochi Mediaã§åããŠããŸãã çŸæç¹ã§ã¯ã圌ã¯æ°å¹Žã«ããã£ãŠDjangoãšPinaxã®ã³ãã¥ããã£ã«åå ããŠããŸãã 圌ã¯çŸåšãDjango Doseã®å
±åèšç«è
ã§ãããDjangoã«é¢é£ãããã¹ãŠã®ããšã«ã€ããŠããããã£ã¹ãããŠããŸãã æã
ã圌ã¯pythonãéãªã¬ãŒã·ã§ãã«ããŒã¿ããŒã¹ããã®ä»ã®èå³æ·±ããããã¯ã«é¢ããããã°ã
www.eflorenzano.comã§
管çããŠããŸãã