Diagnóstico y fix SQL Server: SERVERNAME, TDS_Version, Puerto explicitos
This commit is contained in:
164
deploy/DEPLOYMENT_GUIDE_UBUNTU.md
Normal file
164
deploy/DEPLOYMENT_GUIDE_UBUNTU.md
Normal file
@@ -0,0 +1,164 @@
|
||||
# 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
|
||||
```
|
||||
Reference in New Issue
Block a user