1.- Clona éste repositorio en la droplet 💧 en donde quieres otra app de gradio corriendo.
git clone [email protected]:Moibe/gradio-standalone-do.git astro-blend
2.- Crea en Github un nuevo repositorio de producción desde donde manejarás ésta app. La nomenclatura será ocean- como prefijo, con lo que indicas que es el front de Digital Ocean para determinada app, en éste caso Astro-Blend. Seguido por -devo si es desarrollo ⚒️
3.- Cambia el remoto del directorio recién clonado para que ahora manejes ésta nueva app desde el repositorio que acabas de crear en Github.
git remote set-url origin [email protected]:Moibe/ocean-astro-blend.git
4.- Haz git push origin main, para probar y subir el repositorio a su nuevo lugar en Github.
5.- Ahora en tu servidor 🖥️ crea el directorio para tu app, generalmente con el mismo nombre que el repo.
Inicializalo para git con git init.
Agrega el remoto con **git remote add origin ruta de tu nuevo repositorio **
6.- Instala los requerimentos en tu proyecto tanto en local como en el servidor con:
python3 -m venv venv
venv/Scripts/activate
pip install -r requirements.txt
6.5.- Crea dentro de la carpeta del server 🖥️ una carpeta llamada 📁 logs, ahí recibirá un log 📗 con las acciones del cron ⏱️ que programaremos.
7.- Pasar manualmente el archivo bridges.
7.5.- Debes especificar todas tus variables globales en globales.py, y asignar el puerto seleccionado ej. 7860 en los bashes keepalive.sh y deployer.sh
8.- Agrega las variables en settings: MAIN_BRANCH, SSH_HOST, SSH_PRIVATE_KEY, SSH_USER, WORK_DIR.
Para las referencias a ésto consulta: https://www.youtube.com/watch?v=llUzfOCeLH0
- SSH_PRIVATE_KEY fue creado dentro de la droplet y la encuentras en: cat /root/.ssh/id_rsa
- SSH_USER es root.
- SSH_HOST es la IP de tu server.
- WORK_DIR es la ubicación de tu repositorio, por ejemplo en éste caso: code/ocean-astro-blend
- MAIN_BRANCH main
9.- Ahora necesitas agregar el nuevo sitio a la configuración de nginx, hay dos formas de hacerlo:
**Importante: Antes de agregar el path a las configuraciones de nginx, recuerda que ese path esté especificado en
a) agregarlo como un path así: tudominio.com/path
Para agregarlo como un path, debes de agregar la parte correspondiente al archivo de nginx de tu dominio ya existente que se encuentra en /etc/ngingx/sites-available.
Una vez agregado debes hacer reload así: systemctl reload nginx
b) agregarlo como otro dominio: otrodominio.com
Para agregarlo como otro dominio, en cambio, debes de copiar el archivo de dominio de nginx que se encuentra en /etc/nginx/sites-available y crear uno nuevo. Una vez hecho ésto debes de crear el link simbólico hacia sites-enabled así:
10.- Estándo en sites-enabled:
ln -s /etc/nginx/sites-available/otrodominio.com otrodominio.com
Una vez agregado debes hacer reload así: systemctl reload nginx
Cada dominio necesitará una landing page 📄, para cuando no vas hacia algun /sitio , la forma en que designé hacerlo es que se redireccione via nginx y que no viva esa página en gradio.
Por lo tanto, esas páginas deberan vivir en el directorio /usr/share/nginx/html por nomenclatura, con el nombre del sitio precedido por .html.
11.- Finalmente requerimos activar los certificados SSL. 🔒
sudo certbot --nginx -d example.com -d www.example.com
El proceso de renovación es automático y lo puedes checar aquí así:
sudo systemctl status certbot.timer
Para probar si está funcionando correctamente puedes hacer una simulación de la renovación así:
sudo certbot renew --dry-run
12.- Éste repositorio cuenta con github actions para autodesplegarlo cada que hay cambios.
Sin embargo, para que corra la app de gradio lo que se usa es un cron ⏱️ dentro del servidor.
Éste cron activa a keepalive.sh que apaga el proceso anterior y reactiva el nuevo.
Todo ésto se guarda dentro de logs/deploy.log.
Moibe 👨🏻🚀