165 lines
4.2 KiB
Markdown
165 lines
4.2 KiB
Markdown
# Guía de Despliegue en Ubuntu Server (Dashboard Leads)
|
|
|
|
Esta guía explica el proceso paso a paso para desplegar la aplicación **Dashboard Leads** (Frontend React + Vite y Backend FastAPI) en un servidor **Ubuntu Server 20.04 / 22.04 / 24.04 LTS**.
|
|
|
|
---
|
|
|
|
## 1. Requisitos Previos en el Servidor Ubuntu
|
|
|
|
Conéctate por SSH a tu servidor e instala los paquetes necesarios:
|
|
|
|
```bash
|
|
sudo apt update && sudo apt upgrade -y
|
|
sudo apt install -y python3 python3-pip python3-venv nodejs npm nginx certbot python3-certbot-nginx git
|
|
```
|
|
|
|
*(Opcional: Si requieres conectar a SQL Server mediante pyodbc en Ubuntu, instala msodbcsql18 y unixodbc-dev).*
|
|
|
|
---
|
|
|
|
## 2. Estructura de Directorios en el Servidor
|
|
|
|
Crea el directorio del proyecto y otorga permisos al usuario actual (ejemplo: `ubuntu`):
|
|
|
|
```bash
|
|
sudo mkdir -p /var/www/dashboard-leads
|
|
sudo chown -R $USER:$USER /var/www/dashboard-leads
|
|
```
|
|
|
|
Sube los archivos del proyecto a `/var/www/dashboard-leads/` (o clónalos mediante git).
|
|
|
|
---
|
|
|
|
## 3. Configuración del Backend (FastAPI)
|
|
|
|
1. Ve a la carpeta `backend`:
|
|
```bash
|
|
cd /var/www/dashboard-leads/backend
|
|
```
|
|
|
|
2. Crea el entorno virtual e instala dependencias:
|
|
```bash
|
|
python3 -m venv venv
|
|
source venv/bin/activate
|
|
pip install --upgrade pip
|
|
pip install -r requirements.txt
|
|
```
|
|
|
|
3. Configura las variables de entorno `.env`:
|
|
- Copia la plantilla `.env.example`:
|
|
```bash
|
|
cp .env.example .env
|
|
```
|
|
- Edita las credenciales reales de forma segura:
|
|
```bash
|
|
nano .env
|
|
```
|
|
- Verifica que la variable `CORS_ORIGINS` contenga tus dominios:
|
|
```env
|
|
CORS_ORIGINS=https://dashboard-leads.escueladerefrigeracion.lat,http://dashboard-leads.escueladerefrigeracion.lat,http://api-leads.escueladerefrigeracion.lat
|
|
```
|
|
|
|
4. Prueba la ejecución manual del backend:
|
|
```bash
|
|
uvicorn main:app --host 127.0.0.1 --port 8001
|
|
```
|
|
*(Presiona `Ctrl + C` para detener después de verificar).*
|
|
|
|
---
|
|
|
|
## 4. Configuración del Servicio Systemd para Backend
|
|
|
|
1. Copia el archivo de servicio `dashboard-leads-backend.service`:
|
|
```bash
|
|
sudo cp /var/www/dashboard-leads/deploy/dashboard-leads-backend.service /etc/systemd/system/
|
|
```
|
|
|
|
2. Recarga systemd, inicia y habilita el servicio:
|
|
```bash
|
|
sudo systemctl daemon-reload
|
|
sudo systemctl start dashboard-leads-backend
|
|
sudo systemctl enable dashboard-leads-backend
|
|
```
|
|
|
|
3. Revisa el estado del servicio:
|
|
```bash
|
|
sudo systemctl status dashboard-leads-backend
|
|
```
|
|
|
|
---
|
|
|
|
## 5. Configuración y Compilación del Frontend (React + Vite)
|
|
|
|
1. Ve a la carpeta `frontend`:
|
|
```bash
|
|
cd /var/www/dashboard-leads/frontend
|
|
```
|
|
|
|
2. Configura la variable de entorno en `.env`:
|
|
```bash
|
|
cp .env.example .env
|
|
nano .env
|
|
```
|
|
Asegúrate de que contenga la URL del backend:
|
|
```env
|
|
VITE_API_BASE_URL=https://api-leads.escueladerefrigeracion.lat
|
|
```
|
|
*(Recomendado usar HTTPS para evitar advertencias de Mixed Content en el navegador).*
|
|
|
|
3. Instala dependencias y genera la build de producción:
|
|
```bash
|
|
npm install
|
|
npm run build
|
|
```
|
|
Esto generará los archivos finales en `/var/www/dashboard-leads/frontend/dist`.
|
|
|
|
---
|
|
|
|
## 6. Configuración de Nginx
|
|
|
|
1. Copia el archivo de configuración de Nginx:
|
|
```bash
|
|
sudo cp /var/www/dashboard-leads/deploy/nginx-leads.conf /etc/nginx/sites-available/leads.conf
|
|
```
|
|
|
|
2. Crea el enlace simbólico para activarlo:
|
|
```bash
|
|
sudo ln -s /etc/nginx/sites-available/leads.conf /etc/nginx/sites-enabled/
|
|
```
|
|
|
|
3. Prueba la sintaxis de Nginx y recárgalo:
|
|
```bash
|
|
sudo nginx -t
|
|
sudo systemctl reload nginx
|
|
```
|
|
|
|
---
|
|
|
|
## 7. Configuración de Certificados SSL (HTTPS Gratis con Certbot)
|
|
|
|
Para habilitar SSL en ambos dominios y proteger las transmisiones:
|
|
|
|
```bash
|
|
sudo certbot --nginx -d dashboard-leads.escueladerefrigeracion.lat -d api-leads.escueladerefrigeracion.lat
|
|
```
|
|
|
|
Certbot actualizará automáticamente la configuración de Nginx para redirigir todo el tráfico a HTTPS de forma segura.
|
|
|
|
---
|
|
|
|
## 8. Mantenimiento y Comandos Útiles
|
|
|
|
- **Ver logs del Backend**:
|
|
```bash
|
|
journalctl -u dashboard-leads-backend -f
|
|
```
|
|
- **Reiniciar el Backend**:
|
|
```bash
|
|
sudo systemctl restart dashboard-leads-backend
|
|
```
|
|
- **Actualizar cambios en Frontend**:
|
|
```bash
|
|
cd /var/www/dashboard-leads/frontend
|
|
npm run build
|
|
```
|