Pasar a producción - GonzaloAfa/centrointernetv2 GitHub Wiki
Antes de comenzar con la instalación de nginx, es necesario tener instalado apache:
sudo apt-get install apache2
Debemos crear el archivo de configuración para nuestro proyecto, recuerda que si el puerto 80 está siendo usado por Apache2, por alguna otra aplicación o por el mismo Nginx por otra configuración debes liberar primero el puerto, en caso de ser Apache2 debes editar el archivo /etc/apache2/ports.conf y cambiar el puerto 80 por uno diferente, luego reiniciar el servicio Apache2 así:
service apache2 restart
Luego instala nginx en caso de que no lo hayas realizado antes
sudo apt-get install nginx
Después de esto debes crear el archivo de configuración en la carpeta /etc/nginx/sites-avaliable, el nombre del archivo lo eliges tú, yo elegí como nombre archivo.conf . El contenido del archivo debe ser el siguiente:
archivo.conf;
server {
listen 80;
# puerto por el que escucha la aplicación
server_name <midominio.co>; # nombre o ip del servidor
charset utf-8;
# tamaño maximo de subida
client_max_body_size <75M>;
# Ruta de la carpeta media
location /media {
<alias> </var/www/proyecto/media>; # reemplace por su ruta a media
}
# Ruta de la carpeta static
location /static { <alias> </var/www/proyecto/static>; # reemplace por su ruta a media }
# Configuración de las peticiones que no son resueltas con las
# reglas anteriores. Estas son reenviadas al servidor django
location / { uwsgi_pass 127.0.0.1:<8001>; # 127.0.0.1:PUERTO_AUXILIAR
include uwsgi_params;
}
}
Cabe resaltar que el puerto auxiliar seleccionado es el 8001, este dato es importante puesto que debemos tenerlo en cuenta para iniciar la labor de uWSGI.
Después de esto es necesario habilitar la nueva configuración creando un enlace simbólico del archivo en la carpeta sites-avaliable de Nginx así:
cd /etc/nginx/sites-enabled
ln -s ../sites-avaliable/archivo.conf .
Finalmente reiniciamos el servidor Nginx
service nginx restart
Instalamos las siguientes librerias
sudo apt-get install gcc-4.5 python2.7-dev
Necesitamos instalar uWSGI:
pip install uwsgi
Finalmente creamos el archivo para iniciar el proceso de conexión entre Nginx y django, este archivo es un script bash al que yo llame start.sh, este debe tener el siguiente contenido:
#!/bin/bash
uwsgi --socket :8001 --wsgi-file wsgi.py -d mensajes.log
Aquí viene la parte importante, cuando django genera un proyecto él crea una carpeta de proyecto, dentro de ésta hay una carpeta con los archivos de configuración, éstos son settings.py, urls.py, init.py y wsgi.py debe hacer una copia del archivo wsgi.py a la raíz del proyecto y en éste mismo lugar poner el archivo start.sh.
Después es necesario permitir la ejecución de este archivo mediante la orden:
chmod +x start.sh
Luego podemos iniciar el proceso así:
./start.sh
Fuente: http://uwsgi-docs.readthedocs.org/en/latest/tutorials/Django_and_nginx.html