jueves, 8 de mayo de 2014

Configurar Django con Nginx usando Uwsgi

¿ Que es Nginx ?
Es un servidor web y proxy muy ligero, una alternativa al Apache y con una facil configuracion, decidi utilizar Nginx para utilizarlo en un servidor casero con una muy pobre conexion a internet.
Paso 1:
$>sudo apt-get install python python-dev python-setuptools

Paso 2:
Instalamos un entorno virtual de python.
$>sudo easy-install pip

$>sudo pip install virtualenv

Paso3:
Instalamos el servidor Nginx
$>sudo apt-get install nginx

Paso 4:
Crear una carpeta para para hacer el entorno virtual de python
$>sudo mkdir /src/www

$>cd /src/www

$>virtualenv -system-site-packages applicacion

$>cd /src/www/aplicacion

$>source bin/activate

Paso 5:
Suponiendo que ya tenemos un proyecto con Django y Mysql instalamos uwsgi
$>pip install uwsgi

Paso 6:
Para verificar lo que tenemos instalado con pip
$>pip freeze

Paso 7:
Entramos a nuestro proyecto en Django y buscamos y editamos el archivo wsgi.py y le agregamos las siguiente lineas para realcionarlo con nuestro virtualenv.
import sys

from site import addsitedir

#ruta de el virtualenv

addsitedir(‘/src/www/aplicacion/lib/python2.7/site-packages')

#ruta de mi aplicacion Django

sys.path = ['/home/username/projects/myapp/','/home/username/projects/myapp/myapp/'] + sys.path

Paso 8:
Podemos probar nuestro proyecto Django
uwsgi --http :8000  --wsgi-file /home/username/projects/myapp/myapp/wsgi.py

Paso 9:
Editamos el archivo de default de nginx
$>cd /etc/nginx/sites-available

Paso 10:
Modificamos las siguientes lineas
location /{

   include uwsgi_params;

   uwsgi_pass 127.0.0.1:8000;

}

location /media {

   alias /home/username/projects/myapp/myapp/media

}

location /static {

   alias /home/username/projects/myapp/myapp/static

}
Nota:El archivo contiene mas lineas esas las dejamos igual, solo hay que modificar location / y agregar media y static
Paso 11:
Correr nuestra app y reiniciar Nginx
$>uwsgi --socket:8000  --wsgi-file /home/username/projects/myapp/myapp/wsgi.py -d output.log

$>sudo service nginx restart

No hay comentarios:

Publicar un comentario