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://<IP_DEL_SERVIDOR>: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.