- README.md con guía completa de instalación y arquitectura - docs/BACKEND.md — guía detallada del API - docs/FRONTEND.md — guía del SPA React - docs/DATABASE.md — funciones SQL y patrones de datos - docs/API.md — referencia completa de endpoints REST - docs/DEPLOYMENT.md — guía de despliegue en producción - docs/TROUBLESHOOTING.md — solución de problemas comunes - CHANGELOG.md — historial de cambios - CONTRIBUTING.md — guía de contribución
5.0 KiB
5.0 KiB
🚀 Guía de Despliegue
Índice
- Requisitos del Servidor
- Despliegue de Base de Datos
- Despliegue del Backend
- Despliegue del Frontend
- Configuración de Proxy Inverso (Nginx)
- Configuración de PM2
- SSL con Certbot
- Verificación Post-Despliegue
- Rollback
Requisitos del Servidor
- Ubuntu 22.04 LTS (recomendado)
- 2GB RAM mínimo
- Node.js 18+
- PostgreSQL 13+
- Nginx
- PM2 (opcional pero recomendado)
- Git
Despliegue de Base de Datos
1. Instalar PostgreSQL
sudo apt update
sudo apt install postgresql postgresql-contrib
sudo systemctl enable postgresql
2. Crear Base de Datos y Usuario
sudo -u postgres psql
CREATE DATABASE hotel_hacienda;
CREATE USER hoteluser WITH ENCRYPTED PASSWORD 'password_seguro';
GRANT ALL PRIVILEGES ON DATABASE hotel_hacienda TO hoteluser;
\q
3. Restaurar Backup
scp backupcondatos22122025.sql usuario@servidor:/tmp/
ssh usuario@servidor
sudo -u postgres psql -d hotel_hacienda -f /tmp/backupcondatos22122025.sql
4. Verificar Funciones
sudo -u postgres psql -d hotel_hacienda -c "\df"
Despliegue del Backend
1. Clonar Repositorio
cd /var/www
git clone https://git.consultoria-as.com/consultoria-as/hotel-hacienda.git
cd hotel-hacienda/backend/hotel_hacienda
2. Instalar Dependencias
npm install --production
3. Configurar Variables de Entorno
cp .env.example .env
nano .env
PORT=3000
URL_CORS=https://hotel.consultoria-as.com
DB_HOST=localhost
DB_PORT=5432
DB_USER=hoteluser
DB_PASSWORD=password_seguro
DB_NAME=hotel_hacienda
EMAIL_HOST=smtp.gmail.com
EMAIL_PORT=587
EMAIL_USER=soporte@horuxfin.com
EMAIL_PASS=app_password
STRIPE_SECRET_KEY=sk_live_...
FACTURAS_API_URL=https://api.facturas.com/v1/
FACTURAS_ISSUER_RFC=RFC_DEL_HOTEL
FACTURAS_TYPE=I
FACTURAS_API_TOKEN=token_aqui
BANXICO_TOKEN=token_banxico
4. Iniciar con PM2
npm install -g pm2
pm2 start src/server.js --name hotel-api
pm2 save
pm2 startup
Despliegue del Frontend
1. Compilar para Producción
cd /var/www/hotel-hacienda/frontend/Frontend-Hotel
npm install
2. Configurar Environment de Producción
echo "VITE_API_BASE_URL=https://hotel.consultoria-as.com/api" > .env
3. Build
npm run build
Esto genera la carpeta dist/ con los archivos estáticos.
Configuración de Proxy Inverso (Nginx)
1. Instalar Nginx
sudo apt install nginx
2. Configuración del Sitio
sudo nano /etc/nginx/sites-available/hotel-hacienda
server {
listen 80;
server_name hotel.consultoria-as.com;
# Frontend estático
location / {
root /var/www/hotel-hacienda/frontend/Frontend-Hotel/dist;
index index.html;
try_files $uri $uri/ /index.html;
}
# Backend API
location /api/ {
proxy_pass http://localhost:3000/api/;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_cache_bypass $http_upgrade;
}
# Logs
access_log /var/log/nginx/hotel-access.log;
error_log /var/log/nginx/hotel-error.log;
}
3. Activar Sitio
sudo ln -s /etc/nginx/sites-available/hotel-hacienda /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl restart nginx
SSL con Certbot
sudo apt install certbot python3-certbot-nginx
sudo certbot --nginx -d hotel.consultoria-as.com
sudo systemctl enable certbot.timer
Verificación Post-Despliegue
Checklist
- Backend responde:
curl https://hotel.consultoria-as.com/api/employees - Frontend carga sin errores en navegador
- Login funciona correctamente
- Base de datos tiene datos correctos
- Emails se envían (probar recuperación de contraseña)
- CORS permite el dominio correcto
- PM2 muestra el proceso activo:
pm2 list - Nginx no muestra errores:
sudo tail -f /var/log/nginx/hotel-error.log
Rollback
Backend
pm2 stop hotel-api
# Restaurar código anterior con git
git checkout <commit-anterior>
npm install
pm2 restart hotel-api
Base de Datos
# Restaurar backup previo
sudo -u postgres pg_dump hotel_hacienda > backup_antes_del_cambio.sql
sudo -u postgres psql -d hotel_hacienda -f backup_seguro.sql
Frontend
# Recompilar versión anterior
git checkout <commit-anterior>
cd frontend/Frontend-Hotel
npm run build
Nota: Mantener siempre un backup reciente de la base de datos antes de cualquier despliegue que modifique funciones SQL.