Nginx + Uwsgi + Virtualenv + pip + Django en Debian 7


La puesta en producción de un proyecto desarrollado en Django, a veces suele ser complicada si se es un novato, sin embargo en esta oportunidad trataré de hacerte la vida más fácil con este post, espero sepas aprovecharlo y comentar.

Comenzamos instalando pip y virtualenv para crear nuestro entorno virtual de trabajo para Django, esto lo hacemos (dependiendo de la distribución de GNU/Linux que estés usando), en mi caso uso Debian GNU/Linux.

apt-get install python-pip python-virtualenv

Una vez instalado esto creamos nuestro entorno virtual con el siguiente comando

$virtualenv --no-site-packages mysite

Con esto se creara nuestro entorno virtual, con ello listo, procedemos a a activarlo con el comando
$cd mysite
$source bin/activate

Listo, vamos a instalar Django y las dependencias de nuestro proyecto.
$pip install Django==1.6.5

Creamos el proyecto con el comando de costumbre $django-admin.py startproject myproject

Ahora procederemos a instalar nuestro Nginx, la versión para este post es la 1.7 y de manera simple pueden descargarse un .deb desde este enlace NGINX

Ejecutan el .deb tal cual y con ello queda instalado el nginx, procedemos a configurarlo para que acepte nuestra aplicación hecha con Django, lo primero que debemos hacer es crear un archivo en /etc/nginx/conf.d que contendrá todo la información de nuestra app
server {
listen 9000;
server_name localhost;
access_log /var/log/myproject/myproject_access_log;
error_log /var/log/myproject/myproject_error_log;
root /home/usuario/dev/mysite/myproject;

location /static {
alias /home/usuario/dev/mysite/myproject/static;
}
location / {
uwsgi_pass unix:/tmp/uwsgi_myproject.sock;
include uwsgi_params;
}
}

Explicamos un poco, le estamos diciendo a nginx que escuche en el puerto 9000, configurando el access_log y error_log en una carpeta que debemos crear en la ruta /var/log/myproject, el root de nuestra app estará en /home/usuario/dev/mysite/myproject al igual que los archivos estáticos, luego simplemente le damos la location del uwsgi_pass e incluimos el uwsgi_params.

Ahora vamos a configurar el uwsgi, aún no lo hemos instalado, lo que debemos hacer es
$pip install uwsgi

Seguidamente debemos crear un archivo con la siguiente información
[uwsgi]
chdir=/home/usuario/dev/mysite/myproject
module=myproject.wsgi:application
socket=/tmp/uwsgi_myproject.sock # Debe ser la misma del archivo de configuración de Nginx
master=True
pidfile=/tmp/myproject.pid
vacuum=True
max-requests=5000
daemonize=/tmp/myproject.log

Ahora simplemente toca reiniciar el nginx /etc/init.d/nginx restart y reiniciamos el uwsgi ../bin/uwsgi --ini uwsgi.ini

Con esto ya tendrás tu sitio arriba.

Captura de pantalla - 220614 - 22:31:16¿Simple no?, cualquier duda comenta…

Cada vez que hagas un cambio debes reiniciar el uwsgi con el comando arriba descrito, buenas noches y happy coding :)

About these ads

2 thoughts on “Nginx + Uwsgi + Virtualenv + pip + Django en Debian 7

    • El archivo se creará en la ruta del proyecto, por ejemplo myproject/uwsgi.ini.

      Yo lo creo con ese nombre uwsgi.ini para tener una referencia, puedes colocarle el que desees siempre y cuando este con la extensión .ini, saludos y gracias por comentar

Deja un comentario

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s