Cómo clonar Django en servidor con SSH y Deploy Keys
Clase 13 de 22 • Curso de Despliegue de Aplicaciones Python en la Nube
Contenido del curso
Configuración de Servidores en la Nube para Despliegue
- 6

Cómo elegir recursos de servidor en AWS
03:33 min - 7

Cómo crear cuenta AWS con free tier
07:17 min - 8

Crear una instancia EC2 con Ubuntu en AWS
12:44 min - 9

SSH con llave .pem en Ubuntu AWS
08:41 min - 10

Cómo gestionar Ubuntu con apt y sudo
10:13 min - 11

Cómo DNS convierte tu IP en dominio memorable
13:55 min - 12

Cómo instalar certificados SSL con Certbot
05:16 min
Administración y Optimización de Servidores para Producción
- 13

Cómo clonar Django en servidor con SSH y Deploy Keys
Viendo ahora - 14

Configurar uWSGI como servicio para Django
14:34 min - 15

Conectar NGINX con uWSGI por proxy reverso
04:33 min - 16

Logs específicos por aplicación en Python
11:49 min - 17

Cómo configurar Sentry en Django
08:54 min - 18

Variables de entorno Django en servidor
04:28 min
Integración de Servicios Complementarios para Aplicaciones Python
Automatización y CI/CD para Despliegues Python
Aprende paso a paso a clonar un proyecto Django con SSH, proteger el acceso con Deploy Keys, crear un entorno virtual y servir la app con Unicorn. Verás cómo abrir el puerto 8000 en AWS Security Groups y ajustar ALLOWED_HOSTS para que el sitio cargue desde el navegador.
¿Cómo preparar el servidor Ubuntu para clonar por SSH?
Antes de clonar, organiza las carpetas y permisos. Así evitas errores de acceso. También nombra la app con el entorno para identificarla rápido en múltiples servers.
¿Qué estructura de carpetas usar para apps?
- Crear directorio base en /srv para aplicaciones.
- Usar una carpeta apps para alojar proyectos.
- Nombrar la app incluyendo el entorno, por ejemplo producción.
# Conexión al servidor con tu llave, usuario e IP
ssh -i <ruta_llave> ubuntu@<IP>
# Estructura de carpetas
sudo mkdir -p /srv/apps
cd /srv
ls -la
# Ajustar permisos para el usuario ubuntu
sudo chown ubuntu:ubuntu apps
ls -la apps
# Clonar con URL SSH del repositorio
cd /srv/apps
git clone git@github.com:organizacion/proyecto.git "Django basic production"
¿Cómo resolver errores de permisos al clonar?
- Si la carpeta es de root, cambia el owner a ubuntu.
- Verifica con ls -la para confirmar el cambio.
- Reintenta git clone después del chown.
¿Cómo crear y registrar una SSH key como Deploy Key en GitHub?
Para clonar de forma segura, usa Deploy Keys de GitHub. Genera la SSH key en el servidor, agrega la llave pública en Settings > Security > Deploy Keys del repositorio y no habilites escritura. Activa además two-factor authentication.
# Generar llave SSH (formato y comentario con tu correo)
ssh-keygen -t ed25519 -c "platzi@lcmartínez.com"
# Ver las llaves creadas
ls ~/.ssh
# Copiar la llave pública
cat ~/.ssh/id_ed25519.pub
- Pega la llave pública en Deploy Keys del repo.
- Título descriptivo: por ejemplo server python production.
- No marques allow write: mantén cambios vía pull request.
- Confirma con tu two-factor authentication.
Tras agregar la llave, reintenta clonar y verifica los archivos del repo.
¿Cómo crear el entorno virtual e instalar requirements y servir con Unicorn?
Crea un virtualenv, instala dependencias desde requirements.txt y ejecuta Unicorn con bind a 0.0.0.0:8000 usando el módulo config.wsgi:application. Abre el puerto en AWS Security Groups y ajusta ALLOWED_HOSTS solo con la IP.
¿Cómo preparar el entorno virtual y dependencias?
- Centraliza entornos en una carpeta .envs.
- Usa python3 -m venv para crear el entorno.
- Activa el entorno y luego pip install -r requirements.txt.
# Volver a la raíz de trabajo y crear entornos
cd /srv/apps
mkdir -p .envs
python3 -m venv .envs/django-basic-production
# Activar el entorno
source .envs/django-basic-production/bin/activate
# Instalar dependencias del proyecto
cd "/srv/apps/Django basic production"
pip install -r requirements.txt
# Ejemplo observado: Django 5.1.2 y librerías necesarias.
¿Cómo servir Django con Unicorn en el puerto 8000?
- Instala Unicorn en el entorno virtual.
- Ejecuta con bind 0.0.0.0:8000.
- Apunta al WSGI del proyecto: config.wsgi:application.
pip install unicorn
# Ejecutar el servidor
unicorn --bind 0.0.0.0:8000 config.wsgi:application
Si el navegador no carga, revisa red y seguridad.
¿Cómo abrir el puerto y ajustar ALLOWED_HOSTS?
- En AWS Security Groups: permite el puerto 8000 desde tu origen.
- En settings, agrega solo la IP del servidor a ALLOWED_HOSTS.
- No incluyas el puerto en ALLOWED_HOSTS.
# config/settings.py
ALLOWED_HOSTS = ["<IP_DEL_SERVIDOR>"]
- Reinicia Unicorn y recarga en http://
:8000. - Verifica que el sitio responde desde el navegador.
Habilidades y conceptos clave incluidos: SSH y permisos de sistema, Deploy Keys en GitHub, two-factor authentication, rutas y ownership en Ubuntu, WSGI/ASGI en Django, entornos virtuales con venv, instalación de requirements, ejecución con Unicorn, apertura de puertos en AWS Security Groups y configuración de ALLOWED_HOSTS. Como práctica, crea otra app, cambia parámetros de Unicorn y observa el impacto en rendimiento.
¿Tienes dudas o quieres compartir tu configuración de Unicorn y seguridad? Comenta y cuéntanos qué ajustes te dieron mejores resultados.