Django es un framework web de Python con un gran alcance que puede ayudarle a conseguir una aplicación web robusta y de fácil mantenimiento. Django incluye un servidor de desarrollo simplificado para probar su código de forma local, pero para la puesta en marcha de sus aplicaciones en producción se requiere un servidor web mas seguro y potente.
En esta guía, vamos a mostrar como instalar y configurar algunos componentes en Ubuntu Server 14.04 para servir aplicaciones Django. Configuraremos el contenedor de aplicaciones uWSGI para interactuar con nuestras aplicaciones. También configuraremos Nginx como proxy invertido para uWSGI. que nos dará acceso a características de seguridad y rendimiento para servir nuestras aplicaciones.
Requisitos previos:
- Tener una instancia de servidor Ubuntu 14.04 fresco.
Instalamos el gestor de paquetes PIP
Instalamos virtualenv y virtualenvwrappersudo update apt-get sudo apt-get install python-pip
sudo pip install virtualenv virtualenvwrapper
Luego de tener instalado estos componentes, debemos configurar nuestra shell para que pueda trabajar con virtualenvwrapper. Todos nuestros entornos virtuales serán colocados dentro de un directorio en la carpeta de nuestro usuario llamada Env para facilitar su acceso.
echo "export WORKON_HOME=~/Env" >> ~/.bashrc echo "source /usr/local/bin/virtualenvwrapper.sh" >> ~/.bashrc source ~/.bashrc
Ahora debe haber un directorio llamado Env en la carpeta de inicio de su usuario que contendrá toda la información del entorno virtual.
Crear proyectos Django:
Nuestro primer paso sera instalar Django dentro de nuestro entorno virtual:
Para salir del entorno virtual necesitamos ejecutar el siguiente comando:
Instalación de uWSGI
Vamos a instalar uWSGI globalmente. Para esto nos aseguramos de haber salido del entorno virtual usando el comando deactivate, entonces ejecutamos los siguientes comandos que instalaran los archivos de desarrollo y uWSGI respectivamente.
Dentro de la carpeta de nuestro proyecto crearemos una carpeta llamada deploy y nos ubicaremos dentro de la misma:
Ahora tenemos que crear un enlace simbolico entre este archivo y nginx para que la configuracion realizada entre vigor.
Crear proyectos Django:
Al ejecutar este comando nuestra shell cambiara indicando que estamos dentro de un entorno virtual esto quedaría de esta forma: (primersitio)user@hostname:~$. El valor en paréntesis es el nombre de su entorno virtual. Todo los paquetes que instalemos apartir de aqui solo seran accesibles desde el entorno virtual actual.mkvirtualenv primersitio
Nuestro primer paso sera instalar Django dentro de nuestro entorno virtual:
Con Django instalado, podemos crear nuestro proyecto.pip install django
cd ~ django-admin.py startproject primersitio
Para salir del entorno virtual necesitamos ejecutar el siguiente comando:
Para entrar al entorno virtual necesitamos ejecutar el siguiente comando:deactivate
workon primersitio
Instalación de uWSGI
Vamos a instalar uWSGI globalmente. Para esto nos aseguramos de haber salido del entorno virtual usando el comando deactivate, entonces ejecutamos los siguientes comandos que instalaran los archivos de desarrollo y uWSGI respectivamente.
Vamos a ejecutar uWSGI en "Emperor Mode (Modo Emperador)", esta modalidad permite que un proceso maestro administre aplicaciones separadas dado un conjunto de archivos de configuración.sudo apt-get install python-dev sudo pip install uwsgi
Dentro de la carpeta de nuestro proyecto crearemos una carpeta llamada deploy y nos ubicaremos dentro de la misma:
Dentro de la carpeta de deploy crearemos 2 archivos uno con los parametros necesarios para trabajar con uWSGI y el otro con los parametros para nginx.cd ~/primersitio mkdir deploy cd deploy
Dentro de este archivo colocaremos los siguientes parametros:sudo nano primersitio_uwsgi.ini
Ahora crearemos el archivo de configuracion de nginx:[uwsgi] chdir = /home/usuario/primersitio #Ruta hasta donde esta ubicado tu proyecto module = primersitio.wsgi:application master = true processes = 10 socket = /home/usuario/primersitio/primersitio.sock #Este archivo no hay que crearlo es creado automaticamente. chmod-socket = 666 vacuum = true home = /home/usuario/Env/primersitio #Esta es la ruta del proyecto en el virtualenv
sudo nano primersitio_nginx.conf
Dentro de este archivo colocaremos los siguientes parametros:
#Este upstream no debe repetirse nunca,
#Si creas multiples proyectos cada uno debe
#Tenes uno distinto, es recomendable usar esta
#nomenclatura asi de esta menera no habra repeticion.
upstream primersitio_server {
server unix:///home/usuario/primersitio/primersitio.sock;
}
server {
listen 80;
server_name www.primersitio.com;
charset utf-8;
# Max upload size
client_max_body_size 10M;
access_log /home/usuario/primersitio/primersitio.access.log;
error_log /home/usuario/primersitio/primersitio.error.log;
location /static {
gzip_static on;
alias /home/usuario/primersitio/static/;
}
location / {
include uwsgi_params;
uwsgi_pass primersitio_server;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Host $server_name;
}
}
Ahora tenemos que crear un enlace simbolico entre este archivo y nginx para que la configuracion realizada entre vigor.
Ahora reiniciamos nginx:sudo ln -s /home/usuario/primersitio/deploy/primersitio_nginx.conf /etc/nginx/sites-enabled/
Ya podemos probar si toda nuestra configuracion es correcta, ejecutaremos nuestra aplicacion para ver si todo salio bien.sudo service nginx restart
Con esto si nos ubicamos en la direccion del servidor podremos ver la siguiente pantalla;cd ~ cd primersitio/deploy uwsgi --ini primersitio_uwsgi.ini
Pero esto no es suficiente porque en caso de que reiniciemos nuestro servidor tendriamos que ejecutar este ultimo comando cada vez, la solucion seria hacer que esto se ejecutara automaticamente con cada reinicio del servidor.
sudo nano /etc/rc.local
Antes del exit colocaremos los siguientes parametros:
Ahora reiniciamos nuestro sevidor y listo ya tendremos nuestro servidor haciendo Deploy./usr/local/bin/uwsgi --emperor /home/usuario/primersitio/deploy/primersitio_uwsgi.ini --uid usuario --gid www-data --daemonize /home/usuario/primersitio/primersitio.uwsgi.log
No hay comentarios.:
Publicar un comentario