以äžã§ã¯ããã¹ãã£ã³ã°ã®éžæããWebãµãŒããŒã®ãããã€ãŸã§ãæŠéã¢ãŒãã§Djangoã«ãµã€ãããããã€ããæ¹æ³ã®1ã€ã«ã€ããŠèª¬æããŸãã ãããã£ãŠããã®èšäºã¯ãDjangoã«åºã¥ããéçºããã¹ã¿ãŒãããããµãŒããŒã®å±éã®çµéšããªã人ã«ã¯åœ¹ç«ã€ãããããŸããã ç§ã®æ¹æ³ã¯æ°å€ããããŸãããéåžžã«ã·ã³ãã«ã§ãæäœãå¹ççã§ãä¿å®ã容æã§ãã VPSãã¹ãã£ã³ã°ãUbuntu 10.04ãnginxãgunicornã䜿çšããŸãã
ç®æ¬¡
- ç®æ¬¡
- ãããžã§ã¯ãæ§é
- ãã¹ãã£ã³ã°
- UbuntuãµãŒããŒ
- ãããžã§ã¯ãã®å±é
- Nginx WebãµãŒããŒãæ§æãã
- gunicornãšã¹ãŒããŒãã€ã¶ãŒãæ§æãã
- ãã©ãã«ã·ã¥ãŒãã£ã³ã°
- ãããã«
- 䟿å©ãªãªã³ã¯
ãããžã§ã¯ãæ§é
ããã«è°è«ããã«ã¯ãå±éãããããžã§ã¯ãã®æ§é ã«ã€ããŠè©±ãå¿ èŠããããŸãã
- myproject/ - , , ; - env/ - , virtualenv; - src/ - , IDE, , myproject ; - myproject/ - , Django-; - __init__.py - settings.py - manage.py - urls.py - myapp1/ - myapp2/ ... - static_content/ - , - ( - nginx), , - , ; - static/ - ( ); - media/ - media-, ; - docs/ - , , ; - logs/ - , , ; - pids/ - pid-.
äžèŠããœãŒã¹ã®ãã¹ãã®æ·±ããé床ã«èŠãããããããŸããã ããããç§ã®çµéšã§ã¯ããã®æ·±ãã§äœæ¥ããã³ã¹ãã¯å°ãããããæ§é åãããæ§é ã®å©ç¹ã¯éèŠã§ããããšã瀺ãããŠããŸãã
ãœãŒã¹ã¹ãã¬ãŒãžã«ã€ããŠ
ãã®èšäºã§ã¯ããããžã§ã¯ããœãŒã¹ãã¡ã€ã«ã®ä¿åã®åé¡ã«ã€ããŠã¯é瀺ããŠããŸãããéžæãç·šæãããã³ãªããžããªã¢ã¯ã»ã¹ã®èšå®ã¯èšäºã®å¥ã®ãããã¯ã§ããããã§ãã
ãã¹ãã£ã³ã°
ç§ã«ãšã£ãŠãdjangoã®æã䟿å©ãªãã¹ãã£ã³ã°ã¯VPSãã¹ãã£ã³ã°ã§ããããšããã£ãšåã«ããããŸããã ããã€ãã®VPSãã¹ãã£ã³ã°ãè©ŠããåŸãäŸ¡æ Œ/å質æ¯ã§æãåãå ¥ããããFirstVDSã«æ±ºããŸãã ã ç§ã¯æã«400ã«ãŒãã«ã®æéã䜿çšããŸã-1500 MB RAMã24000 MB HDDã ãã ããæåã¯150ã«ãŒãã«ã®é¢çšãããããŸãïŒãã®å Žåãäžéšã®ã¢ããªã±ãŒã·ã§ã³ã«ãããå°ãªããªãœãŒã¹ãæ¶è²»ããããã«æããå¿ èŠããããŸãïŒã
ãããã£ãŠãéå§ããã«ã¯ãVPSã泚æããŠæ¯æããä»®æ³åOpenVZã®çš®é¡ãéžæããå¿ èŠããããŸã-ç©çãã·ã³ã®äžå®å šãªã·ãã¥ã¬ãŒã·ã§ã³ã§ãããã¿ã¹ã¯ã«ã¯ååã§ããåããéã§ä»®æ³åãè¡ããšãmemcachedã«åœ¹ç«ã€ã¡ã¢ãªãå¢ããŸãã ã ãªãã¬ãŒãã£ã³ã°ã·ã¹ãã ãšããŠãUbuntu Server 10.04 LTSïŒãéžæããããšããå§ãããŸãã Ubuntu Server 12.04 LTSãå©çšå¯èœã§ããç§ã¯ãããããã»ã©é£ãªãåäœãããããšãã§ããŸããããæè¿ãã¹ãã£ã³ã°ã«ãã³ãã¬ãŒããçŸããŸããããããŠãã¹ãã£ã³ã°ãããã€ããŒã®ãµããŒãã¹ãã·ã£ãªã¹ãã¯ãŸã ããã«ãµãŒããŒã«ãããã€ã³ã¹ããŒã«ããããšãæšå¥šããŠããŸããã çŸåšã¯ããã¹ããµãŒããŒã§ã®ã¿äœ¿çšããŠããŸãã
代æ¿ã®UbuntuãµãŒããŒãã¹ãã£ã³ã°ãªãã¬ãŒãã£ã³ã°ã·ã¹ãã
確ãã«ãããå®å®ãããã¹ãã£ã³ã°ã·ã¹ãã ã®æ¯æè
ãããŸãïŒFreeBSDãDebianãRedHatãCentOSã ããªããŒã«ã¯é¢äžããŸããã ç§ã®çµéšã§ã¯ãDjangoã§ã®éçºã«ã¯ãããªãæ°ããããŒãžã§ã³ã®ããã±ãŒãžãšã¢ããªã±ãŒã·ã§ã³ãå¿
èŠã«ãªãããšãå€ãããšã«æ³šæããŠãã ããã ãããã®ããã±ãŒãžã¯ãå€ãã®æŸèæã«æ¯ããããŠãªã¹ãã«èšèŒãããã·ã¹ãã ã«å
¥ããŸãããã®çµæãä¿¡é Œæ§ã倱ãããŸãã Ubutnuã§ã¯ãããã±ãŒãžã®æ°ããããŒãžã§ã³ããªããžããªã§ããéãåãå
¥ããããŸãã
ã¡ãŒã«ã泚æããŠæ¯æããæžãŸãããšãSSHã¢ã¯ã»ã¹ãå¯èœã«ãªãããªãã¬ãŒãã£ã³ã°ã·ã¹ãã ã®èšå®ãéå§ã§ããŸãã
UbuntuãµãŒããŒ
ã¢ã¯ã»ã¹ãååŸãããããŸãã·ã¹ãã ãæŽæ°ããŠãããSSHã«ãŒãã¢ã¯ã»ã¹ãç¡å¹ã«ããŸãã
SSHã¯ãããç¥ãããŠããPuttyããã°ã©ã ã䜿çšããŠWindowsã«æ¥ç¶ã§ããŸãããç§ã¯ããããããããä¿®æ£-kittyã䜿çšããŸãã ãµãŒããŒã®IPã¢ãã¬ã¹ãšããŠããã¹ãã«ãã£ãŠéä¿¡ãããã¢ãã¬ã¹ãå ¥åããæ¥ç¶ããããã³ããã衚瀺ãããããŠãŒã¶ãŒããã³ãã¹ã¯ãŒããšããŠrootãå ¥åããŸãã
Linuxã«äŒŒãã·ã¹ãã ã«æ¥ç¶ããã«ã¯ãåçŽãªã³ãã³ããå ¥åããŠãã€ãã£ãã¿ãŒããã«ïŒã¿ãŒããã«ãKonsoleãªã©ïŒã䜿çšããŸãã
ssh root@1.2.3.4
1.2.3.4ã¯ãã¹ãã«ãã£ãŠéä¿¡ãããIPã¢ãã¬ã¹ã§ããããã³ããã衚瀺ããããããã¹ãã£ã³ã°ãããã€ããŒã«ãã£ãŠéä¿¡ããããã¹ã¯ãŒããå ¥åããŸãã
ãŸããã«ãŒããã¹ã¯ãŒããå€æŽããŸãã
passwd
ãªã¯ãšã¹ãã«å¿ããŠãæ°ãããã¹ã¯ãŒãã2åå ¥åããŸããçæããŠKeePassXã«ä¿åããããšããå§ãããŸããããè€éã«ããããšãheããªãã§ãã ããïŒ20æå以äžïŒãã»ãšãã©äœ¿çšããå¿ èŠã¯ãããŸããã
ã·ã¹ãã å ã®ããã±ãŒãžã®æŽæ°ïŒ
apt-get update apt-get upgrade
ãµãŒããŒããããã€ãããŠãŒã¶ãŒã«ä»£ãã£ãŠãŠãŒã¶ãŒãè¿œå ããŸãã
adduser myuser
ãã¹ã¯ãŒã以å€ã¯äœãå ¥åã§ããŸããããããè€éãªãã®ãèãåºãæ¹ãè¯ãã§ã
ä»ãããªãã¯èšå®ãç·šéããããã®ãšãã£ã¿ãå¿ èŠã§ããç§ã¯ããã奜ãïŒ
apt-get install nano
ãŠãŒã¶ãŒã«ã«ãŒãïŒsudoïŒãšããŠã³ãã³ããå®è¡ããæš©éãè¿œå ããŸãã
nano /etc/sudoers # root ALL=(ALL:ALL) ALL # myuser ALL=(ALL:ALL) ALL
次ã«ãrootãŠãŒã¶ãŒãSSHçµç±ã§ãã°ã€ã³ããæ©èœãç¡å¹ã«ããŸãïŒãªãã·ã§ã³ãã»ãã¥ãªãã£å¯ŸçïŒã
nano /etc/ssh/sshd_config # PermitRootLogin yes # PermitRootLogin no
ãã®åŸããã·ã³ãåèµ·åããŠããã¹ãŠãæ£åžžã«å®è¡ãããããšã確èªããŸãã
reboot
1ååŸãmyuserãšããŠãã°ã€ã³ã§ããŸãïŒãŸãã¯ããã°ã€ã³ãæ©èœããªãããšãäºåã«ç¢ºèªã§ããŸãïŒã
ssh myuser@1.2.3.4
次ã«ãDjangoã¢ããªã±ãŒã·ã§ã³ãšã€ã³ãã©ã¹ãã©ã¯ãã£ãæ©èœããããã«å¿ èŠãªã·ã¹ãã ããã±ãŒãžãããã€ãé 眮ããŸãã
sudo apt-get install gcc mysql-server python-mysqldb memcached mercurial python-profiler w3m python-setuptools libmysqlclient-dev git-core python-dev rabbitmq-server supervisor nginx
äœãäœãªã®ãèŠãŠã¿ãŸãããïŒ
- gcc-CãC ++ããã®ä»ã®ããŒãã®åã®ã³ã³ãã€ã©ãããã€ãã®ããã±ãŒãžããã«ãããå¿ èŠããããŸãã
- python-setuptools-easy_installã³ãã³ããã€ã³ã¹ããŒã«ããå Žåãvirtualenvãã€ã³ã¹ããŒã«ããã ãã§ããäºå®ãvirtualenvã¯ã·ã¹ãã ããã±ãŒãžã®ææ°ããŒãžã§ã³ã§ã¯ãªããããå€ãã®åä»ãªåé¡ãçºçããŸãã
- mysql-server-ååããããããMySQLãµãŒããŒã§ããããšã¯æããã§ããWebã¢ããªã±ãŒã·ã§ã³ãã¹ãäžã§ããŒã¿ããŒã¹ãµãŒããŒãäžããããããããå¿ èŠã«ãªããŸãã
- libmysqlclient-dev-ãã®ããã±ãŒãžã¯ãPythonçšã®MySQLã¢ã¯ã»ã¹ã€ã³ã¿ãŒãã§ã€ã¹ãã¢ã»ã³ãã«ããããã«å¿ èŠã§ãã
- python-dev-ããã€ãã®ããã±ãŒãžããã«ãããããã«å¿ ãå¿ èŠãªpython APIã
- ã¹ãŒããŒãã€ã¶ã¯ããã°ã©ã ã§ããããŒã¢ã³ã³ã³ãããŒã©ã§ããWebãµãŒããŒãšãå Žåã«ãã£ãŠã¯ä»ã®å€ãã®ããã°ã©ã ã飌ããªããå¿ èŠããããŸãã
- nginx-nginx WebãµãŒããŒã Igor Sysoevã«æè¬ããŸãã
- rabbitmq-server-ãªãã·ã§ã³ã®AMQPãµãŒããŒãã»ããªã䜿çšããå¿ èŠãããå Žåã«åœ¹ç«ã¡ãŸãã
- memcached-ãªãã·ã§ã³ã§ãRAMå ã®ãã£ãã·ã¥ã®æ¢ç¥ã®å®è£ ã
- git-core-ãªãã·ã§ã³ãgitããŒãžã§ã³ç®¡çã·ã¹ãã ã®ã¯ã©ã€ã¢ã³ããå¿ èŠãªããã±ãŒãžãgitãªããžããªã«ä¿åãããŠããå Žåã¯å¿ é ã§ãã
- mercurial-ãªãã·ã§ã³ãmercurialïŒhgïŒããŒãžã§ã³ç®¡çã·ã¹ãã ã®ã¯ã©ã€ã¢ã³ããå¿ èŠãªããã±ãŒãžãmercurialãªããžããªã«ä¿åãããŠããå Žåã«å¿ èŠã§ãã
ãããžã§ã¯ãå±é
ãããã€ã«ã¯ãvirtualenvããŒã«ã䜿çšããŠä»®æ³ç°å¢ã䜿çšããŸãã
åã®ç« ã§ã¯ã䟿å©ãªeasy_installãŠãŒãã£ãªãã£ãã€ã³ã¹ããŒã«ããŸãããããã䜿çšããŠãvirtualenvææ°ããŒãžã§ã³ãã€ã³ã¹ããŒã«ããŸãã
sudo easy_install virtualenv
ã泚æ ä»®æ³ç°å¢ã®pipãå¶çºçã«ç«¶åããªãããã«ãæå³çã«pipãã°ããŒãã«ã«ã€ã³ã¹ããŒã«ããŸããã§ããã
ããã§ããããžã§ã¯ãã®å±éãéå§ã§ããŸãã ãŸããããŒã ãã£ã¬ã¯ããªã®ã©ããã«é 眮ããå¿ èŠããããŸãã
/home/myuser/web/myproject
gitããŒãžã§ã³ç®¡çã·ã¹ãã ã䜿çšããŠããŸãã ãã ããSCPã«æ²¿ã£ãŠã³ããŒããã ãã§ãããå®çŸã§ããŸãã Windowsã§ã¯ã WinSCPã䜿çšã§ããŸããLinuxã§ã¯ããã¡ã€ã«ãããŒãžã£ãŒã¯ã¢ãã¬ã¹åœ¢åŒsftpããµããŒãããŸãïŒ//myuser@1.2.3.4ãããããæšæž¬ãããããã«ãèªèšŒããŒã¿ã¯SSHçµç±ã®ã¢ã¯ã»ã¹ã«äœ¿çšãããŸãã
ç§ã®ãããžã§ã¯ãã§ã¯ãä»®æ³ç°å¢ãæ§ç¯ããããã®ã«ãŒããã¡ã€ã«ã¯build_env.shã§ãã
#!/bin/bash echo $0: Creating virtual environment virtualenv --prompt="<myenv>" ./env mkdir ./logs mkdir ./pids mkdir ./db mkdir ./static_content mkdir ./static_content/media echo $0: Installing dependencies source ./env/bin/activate export PIP_REQUIRE_VIRTUALENV=true ./env/bin/pip install --requirement=./requirements.conf --log=./logs/build_pip_packages.log echo $0: Making virtual environment relocatable virtualenv --relocatable ./env echo $0: Creating virtual environment finished.
ãŸããrequirements.confãã¡ã€ã«ã«ã¯ãã¢ããªã±ãŒã·ã§ã³ãæ©èœããããã«å¿ èŠãªããã±ãŒãžãå«ãŸããŠããŸãã
django git+git://github.com/sehmaschine/django-grappelli.git#egg=django-grappelli git+git://github.com/django-mptt/django-mptt.git#egg=django-mptt git+git://github.com/krvss/django-social-auth.git#django-social-auth git+git://github.com/gabrielhurley/django-wymeditor.git#django-wymeditor git+git://github.com/jtauber/django-mailer.git#django-mailer git+git://github.com/tweepy/tweepy.git#tweepy django-celery django-debug-toolbar django-pdb python-memcached MySQL-python xlrd unidecode anyjson gunicorn pillow south fabric requests xlwt
ããã¯å¯èœãªããã±ãŒãžã®ã»ããã§ããããã€ãã®ããã±ãŒãžã«ã€ããŠè©³ãã説æããŸããããã®ãããã¯ã®éçºé¢ã«ã€ããŠã¯èª¬æããŸããã
ãã®ããããããžã§ã¯ããã©ã«ããŒ/ home / myuser / web / myprojectã§éå§ããåŸïŒ
./build_env.sh
ä»®æ³ç°å¢ã¯ããµãŒããŒã®æäœã®ããã«ã€ã³ã¹ããŒã«ãããŸãã
ããã§ãããŒã¿ããŒã¹ã®äœæã«æ³šæããå¿ èŠããããŸãã ãããžã§ã¯ãã§ã¯ãMySQLã䜿çšããŸãã MySQLã³ã³ãœãŒã«ãèµ·åããŸãã
mysql -uroot -pROOTPASSWORD
ããŒã¿ããŒã¹ãšãŠãŒã¶ãŒãäœæããå ŽæïŒ
CREATE DATABASE myproject CHARACTER SET utf8 COLLATE utf8_general_ci; CREATE USER 'myproject'@'localhost' IDENTIFIED BY 'USERPASSWORD'; GRANT ALL PRIVILEGES ON myproject.* TO 'myproject'@'localhost';
ããã§ãã¢ã¯ã»ã¹èšå®ããããžã§ã¯ãèšå®ãã¡ã€ã«ïŒsettings.pyãŸãã¯local_settings.pyïŒã«å ¥åã§ããŸãã
ããŒã¹ãã³ããããå Žåã¯ãäœããã¹ãããç¥ã£ãŠããŸãã ããã§ãªãå Žåã¯ããã®äžã«å³ãšå¿ èŠãªããŒã¿ãäœæããŸãã
cd ~/web/myproject # source env/bin/activate # python manage.py syncdb #
次ã«ãéçãã¡ã€ã«ãåéããŸãã
python manage.py collectstatic
ãã®ã¢ããªã±ãŒã·ã§ã³ã§å®è¡ããæºåãæŽããŸããã
Nginx WebãµãŒããŒãæ§æãã
Nginx WebãµãŒããŒãæ§æããã«ã¯ãmyproject.confæ§æïŒæ¥å°ŸèŸã¯.confã§ãªããã°ãªããŸããïŒã/ etc / nginx / sites-available /ãã©ã«ããŒã«é 眮ããå¿ èŠããããŸãã
nanoãä»ããŠSSHã³ã³ãœãŒã«ã§ãã¡ã€ã«ãäœæããã³ç·šéã§ããŸãã
sudo nano /etc/nginx/sites-available/myproject.conf
次ã«ã以äžã®äŸã®å 容ã貌ãä»ãïŒShift + InsertïŒãå¿ èŠã«å¿ããŠä¿®æ£ããä¿åïŒCtrl + OïŒãçµäºïŒCtrl + XïŒããŸãã
myproject.confãã¡ã€ã«ã®å 容ã®äŸïŒ
upstream myproject.ru { server localhost:12345 fail_timeout=0; } server { listen 80; server_name www.myproject.ru; rewrite ^/(.*) http://myproject.ru/$1 permanent; } server { listen 80; client_max_body_size 4G; server_name myproject.ru; access_log /home/myuser/web/myproject/logs/myproject.access.log; keepalive_timeout 5; root /home/myuser/web/myproject/static_content; location / { proxy_pass http://myproject.ru; } error_page 500 502 503 504 /500.html; location = /500.html { root /home/myuser/web/myproject/static_content/static/html; } location ~ ^/(static|media)/ { proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $http_host; proxy_redirect off; if (!-f $request_filename) { proxy_pass http://myproject.ru; break; } } }
äžè¬çãªèšèãç解ããŠã¿ãŸããããäœãäœã§ãã
ãã®äŸã§ã¯ãã¢ããã¹ããªãŒã ã¯localhostïŒ12345ãœã±ããã§ããã次ã®URLãæºãããªããã¹ãŠã®èŠæ±ãããã«è»¢éããŸãã
/ static / *-éçãµã€ããã¡ã€ã«ã
/ media / *-ã¡ãã£ã¢ãã¡ã€ã«ããµã€ãã®éçšäžã«äœæããããã¡ã€ã«ã
ãã®ãœã±ããã«ããªã¹ãã³ã°ã®ããã«èšäºã®æ¬¡ã®éšåã§gunicornãæããŸãã çè«çã«ã¯ãã¢ããã¹ããªãŒã ã®ååã¯ä»»æã«éžæãããŸãããã¢ããã¹ããªãŒã ã®ååããµã€ãã®ãã¡ã€ã³åãšç°ãªãå Žåãåé¡ã«ééããŸããïŒè©³çŽ°ã説æããDjangoãšã©ãŒã®ããã¹ãã¯èŠããŠããŸããïŒã
æ§æã®ããã«èå³æ·±ãéšåïŒ
www.myproject.ruãµããã¡ã€ã³ããmyproject.ruã«ãªãã€ã¬ã¯ãããŸããå¿ èŠã«å¿ããŠå察ã®ããšãã§ããŸãã
5XXãšã©ãŒåŠçã¯ãéçãª500.htmlãã¡ã€ã«ã®åºåã«ãã£ãŠç·šæãããŠããŸãã ãã®ãããªãã¡ã€ã«ã®ååŸã¯éåžžã«ç°¡åã§ãããµã€ãã«404ããŒãžã衚瀺ãããã©ãŠã¶ã«500.htmlãšããŠä¿åãããšã©ãŒããã¹ããç·šéããŸãã
éçãã¡ã€ã«ãèŠã€ãããªãå ŽåãèŠæ±ã¯gunicornã«éä¿¡ãããæšæºã®404ãšã©ãŒãã¹ããŒã§ããããã«ãªããŸãã
æ§æãã¡ã€ã«ãååšããå Žæã«é 眮ããããïŒã³ãã³ãcat /etc/nginx/sites-available/myproject.confã§ç¢ºèªã§ããŸãïŒãã·ã³ããªãã¯ãªã³ã¯ãé 眮ããå¿ èŠããããŸãã
sudo ln -s /etc/nginx/sites-available/myproject.conf /etc/nginx/sites-enabled/
nginxãåèµ·åããŸãã
sudo service nginx restart
gunicornãšã¹ãŒããŒãã€ã¶ãŒãæ§æãã
ãããžã§ã¯ãããããã€ãããšãã«ãgunicornããã±ãŒãžãã€ã³ã¹ããŒã«ããŸãããããã䜿çšããŠãåçHTTPå¿çïŒHTTPå¿çïŒDjangoã¢ããªã±ãŒã·ã§ã³ãçæããŸãã Gunicornèªäœã¯ãªã¯ãšã¹ããåãå ¥ããŠãããã«å¯Ÿããåçãçæã§ããŸãããgunicornãå®è¡ãç¶ããå¿ èŠããããŸããããšãã°ãã·ã¹ãã ã®åèµ·åæã«èµ·åããŸããããããã®ããã°ã©ã ã«ç¹åããã¹ãŒããŒãã€ã¶ãŒã«ä»»ããŸãã
gunicornéçºè ã¯ãæåç·ã«é 眮ããããšãæšå¥šããŠããªãããšã«æ³šæããŠãã ãããããããnginxãªã©ã®å°çšãµãŒããŒã«ãŠãŒã¶ãŒããã®ãªã¯ãšã¹ããåä¿¡ããããæ瀺ããŸãã
ãããã£ãŠã/ etc / supervisor / conf.d /ãã©ã«ããŒã§ã次ã®å 容ã®myproject.confãã¡ã€ã«ãäœæããŸãã
[program:myproject] command=/home/myuser/web/myproject/env/bin/python /home/myuser/web/myproject/src/myproject/manage.py run_gunicorn --bind=localhost:12345 --workers=3 --pid=/home/myuser/web/myproject/pids/gunicorn.pid --log-file /home/myuser/web/myproject/logs/gunicorn.log directory=/home/myuser/web/myproject/src/myproject umask=022 autostart=true autorestart=true startsecs=10 startretries=3 exitcodes=0,2 stopsignal=TERM stopwaitsecs=10 user=myuser
gunicornã®ãã©ã¡ãŒã¿ãŒã§ã¯ãçèŽçšã®åãããŒãïŒãã®äŸã§ã¯12345ïŒãæž¡ãããšã«æ³šæããŠãã ãããããã¯nginxæ§æã§ç€ºãããŠããŸãã ã¯ãŒã¯ããã»ã¹ã®æ°ã¯3ã«èšå®ãããŠããŸããã¯ãŒã¯ããŒãã«åºã¥ããŠããµã€ãã®1ã€ã«å¯ŸããŠãã®ãã©ã¡ãŒã¿ãŒã䞻芳çã«éžæããŸããããããŸã§ã®ãšãããå€ãæšå¥šããããšã¯ã§ããŸããã
æ§æãæ£ãããã©ã«ããŒã«é 眮ããããïŒcat /etc/supervisor/conf.d/myproject.confãå®è¡ããããšã§ç¢ºèªã§ããŸãïŒããã¡ã€ã«ãåèªã¿åãããããã¹ãŒããŒãã€ã¶ãŒãåèµ·åããå¿ èŠããããŸããä¿¡é Œæ§ã®ããã«2çªç®ã®ãªãã·ã§ã³ã䜿çšããŸãã
sudo supervisorctl reload
次ã®ã³ãã³ãã䜿çšããŠãèµ·åã®æåã確èªã§ããŸãã
sudo supervisorctl status
æåããå Žåãmyprojectããã»ã¹ã®ã¹ããŒã¿ã¹ã¯æ°ç§ã§å®è¡äžã«ãªããŸãã
ãã©ãã«ã·ã¥ãŒãã£ã³ã°
perlïŒèŠåïŒãã±ãŒã«ã®èšå®ã«å€±æããŸããã
æåãããã³ãã³ããå
¥åãããšãã·ã¹ãã ã¯èŠåã®çºè¡ãéå§ããŸãã
ããŒã¹ïŒ http : //askubuntu.com/questions/76013/how-do-i-add-locale-to-ubuntu-server
perl: warning: Setting locale failed. perl: warning: Please check that your locale settings:
æ£ãããã±ãŒã«ãè¿œå ããŠè§£æ±ºããŸããïŒ
locale-gen ru_RU.UTF8
ããŒã¹ïŒ http : //askubuntu.com/questions/76013/how-do-i-add-locale-to-ubuntu-server
sudoïŒsetuidã«ãŒãã§ããå¿
èŠããããŸã
æ°ãããŠãŒã¶ãŒã®äžããsudoãåããŠäœ¿çšãããšãããšã©ãŒãçºçããå¯èœæ§ããããŸãã
ããšãã°æ¬¡ã®ããã«è§£æ±ºããŸããïŒ
sudo: must be setuid root
ããšãã°æ¬¡ã®ããã«è§£æ±ºããŸããïŒ
chmod 4755 /usr/bin/sudo
EïŒåé¡ãä¿®æ£ã§ããŸãããå£ããããã±ãŒãžãä¿æããŠããŸãã
Ubuntu 12.04ã«ããã€ãã®ããã±ãŒãžïŒããšãã°ãpython-devãŸãã¯libmysql-devïŒãã€ã³ã¹ããŒã«ãããšããšã©ãŒãçºçããå¯èœæ§ããããŸãã
亀æ
ã«
libc6-dev : Depends: libc6 (= 2.15-0ubuntu10.2) but 2.15-0ubuntu10+openvz0 is to be installed E: Unable to correct problems, you have held broken packages.
ããã解決ããã«ã¯ã/ etc / apt / preferences.d / 99ovz-libc-pinãã¡ã€ã«ãå€æŽããã ãã§ãïŒ
亀æ
libc-bin libc6
ã«
libc-bin libc6 libc6-dev libc-dev-bin
/ dev / nullãéããŸããã§ããïŒèš±å¯ãæåŠãããŸãã
ãŠãŒã¶ãŒãäœæãããšãã«ããšã©ãŒãçºçããå ŽåããããŸãã
ãã®ããã«æ±ºããïŒ
ãããã©ãã»ã©æ£ãããã¯ããããŸããããå±éºã¯èŠãŸããã§ããã
Couldn't open /dev/null: Permission denied
ãã®ããã«æ±ºããïŒ
sudo chmod 666 /dev/null
ãããã©ãã»ã©æ£ãããã¯ããããŸããããå±éºã¯èŠãŸããã§ããã
ãããã«
ãã®å±éã®è¯å®çãªåŽé¢ã«æ³šæããŠãã ããã
- VPSã«ãœãªã¥ãŒã·ã§ã³ãå±éããä»®æ³ãã·ã³ã¯ãå®è³ªçã«ç¡å¶éã®ç®¡çæ©èœãæäŸããŸãã
- ããšãã°ãApacheãmod_pythonã䜿çšããå Žåã«ãã瀺åãããããã«ãGuninornã®nginxã®ç¬ç«æ§ã ç¹ã«ããããã°çšã«éçºãµãŒããŒãåããgunicornã«çœ®ãæããã®ã¯éåžžã«ç°¡åã§ãã
sudo supervisorctl stop myproject python manage.py runserver localhost:12345 #
ããã§ãnginxã¯å€æŽã«ã€ããŠåŠç¿ããããšãªããéçºè ã®ãµãŒããŒã«ãªã¯ãšã¹ããéä¿¡ããŸãã - éçãã¡ã€ã«ã®ãã£ã¹ããªãã¥ãŒã¿ãŒãšããŠã®Nginxã¯ãæé«ã®ãããããæé«ã®1ã€ãšããŠèªèãããŠããŸãã
- virtualenvã䜿çšãããšãç°ãªããããžã§ã¯ãã®ä»®æ³ç°å¢ãç°¡åãã€èªç¶ã«åé¢ã§ããŸãã çŸåšããã£ã¹ã¯ã¹ããŒã¹ã®ãªãŒããŒãããã¯ãããã±ãŒãžããŒãžã§ã³ã®ç«¶åãããã¯ããã«å®äŸ¡ã§ãã
- ã¹ãŒããŒãã€ã¶ãŒã«ãã£ãŠå¶åŸ¡ãããgunicornã¯ã/ etc / init.d /ã®ã¹ã¯ãªããããã³ä»ã®ããã€ãã®èµ·åæ¹æ³ã«ãã£ãŠå¶åŸ¡ãããgunicornãå®è¡ããæ¹æ³ãããã¯ããã«äŸ¿å©ã§ä¿¡é Œæ§ããããŸãã
Djangoã¢ããªã±ãŒã·ã§ã³ããããã€ããããã®å€ãã®ãªãã·ã§ã³ã®1ã€ã ããsatyaã§èæ ®ãããŠããŸã;ç§ã¯å€ãã®è©Šè¡é¯èª€ãéããŠããã«åãçµã¿ãŸããã ç§ã®æšå¥šäºé ã¯ã究極ã®çå®ã§ãããšäž»åŒµããŠããŸããã ããã«ã建èšçãªæ¹å€ãåãã§åããŸãã
䟿å©ãªãªã³ã¯
- FirstVDS-å®äŸ¡ãªVPSãã¹ãã£ã³ã°ã4åã®1ãªãŒããŒã®ãªã³ã¯ãå®äŸ¡ã§ãã
- PuttyãšKittyã¯ãWindowsçšã®SSHã¯ã©ã€ã¢ã³ãã§ãã
- WinSCP -Windowsã®SCPã¯ã©ã€ã¢ã³ããFTPãµãŒããŒãäžããå¿ èŠã¯ãªããæ¢åã®SSHã¢ã«ãŠã³ãã䜿çšããã ãã§ãã
- KeePassXã¯ãã¯ãã¹ãã©ãããã©ãŒã ã®ãã¹ã¯ãŒãä¿åãŠãŒãã£ãªãã£ã§ãã
- Ubuntu LTS -Ubuntué·æãµããŒããªãªãŒã¹ããªã·ãŒã
- Ubuntu Securityã¯ãã¹ã¯ãããã®åå·ççãªèšå®ã§ããããµãŒããŒã«äœããéããããšãã§ããŸãã
- Djangoã®å°å ¥ -ãµã€ããDjangoã«å°å ¥ããä»ã®æ¹æ³ã
- virtualenv - virtualenvã䜿çšããŸãã
- Nginx -nginxã®èšå®ã«é¢ããå€ãã®èå³æ·±ãããšã
- ã¹ãŒããŒãã€ã¶ãŒ+ gunicorn -nginxãä»ããgunicornã®äœ¿çšã«ã€ããŠã