nGINX

2012-09-08 21 views
5

Django uygulama dağıtımı Django uygulamasını nGINX sunucusuna dağıtmak istiyorum. UWSGI kullanıyorum. Birçok öğreticiye baktım ama hiç işe yaramadı. Django uygulaması, bağımsız bir uygulama olarak mükemmel çalışır. Aynı uygulamayı nGINX'te çalıştırmanın en basit yolu nedir?nGINX

Burada sıkışıp kaldım ve bir çözüm istiyoruz .. :-(

benim www klasörü /usr/share/nginx/www

sitemde etkin n conf.d olduğunu ve tüm /etc/nginx/

ben taktınız vardır uWSGI ama uwsgi isimli bir klasör bulamadı herhangi bir klasör bulamadı hangi uygulamalar yüklü klasör/dosya içinde

+0

gönderebilir miyim Enjoy .. senin Django App üzerinden uwsgi isteği geçecek senin Nginx için uwsgi.ini

> uwsgi --ini uwsgi.ini 

Şimdi herhangi isteği yapılandırma dosyalarınız? – j0nes

+0

Hangi sunucu işletim sistemini kullanıyorsunuz? Size yardımcı olmak için görmemiz gereken üç önemli dosya nginx.conf, site etkin dosya ve uWSGI vassal config'idir. – aychedee

+0

Şu anda kendi sistemimde dağıtımı test ediyorum (Ubuntu 12.04 LTS) –

cevap

12

Bir dJango uygulaması oluşturduktan sonra. 1. bir dosya oluşturun

STEP Django Projesi Rehber içinde uwsgi.ini ki: Sadece şu adımları izleyin. yönetmenin yanı sıra.py

[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() 

AŞAMA 2./etc/nginx/siteleri-mevcut .conf dosyası eklemek

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; 
        } 

     } 

ADIM nginx.conf 3. isteği geçmesi altında Django uygulamanıza

Sunucu altında {} block,

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

ADIM 4. çalıştırın size :)

1

En basit yol (ve oldukça verimli) uWSGI'ye bağlı kalmanız gerekmedikçe Gunicorn'u kullanmak olacaktır. Güzel belgelere sahipler ve dağıtımı hızlı ve oldukça kolaydır.

website_gunicorn.conf.py (yer her yerde sizin gibi):

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

gelen Nginx yapılandırma (kısmi, ana dahil

umarım bu işe gibi birkaç (üretim dahil) web sitelerini ve bir şey var yapılandırma):

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; 
    } 
} 

sonra Gunicorn yükledikten sonra tabii (böyle başlamak mümkün olmalıdır - pip install gunicorn):

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

ve NGINX sokete bağlanmalı ve web sitesine sunmalıdır (statik dosyalar NGINX tarafından size bir miktar bellek tasarrufu yapacaktır).

Daha fazla ayrıntı için, bkz. deployment ve numaralı telefondaki Gunicorn belgeleri. Gunicorn yapılandırmasında daemon=False olduğunu unutmayın. Bunun nedeni, onu kontrol etmek için Supervisor kullanıyorum. Bu çizgiden kurtulmak isteyebilir veya istemeyebilirsiniz.

+0

Teşekkürler .. Ama nedenlerle uWSGI ile sopa gerekir. Bunun için herhangi bir çözüm varsa cevap verin ... :) –

+0

Üzgünüz, uWSGI kullanmadım bu yüzden yardım edemem :) – kgr

1

Dağıtımla ilgili howtolardan uzak durmaya çalışın, sizi yanlış yöne kolayca itebilirler.

burada hızlı başlangıç ​​takip edin:

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

(takip için, yani, değil & kopyalayıp yapıştırarak 'anlama';) öne basit bir yapılandırma nginx ile tüm istekleri

Başlat uWSGI'ya.

Statik dosyalar sunmak başka bir konudur ve uygulama sunucusuna bağımlı değildir, böylece resmi Django belgelerini takip edebilirsiniz.

+0

Teşekkürler Temelde ihtiyacım olan şey dJANGO ---> uWSGI --- > nGINX (nGINX Sunucusunda bir dJANGO web hizmeti barındırır) –