2012-09-08 14 views
5

Deseo implementar la aplicación Django en el servidor nGINX. Estoy usando uWSGI. Levanté la vista en muchos tutoriales pero ninguno funcionó. La aplicación Django funciona perfectamente como una aplicación independiente. ¿Cuál es la forma más sencilla de ejecutar la misma aplicación en nGINX?Implementación de la aplicación Django en nGINX

estoy atascado aquí y quiero una solución .. :-(

mi carpeta www está en /usr/share/nginx/www

mi n conf.d sitio habilitado y todos están en /etc/nginx/

me instalo uWSGI pero no pudo encontrar ninguna carpeta llamada uwsgi que tenga carpeta/archivo instalada en ella

+0

Se puede publicar tus archivos de configuración? – j0nes

+0

¿Qué SO del servidor estás usando? Los tres archivos importantes que necesitaremos ver para ayudarlo son el nginx.conf, el archivo habilitado para el sitio y la configuración de vasallo de uWSGI. – aychedee

+0

Actualmente estoy probando la implementación en mi propio sistema (Ubuntu 12.04 LTS) –

Respuesta

12

Una vez que haya creado una aplicación dJango. Simplemente siga estos pasos:

PASO 1. Cree un archivo que diga uwsgi.ini en su Directorio de proyectos Django. es decir, además de administrar.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() 

PASO 2. Bajo/etc/nginx/sites-available añadir .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; 
        } 

     } 

PASO 3. En nginx.conf, pasar la solicitud a su aplicación Django

Debajo del servidor {} bloque,

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

PASO 4. Ejecutar el uwsgi.ini

> uwsgi --ini uwsgi.ini 

Ahora, cualquier solicitud a su Nginx remitirá la solicitud a su aplicación a través de Django uwsgi .. Enjoy :)

1

La forma más sencilla (y bastante eficiente) en ese caso) sería usar Gunicorn a menos que necesite apegarse a uWSGI. Tienen buena documentación y es rápido y bastante fácil de implementar.

que tienen pocos sitios web (incluyendo la producción) y algo como esto funciona:

website_gunicorn.conf.py (lugar en cualquier lugar que desee hacerlo):

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

correspondiente config Nginx (parcial, se incluyen en el principal config):

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

, entonces debería ser capaz de empezar así (por supuesto después de instalar Gunicorn - pip install gunicorn):

y NGINX deben conectarse al zócalo y servir al sitio web (los archivos estáticos serán servidos directamente por NGINX, ahorrándole algo de memoria).

Para obtener más información, consulte los documentos de Gunicorn en deployment y configuration. Tenga en cuenta que tengo daemon=False en la configuración de Gunicorn. Esto se debe a que utilizo Supervisor para controlarlo. Puede o no desear deshacerse de esa línea.

+0

Gracias .. Pero tengo que seguir con uWSGI por razones. No responda si tiene alguna solución para que .. :) –

+0

Lo sentimos, no ha utilizado uWSGI por lo que no puede ayudar :) – kgr

1

Trate de mantenerse alejado de los howtos relacionados con la distribución, pueden empujarlo fácilmente en la dirección incorrecta.

Siga el inicio rápido aquí:

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

(para el seguimiento, es decir, 'comprender' no copiar & pasta;)

de inicio con una configuración simple donde nginx adelante todas las solicitudes a UWSGI.

Servir archivos estáticos es otro asunto y no depende del servidor de aplicaciones, por lo que puede seguir los documentos oficiales de Django.

+0

Gracias .. Lo que necesito es básicamente Django ---> --- uWSGI > nGINX (aloja un servicio web dJANGO en el servidor nGINX) –

Cuestiones relacionadas