2012-09-08 5 views
5

nGINX 서버에 장고 애플리케이션을 배포하고 싶습니다. 나는 uWSGI를 사용하고 있습니다. 나는 많은 자습서에서 찾아 보았지만 아무도 효과가 없었다. Django 응용 프로그램은 독립 실행 형 응용 프로그램으로 완벽하게 실행됩니다. nGINX에서 동일한 앱을 실행하는 가장 간단한 방법은 무엇입니까 ??nGINX에서 장고 앱 배포

내가 여기에 붙어과 솔루션을 원하는에 .. :-(

내 www가 폴더 /usr/share/nginx/www

내 사이트 활성화 N conf.d이며 모든 /etc/nginx/

에 내가 설치 않았다 있습니다 uWSGI하지만 응용 프로그램이 설치된 uwsgi라는 폴더가 없습니다. 폴더/파일에

+0

을 게시 할 수 즐기 .. 장고 앱을 통해 uwsgi에 요청을 전달합니다 귀하의 nginx에 uwsgi.ini

> uwsgi --ini uwsgi.ini 

이제 모든 요청 구성 파일? – j0nes

+0

어떤 서버 OS를 사용하고 있습니까? nginx.conf, 사이트 사용 가능 파일 및 uWSGI 가사 구성을 돕기 위해 우리가 알아야 할 세 가지 중요한 파일이 있습니다. – aychedee

+0

현재 내 시스템 (Ubuntu 12.04 LTS)에서 배포를 테스트 중입니다 –

답변

12

일단 django 응용 프로그램을 만들었 으면. 다음 단계를 따르십시오 :

단계 1 Django 프로젝트 디렉토리에 uwsgi.ini라고하는 파일을 만듭니다. 즉 관리하는 것.평

[uwsgi] 
# set the http port 
http = :<port_no> 

# change to django project directory 
chdir = <project directory> 

# add /var/www to the pythonpath, in this way we can use the project.app format 
pythonpath = /var/www 

# set the project settings name 
env = DJANGO_SETTINGS_MODULE=<project_name>.settings 

# load django 
module = django.core.handlers.wsgi:WSGIHandler() 

STEP 2.을/etc/nginx를/사이트 이용 가능한이의 .conf 파일을 추가

server { 
listen 84; 
server_name example.com; 
access_log /var/log/nginx/sample_project.access.log; 
error_log /var/log/nginx/sample_project.error.log; 

# https://docs.djangoproject.com/en/dev/howto/static-files/#serving-static-files-in-production 
location /static/ { # STATIC_URL 
    alias /home/www/myhostname.com/static/; # STATIC_ROOT 
    expires 30d; 
        } 

     } 

STEP nginx.conf 3. 요청을 전달할에서 귀하의 장고 응용 프로그램에

서버 {} 블록 아래에

location /yourapp { 
      include uwsgi_params; 
      uwsgi_pass <your app address, eg.localhost>:<portno>; 
        } 

STEP 4. 실행하면 :

1

가장 간단한 방법은 당신이 uWSGI에 집착 할 필요가 없다면 Gunicorn을 사용할 것입니다. 훌륭한 문서가 있으며 배포가 쉽고 빠릅니다.

website_gunicorn.conf.py (장소 어디에서든지 당신이 좋아하는) :

import multiprocessing 
daemon = False 
bind = "unix:/tmp/gunicorn.sock" 
workers = multiprocessing.cpu_count() * 2 + 1 
timeout = 60 

해당 Nginx에의 설정 (부분, 메인에 포함

나는이 작품과 같은 몇 가지 (제작 포함) 웹 사이트와 뭔가를 설정) :

upstream gunicorn { 
    server unix:/tmp/gunicorn.sock fail_timeout=0; 
} 

server { 
    listen 80; 
    server_name example.com; 
    access_log /var/log/access.log combined; 
    error_log /var/log/error.log error; 

    keepalive_timeout 5; 

    # path for static files 
    root /path/to/your/static/files; 

    location @django { 
     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
     proxy_set_header Host $http_host; 
     proxy_ignore_client_abort off; 
     proxy_buffering off; 
     proxy_redirect off; 
     proxy_pass http://gunicorn; 
     proxy_read_timeout 60; 
    }   

    location/{ 
     try_files $uri @django; 
    } 
} 

는 그런 다음 Gunicorn를 설치 한 후 물론 (이 같은 시작할 수 있어야 - pip install gunicorn 일) :

gunicorn_django -c /path/to/website_gunicorn.conf.py 

및 NGINX는 소켓에 연결하여 웹 사이트를 제공해야합니다 (정적 파일은 NGINX에서 메모리를 절약하여 직접 제공됩니다).

자세한 내용은 Gunicorn 문서 deploymentconfiguration을 참조하십시오. Gunicorn 구성에 daemon=False이 있습니다. 이는 내가 제어하기 위해 Supervisor을 사용하기 때문입니다. 당신은 그 라인을 없앨 수도 있고 싶지 않을 수도 있습니다.

+0

고마워.하지만 우기 지키는 이유가있어. 당신이에 대한 모든 솔루션이있는 경우 응답 마십시오 ... :) –

+0

죄송합니다, 이 장고 내가 기본적으로해야 할 것입니다 .. :) – kgr

1

배포판 관련 하우투에서 벗어나려고하면 쉽게 잘못된 방향으로 밀어 낼 수 있습니다.

여기에 빠른 시작을 따르

http://projects.unbit.it/uwsgi/wiki/Quickstart

은 (추적을 위해, 내 말은,하지 & 복사하여 붙여 넣기를 '이해';) 앞으로 간단한 구성의 nginx와 모든 요청을

시작 uWSGI.

정적 파일 서비스는 또 다른 문제이며 응용 프로그램 서버에 종속적이지 않으므로 공식 Django 문서를 따라갈 수 있습니다.

+0

감사합니다 도움이되지 수 있도록 uWSGI을 사용하지 않은 ---> uWSGI --- > nGINX (nGINX Server에서 dJANGO 웹 서비스 호스팅) –