LINUX

Cómo instalar Django con Gunicorn y Nginx en FreeBSD 10.2

Django es un framework web basado en Python, mantenido por Django Software Foundation. Es un marco de Python gratuito y de código abierto para crear aplicaciones web macro. Django es poderoso, haz que tu proceso de desarrollo sea tan rápido, haz que tu aplicación sea simple y útil. Haga que su desarrollador sea fácil de mantener e implementar el proyecto. Django es un framework python de alto nivel con el concepto MVC (Model-View-Controller), utilizado por grandes empresas como mozilla, pinterest, disquss, instagram, bitbucket, etc. En este tutorial guiaremos sobre la instalación de django. Instalaremos django 1.9 con gunicorn, supervisord y nginx como servidor web. Nginx ejecutándose en el puerto 80 y django framework ejecutándose bajo gunicorn con un archivo de calcetín gunicorn.

Requisito previo :

  • FreeBSD 10.2 – 64 bits.
  • Privilegios de root.

Paso 1 – Actualice el repositorio de FreeBSD

Inicie sesión en su servidor freebsd y actualice el repositorio con el comando ‘freebsd-update’:

freebsd-update fetch
freebsd-update install

Paso 2: instale Python, SQLite3 y Pip

En este paso instalaremos python 2.7 con pip. Si desea utilizar python3, utilice MySQL o PostgreSQL como base de datos de django. Instalaremos python y pip desde el repositorio freebsd con el siguiente comando:

pkg install python
pkg install py27-pip

Y actualice el pip a la última versión con el comando:

pip install --upgrade pip

A continuación, instale sqlite3 databse y el módulo de python py27-sqlite3 con el comando pkg:

pkg install sqlite3
pkg install py27-sqlite3

Python, pip y SQLite3 instalados en el servidor freebsd.

Paso 3: instala Django en un entorno virtual

Instalaremos e implementaremos django con el usuario normal llamado ‘vagrant’, no como root. Instalaremos django bajo virtualenv, es un generador de entorno virtual de Python, una herramienta para crear el entorno de Python aislado. Virtualenv está disponible en el repositorio de PyPI, podemos instalarlo con el comando pip:

pip install virtualenv

A continuación, cambie al usuario ‘vagabundo’:

su - vagrant

Cree un nuevo entorno virtual llamado ‘myenv’ con python2.7 como versión. Podemos crearlo con el comando virtualenv a continuación:

mkvirtualenv --python=python2.7 myenv

Creará un nuevo directorio llamado ‘myenv’, vaya al directorio y activará el entorno virtual que se ha creado antes:

cd myenv
source bin/activate

Y este es nuestro momento para instalar django 1.9 y un gunicorn, instálalo todo con el comando pip bajo el virtualenv:

pip install django==1.9
pip install gunicorn

Django y Gunicorn están instalados, podemos verificarlo con el comando pip:

pip list

Django (1.9)
gunicorn (19.4.1)

A continuación, cree un nuevo proyecto de muestra con django. Crearemos un nuevo proyecto llamado ‘myproject’ con el comando django-admin:

django-admin startproject myproject

Ese comando creará un nuevo directorio ‘myproject’, irá al directorio y probará la instalación de django ejecutando el archivo manage.py:

cd myproject/
python manage.py runserver

runserver = inicia nuestro proyecto django con el puerto 8000.

Django_Virtualenv

Si no hay ningún error, continúe con el siguiente paso editando el archivo setting.py dentro del directorio del proyecto django:

nano -c myproject/settings.py

Al final de la línea, agregue la configuración a continuación:

STATIC_ROOT = '/home/vagrant/myenv/myproject/static/'
STATIC_URL = '/static/'

MEDIA_ROOT = '/home/vagrant/myenv/myproject/media/'
MEDIA_URL = '/media/'

Guardar y Salir.

Y genere el archivo estático ejecutando el siguiente comando:

python manage.py collectstatic

collectstatic utilizado para administrar los archivos estáticos, copiará el archivo estático de django al directorio ‘static’ en myproject dir.

Django_Collectstatic

Django está configurado, y lo último que necesitamos es configurar el gunicorn. Vaya al directorio ‘myenv’ y active el entorno, luego cree un nuevo archivo en el directorio bin:

cd /home/vagrant/myenv/
source bin/activate
nano -c bin/gunicorn_start

Pegue la configuración a continuación:

#!/bin/bash

NAME="myproject"                                             # Django Project Name
DJANGODIR=/home/vagrant/myenv/myproject                        # Django Project Directory
SOCKFILE=/home/vagrant/myenv/myproject/run/gunicorn.sock     # Gunicorn Sock File
USER=vagrant                                                # Django Project Running under user vagrant
GROUP=vagrant                                                # Django Project Running under group vagrant
NUM_WORKERS=3
DJANGO_SETTINGS_MODULE=myproject.settings                     # change 'myproject' with your project name
DJANGO_WSGI_MODULE=myproject.wsgi                             # change 'myproject' with your project name

echo "Starting $NAME as `whoami`"

# Activate the virtual environment
cd $DJANGODIR
source ../bin/activate
export DJANGO_SETTINGS_MODULE=$DJANGO_SETTINGS_MODULE
export PYTHONPATH=$DJANGODIR:$PYTHONPATH

# Create the run directory if it doesn't exist
RUNDIR=$(dirname $SOCKFILE)
test -d $RUNDIR || mkdir -p $RUNDIR

# Start your Django Unicorn
# Programs meant to be run under supervisor should not daemonize themselves (do not use --daemon)
exec ../bin/gunicorn ${DJANGO_WSGI_MODULE}:application 
--name $NAME 
--workers $NUM_WORKERS 
--user=$USER --group=$GROUP 
--bind=unix:$SOCKFILE 
--log-level=debug 
--log-file=-

Guardar y Salir.

Y haz que el script sea ejecutable:

chmod u+x bin/gunicorn_start

Django está configurado con gunicorn, django se ejecutará bajo el archivo gunicorn sock.

Nota : Si desea salir del virtualenv, puede usar el comando «desactivar».

Paso 4 – Instale Supervisord

Supervisor es un control de proceso en el sistema operativo Linux y Unix que permite a los usuarios monitorear y controlar el número de procesos. En este tutorial necesitamos un py-supervisor para controlar el gunicorn que se ejecuta con nuestro proyecto django.

Instale py-supervisor desde el repositorio freebsd con el comando pkg:

pkg install py-supervisor

Si está hecho, agregue supervisor al tiempo de arranque con el comando sysrc y luego inícielo:

sysrc supervisord_enable=yes
service supervisord start

Se inicia Supervisor, pero debemos agregarle nuestra aplicación. Podemos hacerlo editando el archivo de configuración del supervisor, ir al directorio y editar el archivo ‘supervisord.conf’ con nano:

cd /usr/local/etc/
nano -c supervisord.conf

Al final de la línea, agregue la configuración de nuestra aplicación a continuación:

[program:myproject]
command = sh /home/vagrant/myenv/bin/gunicorn_start
user = vagrant
stdout_logfile = /home/vagrant/myenv/logs/gunicorn_supervisor.log
redirect_stderr = true
environment=LANG=en_US.UTF-8,LC_ALL=en_US.UTF-8

Guardar y Salir.

Ahora debemos crear un nuevo directorio para el archivo de registro de gunicorn con el usuario vagrant:

mkdir -p /home/vagrant/myenv/logs/
touch /home/vagrant/myenv/logs/gunicorn_supervisor.log

Reinicie el supervisor y verifique que nuestra aplicación se esté ejecutando:

service supervisord restart
supervisorctl status

Supervisor

Paso 5: instala Nginx

Usaremos nginx como front-end del servidor y lo ejecutaremos en el puerto 80. Si alguien accede desde los navegadores, la conexión se pasará a gunicorn que se ejecuta con el archivo sock.

Instale nginx desde el repositorio freebsd con el comando pkg:

pkg install nginx

A continuación, configure el host virtual para nuestro proyecto django. Vaya al directorio de configuración de nginx y cree un nuevo directorio llamado vhost allí:

cd /usr/local/etc/nginx/
mkdir -p vhost/

Vaya al directorio vhost y cree una nueva configuración de archivo ‘mydjango.conf’:

cd vhost/
nano -c mydjango.conf

Pegue la configuración de virtualhost a continuación:

upstream myproject_server {
server unix:/home/vagrant/myenv/myproject/run/gunicorn.sock fail_timeout=0;
}

server {

listen   80;
server_name www.djangofreebsd.com;

client_max_body_size 4G;

access_log /home/vagrant/myenv/logs/nginx-access.log;
error_log /home/vagrant/myenv/logs/nginx-error.log;

location /static/ {
alias   /home/vagrant/myenv/myproject/static/;
}

location /media/ {
alias   /home/vagrant/myenv/myproject/media/;
}

location / {
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_redirect off;

# Try to serve static files from nginx, no point in making an
# *application* server like Unicorn/Rainbows! serve static files.
if (!-f $request_filename) {
proxy_pass http://myproject_server;
break;
}
}

# Error pages
error_page 500 502 503 504 /500.html;
location = /500.html {
root /home/vagrant/myenv/myproject/static/;
}
}

Guardar y Salir.

Ahora debemos agregar la configuración de virtualhost al nginx.conf. Regrese al directorio nginx, edite el archivo nginx.conf con nano:

cd /usr/local/etc/nginx/
nano -c nginx.conf

Antes del final de la línea, agregue la siguiente línea:

include vhost/*.conf;

Guardar y Salir.

Pruebe la configuración de nginx, si no hay ningún error, agregue nginx al tiempo de arranque:

nginx -t
sysrc nginx_enable=yes

Y el último, reinicie supervisord e inicie nginx:

service supervisord restart
service nginx start

Ahora podemos acceder a nuestras aplicaciones de django con el navegador, en este tutorial usamos el dominio www.mydjango.co.

Django_with Nginx_Done

Página de administración de Django.

Djang_Admin

Django 1.9 y gunicorn con supervisor y nginx están listos.

Conclusión

Django es un marco de aplicación web basado en python con el concepto MVC (Model-View-Controller). Django es la mejor solución para usted si desea crear una aplicación web macro. Es rápido y simple, gratuito y de código abierto y mantenido por Django Software Foundation. Django puede funcionar de forma independiente, pero también podemos usar apache o nginx como la interfaz del proyecto django.

Publicaciones relacionadas

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Botón volver arriba
Cerrar