Configurar el proyecto de Django con Nginx - mglacayo07/serverwiki GitHub Wiki
Configurar el proyecto de Django con Nginx
- 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
- 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
- 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
- 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
- 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