2012-05-04 5 views
23

저는 장고 프로젝트를 전개하려고합니다. 나는 많은 튜토리얼을 시도했지만 운이 없었다. 새롭고 깨끗한 우분투 11.10을 사용합니다. 나는 Django + uWSGI via NGINX by Ubuntu 11.10

apt-get install nginx 
apt-get install uwsgi 
service nginx start 

내가 폴더 /deploy/project1을 만들어 거기 manage.py 및 기타 파일을 넣었습니다

을 수행했습니다.

/deploy/project1/project1/wsgi.py는 현재 포함되어 내 :

import os 

os.environ.setdefault("DJANGO_SETTINGS_MODULE", "project1.settings") 

from django.core.wsgi import get_wsgi_application 
application = get_wsgi_application() 

그래서, 어떻게 제대로 domain.com 내 장고 응용 프로그램을 배포하는 말해 수 있을까?

는 또한 PIP를 통해 장고를 설치 한 및 easy_install을

나는 /etc/nginx/sites-enabled/default에 무엇을 추가해야합니다.

답변

36

당신이 모든 요구 사항을 설치했고 당신이 aptitude 패키지를 사용한다고 가정하면 wsgi.py는 필요하지 않습니다. 모든 구성은 uwsgi ini/xml/yaml 파일에 있습니다. (원하는 형식을 취하십시오). 여기

는 Nginx에 대한 example.com 파일에 대한 최소한의 예입니다 (을/etc/nginx를/사이트-가능/examplecom 우분투 11.10에 대한)

server { 
    listen  80; 
    server_name example.com; 
    access_log /var/log/nginx/projectname.log; 
    location /media { 
     alias /vagrant/test/projectname/media/; 
    } 
    location /static { 
     alias /vagrant/test/projectname/static/; 
    } 
    location/{ 
     uwsgi_pass unix:///run/uwsgi/projectname/socket; 
     include uwsgi_params; 
    } 
} 

가을/etc/nginx를/사이트 사용

에 대한 심볼릭 링크를 만듭니다
sudo ln -s /etc/nginx/sites-available/examplecom /etc/nginx/sites-enabled/examplecom 

또는 당신은 Nginx와 함께 완료

sudo /usr/sbin/nxensite examplecom 

.

/etc/uwsgi/apps-available로 이동하여 자세한 내용

sudo ln -s /etc/uwsgi/apps-available/projectname.ini /etc/uwsgi/apps-enabled/projectname.ini 

을 /etc/uwsgi/apps-enabled/projectname.ini 당신의 INI 당신의 INI 파일

sudo vim /etc/uwsgi/apps-available/projectname.ini 

[uwsgi] 
virtualenv=/home/vagrant/.virtualenvs/projectenv 
thread=3 
master=1 
env = DJANGO_SETTINGS_MODULE=projectname.settings 
module = django.core.handlers.wsgi:WSGIHandler() 
chdir = /path/to/my/django/project 
socket = /run/uwsgi/projectname/socket 
logto = /var/log/uwsgi/projectname.log 

포인트를 만들 중 하나를 참조 시스템의 파일 :

/etc/uwsgi/apps-available/README 
/etc/uwsgi/apps-enabled/README 
/usr/share/doc/uwsgi/README.Debian.gz 
/etc/default/uwsgi 

완료되었습니다. 이제 nginx를 다시 시작할 수 있습니다. & uwsgi

sudo service nginx restart 
sudo service uwsgi restart 

건배!

+0

위대한 답변에 감사드립니다. 일부 우분투 특정 항목 (nxensite,/etc/uwsgi/apps- * 용 README)을 사용하여 편집을 추가했습니다. – spazm

+0

왜 사용합니까 : uwsgi_pass unix : /// 3 개의 슬래시가 있습니까? 3 개 또는 1 개의 선행 슬래시를 사용하는 다른가요 ?? – cebor

+0

차이점이 없습니다. 1 또는 3 개의 선행 슬래시가 유닉스 소켓의 전체 경로를 나타냅니다. – ScotchAndSoda

9

데비안의, 우분투와 그 유도체 'uwsgi 패키지는 파이썬 플러그인의 설치를 필요로하지 않는다는 것을 잊지 마세요 - uWSGI 파이썬 만 사용 필요하지 않기 때문에, uwsgi-plugin-python을 (루아, 얼랑 및 다른 언어를위한 플러그인이있다). 그러나 Django는 Python 플러그인이 필요합니다.설치한다 :

sudo apt install uwsgi-plugin-python 

을 PIP의 설치는 달리, 당신은 명시 적으로 이런 식으로 plugins = python 라인 (파이썬을 사용하는 경우)를 추가하여 응용 프로그램의 설정에 사용 uwsgi의 플러그인을 언급한다 :

[uwsgi] 
plugins = python 
uwsgi-socket = /var/sockets/django.sock 
chmod-socket = 660 
chdir = /home/v/django 
module = project.wsgi 

않는 한 이 작업을 수행하면 파이썬 특정 옵션을 사용할 수 없습니다. 데비안/우분투의 uWSGI는 그것에 대해 조용하게 될 것입니다!

+2

'plugin = python'이라고 생각합니다. 얼마나 많은 곳에서 이것을 가져 오는 것을 게을리하는 것을 믿지 않을 것입니다. 파이썬 응용 프로그램을 다른 위치에서 호스팅되는 다른 서버 (100 % 작동하는 서버 1 대)에서 마이 그 레이션하는 중이었고, 분명히이 연령대와 몇 년 전만해도 완전히 잊어 버렸습니다. uwsgi python app ini 파일에 대한 정보를 찾을 때, 대부분의 곳에서 "plugin"라인을 모두 삭제해야한다고 말하면서, uwsgi-plugin-python이 시스템에 설치되어 있는지 확인하지 않아도됩니다. – seaders

+0

'man uwsgi'에서 : --plugins - load uWSGI plugins; --plugin - load uWSGI plugins'이므로이 두 매개 변수는 실제로 동의어입니다. – TranslucentCloud