Configurar el proyecto de Django con Nginx - mglacayo07/serverwiki GitHub Wiki

Configurar el proyecto de Django con Nginx

  1. Instalar dependencias para Django:
  • Asegúrate de estar logueado como wsgi. Luego, instala las siguientes dependencias:
sudo apt install python3-pip python3-dev libmysqlclient-dev python3-venv
  1. Configurar el proyecto Django:
  • Clona tu repositorio de Django:
git clone <URL-de-tu-repo>
cd <nombre-del-repo>
  • Crea y activa un entorno virtual:
python3 -m venv venv
source venv/bin/activate
  • Instala las dependencias del proyecto:
pip install -r requirements.txt
  • Configura el archivo de settings.py de Django para conectarse a la base de datos MySQL:
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'mi_proyecto_django',
        'USER': 'django_user',
        'PASSWORD': 'contraseña_segura',
        'HOST': 'localhost',
        'PORT': '3306',
    }
}
  • Aplica las migraciones de la base de datos:
python manage.py migrate
  1. Instalar y configurar uWSGI:
  • Instala Gunicorn:
sudo apt update
sudo apt install python3-pip python3-dev build-essential
pip install uwsgi

Probar uWSGI con tu proyecto Django *Para probar que uWSGI funciona con tu proyecto, ve al directorio del proyecto, activa el entorno virtual, y ejecuta uWSGI:

cd /ruta/a/tu/proyecto
source venv/bin/activate
uwsgi --http :8000 --module mi_proyecto_django.wsgi
  • Crea un archivo de configuración de uWSGI en la carpeta de tu proyecto:
nano /ruta/a/tu/proyecto/mi_proyecto_uwsgi.ini
  • Añade el siguiente contenido (ajusta las rutas según tu configuración):
[uwsgi]
chdir = /ruta/a/tu/proyecto
module = mi_proyecto_django.wsgi:application
home = /ruta/a/tu/proyecto/venv

master = true
processes = 5

socket = /ruta/a/tu/proyecto/mi_proyecto.sock
chmod-socket = 660
vacuum = true

logto = /ruta/a/tu/proyecto/logs/uwsgi.log
  1. Configurar Nginx:
  • Instala Nginx:
sudo apt install nginx
  • Configura Nginx para servir tu aplicación:
sudo nano /etc/nginx/sites-available/mi_proyecto_django
  • Añade la siguiente configuración:
server {
    listen 80;
    server_name <tu-dominio-o-ip>;

    location / {
        include uwsgi_params;
        uwsgi_pass unix:/ruta/a/tu/proyecto/mi_proyecto.sock;
    }

    location /static/ {
        alias /ruta/a/tu/proyecto/static/;
    }

    location /media/ {
        alias /ruta/a/tu/proyecto/media/;
    }
}
  • Enlaza y activa el sitio:
sudo ln -s /etc/nginx/sites-available/mi_proyecto_django /etc/nginx/sites-enabled
sudo nginx -t
sudo systemctl restart nginx
  1. Crear un servicio systemd para uWSGI Es recomendable crear un archivo de servicio systemd para gestionar uWSGI, de forma que se inicie automáticamente al reiniciar el servidor.
  • Crea el archivo de servicio:
sudo nano /etc/systemd/system/uwsgi.service

Añade la siguiente configuración:

[Unit]
Description=uWSGI instance to serve my Django project
After=network.target

[Service]
User=wsgi
Group=www-data
WorkingDirectory=/ruta/a/tu/proyecto
ExecStart=/ruta/a/tu/proyecto/venv/bin/uwsgi --ini /ruta/a/tu/proyecto/mi_proyecto_uwsgi.ini

[Install]
WantedBy=multi-user.target