Esta guía asume que tienes una aplicación en Django que opera dentro de un entorno virtual. También se asume que usas Ubuntu u otra distro basada en Debian pero no es requisito.
- virtualenv (python2) o venv (python3)
- supervisor http://supervisord.org
- nginx http://nginx.org
La creación del certificado y tu llave no son parte de esta guía, pero, se espera que estén aquí:
/etc/ssl/mi_certificado.crt
/etc/ssl/mi_llave.key
1.- instalar supervisor y nginx
sudo apt-get update
sudo apt-get install -y nginx supervisor
2.- crea un usuario que se llame como tu app, solo servirá para correr la aplicación. al mismo tiempo, definimos el lugar donde estará toda nuestra app, aprovechamos de crear ahí mismo el virtualenv
sudo groupadd mis_apps
sudo useradd -d /opt/mi_app -g mis_apps mi_app
sudo su - mi_app
mkdir run static logs
virtualenv .venv #python3 -m venv .venv si usarás python3
3.- instalamos gunicorn
source .venv/bin/activate
pip install gunicorn
4.- pon tu aplicación en algún directorio dentro de mi_app, para este ejemplo la llamaremos servicio
, si tienes tu app en un repositorio, puedes clonarla a este directorio, de tal forma que la ruta completa hacia tu wsgi.py quede:
/opt/mi_app/servicio/mi_app/wsgi.py
/opt/mi_app/servicio/manage.py #para referencia
5.- es un execelente momento para recolectar archivos estáticos que tu app necesite. en tu settings.py configura:
STATIC_URL='/static/'
STATIC_ROOT=/opt/mi_app/static/
5.1.- y luego ejecuta
./servicio/mi_app/manage.py collectstatic
4.- luego debes salir del usuario mi_app
, poner cada archivo en este gist en su lugar y recargar
sudo service nginx restart
sudo supervisorctl reread
sudo supervisorctl update