Ver más publicaciones del año 2022

Desplegando la Biblioteca EnlaceLibre hecha en Django... o por lo menos estoy viendo qué ondas

Nota de último momento: En esta enlace arranco una breve intro para instalar Django en tu equipo.

logo Django

En la UNL donde me encuentro estudiando al tecnicatura en Software Libre me topé con grata sorpresa, en la materia programación 2, con este archiconocido marco de trabajo de Python, Django. Me dije, vamos a darle una oportunidad, ya que lo poco que había hecho a nivel programación web estaba del lado de PHP y Laravel como marco de trabajo. Entonces me dije, qué tal si asumo el reto saljave de migrar la biblioteca a Django para probar el rendimiento de ambas en la Raspberry.

En eso estoy...

===DESPLIEGUE===

Tengo un listado de los pasos que di para desplegar, que considero es la parte más difícil de la vida...

1) Clonamos el repo de gitlab o donde se encuentre:

  git clone https://gitlab.com/enlacepilar/enlace-libre-django.git

2) Lo que hago a continuación es crearme una rama que se llama "despliegue" para hacer todas las modificaciones que tengan que ver con la puesta en producción

  git checkout -b despliegue

Creo la rama con ese comando y salto directamente a ella.

3) Ahora, si en nuestro proyecto guardamos el archivo de texto con los complementos instalados de Python como Django, es más sencillo. Vamos a repasar los pasos, que he publicado en otro lado, por ahí en este blog.

  • Instalar Venv para entornos virtuales desde la consola:
  sudo apt install python3-venv
  • Crear la carpeta con el entorno virtual
  python3 -m venv envBiblio
  • Activar el entorno virtual
  source tutorial/bin/activate

Ahora sí una vez activado el entorno aislado, podemos probar traer todo los complementos de Python que instalamos en nuestro entorno de desarrollo:

  pip install -r requirements.txt

4) Después de esto instalamos gunicorn, que sí sirve solo en el proyecto de producción.

  pip install gunicorn

5) Crear la carpeta en /var/log/ ----> gunicorn_proyecto/

  sudo mkdir gunicorn_proyecto

6) ajustar el propietario en base a lo del punto 2

  sudo chown -R propietario:www-data gunicorn_proyecto/

7) Crear un servicio en /etc/systemd/system/enlacelibre.service
pegar esto:

[Unit]  
Description=gunicorn daemon  
After=network.target

[Service]  
User=enlacepilar  
Group=www-data  
WorkingDirectory=/var/www/html/enlace-libre-django/principal  
ExecStart=/var/www/html/enlace-libre-django/envBiblio/bin/gunicorn --access-logfile - --workers 3 --bind unix:/var/log/gunicorn_enlace/principal.sock principal.wsgi:application

[Install]  
WantedBy=multi-user.target

8) Luego podemos probar si anda

sudo systemctl start enlacelibre

9) Y habilitarlo

sudo systemctl enable enlacelibre

Si por alún motivo desconocido da error y no aparece "active", podemos verificar con este comando:

sudo journalctl -u enlacelibre

Corregimos y recargamos todo

sudo systemctl daemon-reload  
sudo systemctl restart enlacelibre

10) Verificar si esta en producción

python manage.py check --deploy  

Esto advierte si hay algún error para corregir.

11) Modificamos el archivo settings.py para separar los archivos estáticos y todo lo media

STATIC_URL = '/pagina_inicio/static/'  
STATIC_ROOT = '/var/www/html/static_biblio'

MEDIA_URL = '/media/'  
MEDIA_ROOT = '/var/www/html/media_biblio'

12) Ahora hay que pasar todo lo estático a esta carpeta (antes claro crearlas en la ruta deseada):

mkdir /var/www/html/static_biblio  
mkdir /var/www/html/media_biblio

python manage.py collectstatic  
(copiando todo...)

10) Crear el archivo de nginx en /etc/nginx/sites-available/biblio:

sudo nvim /etc/nginx/sites-available/biblio
server {  
listen 80;  
server_name biblioteca-enlacelibre.duckdns.org biblioteca-enlacelibre.enlacepilar.com.ar;

location = /favicon.ico { access_log off; log_not_found off; }  
location /pagina_inicio/static {  
autoindex on;  
alias /var/www/html/static_biblio;  
}

location /media {  
autoindex on;  
alias /var/www/html/media_biblio;  
}

location / {  
include proxy_params;  
proxy_pass http://unix:/var/log/gunicorn_enlace/principal.sock;  
}

11) Crear el en enlace simbolico para activarlo

sudo ln -s /etc/nginx/sites-available/biblio /etc/nginx/sites-enabled/biblio

12) Reseteemos toditito: demonios, servicio creado y nginx.

sudo systemctl daemon-reload
sudo systemctl restart enlacelibre
sudo service nginx reload

Se puede ver cómo va evolucionando acá:

Biblioteca EnlaceLibre

# Bono: Generar la clave secreta que te pide Django en el archivo settings.py:

## Generador de SECRET_KEY

En consola, escirbir:

  openssl rand -base64 32
Flecha ArribaArriba


Escrito por: , el día: