- 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
263 lines
5.0 KiB
Markdown
263 lines
5.0 KiB
Markdown
# 🚀 Guía de Despliegue
|
|
|
|
## Índice
|
|
1. [Requisitos del Servidor](#requisitos-del-servidor)
|
|
2. [Despliegue de Base de Datos](#despliegue-de-base-de-datos)
|
|
3. [Despliegue del Backend](#despliegue-del-backend)
|
|
4. [Despliegue del Frontend](#despliegue-del-frontend)
|
|
5. [Configuración de Proxy Inverso (Nginx)](#configuración-de-proxy-inverso-nginx)
|
|
6. [Configuración de PM2](#configuración-de-pm2)
|
|
7. [SSL con Certbot](#ssl-con-certbot)
|
|
8. [Verificación Post-Despliegue](#verificación-post-despliegue)
|
|
9. [Rollback](#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
|
|
|
|
```bash
|
|
sudo apt update
|
|
sudo apt install postgresql postgresql-contrib
|
|
sudo systemctl enable postgresql
|
|
```
|
|
|
|
### 2. Crear Base de Datos y Usuario
|
|
|
|
```bash
|
|
sudo -u postgres psql
|
|
```
|
|
|
|
```sql
|
|
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
|
|
|
|
```bash
|
|
scp backupcondatos22122025.sql usuario@servidor:/tmp/
|
|
ssh usuario@servidor
|
|
sudo -u postgres psql -d hotel_hacienda -f /tmp/backupcondatos22122025.sql
|
|
```
|
|
|
|
### 4. Verificar Funciones
|
|
|
|
```bash
|
|
sudo -u postgres psql -d hotel_hacienda -c "\df"
|
|
```
|
|
|
|
---
|
|
|
|
## Despliegue del Backend
|
|
|
|
### 1. Clonar Repositorio
|
|
|
|
```bash
|
|
cd /var/www
|
|
git clone https://git.consultoria-as.com/consultoria-as/hotel-hacienda.git
|
|
cd hotel-hacienda/backend/hotel_hacienda
|
|
```
|
|
|
|
### 2. Instalar Dependencias
|
|
|
|
```bash
|
|
npm install --production
|
|
```
|
|
|
|
### 3. Configurar Variables de Entorno
|
|
|
|
```bash
|
|
cp .env.example .env
|
|
nano .env
|
|
```
|
|
|
|
```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
|
|
|
|
```bash
|
|
npm install -g pm2
|
|
pm2 start src/server.js --name hotel-api
|
|
pm2 save
|
|
pm2 startup
|
|
```
|
|
|
|
---
|
|
|
|
## Despliegue del Frontend
|
|
|
|
### 1. Compilar para Producción
|
|
|
|
```bash
|
|
cd /var/www/hotel-hacienda/frontend/Frontend-Hotel
|
|
npm install
|
|
```
|
|
|
|
### 2. Configurar Environment de Producción
|
|
|
|
```bash
|
|
echo "VITE_API_BASE_URL=https://hotel.consultoria-as.com/api" > .env
|
|
```
|
|
|
|
### 3. Build
|
|
|
|
```bash
|
|
npm run build
|
|
```
|
|
|
|
Esto genera la carpeta `dist/` con los archivos estáticos.
|
|
|
|
---
|
|
|
|
## Configuración de Proxy Inverso (Nginx)
|
|
|
|
### 1. Instalar Nginx
|
|
|
|
```bash
|
|
sudo apt install nginx
|
|
```
|
|
|
|
### 2. Configuración del Sitio
|
|
|
|
```bash
|
|
sudo nano /etc/nginx/sites-available/hotel-hacienda
|
|
```
|
|
|
|
```nginx
|
|
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
|
|
|
|
```bash
|
|
sudo ln -s /etc/nginx/sites-available/hotel-hacienda /etc/nginx/sites-enabled/
|
|
sudo nginx -t
|
|
sudo systemctl restart nginx
|
|
```
|
|
|
|
---
|
|
|
|
## SSL con Certbot
|
|
|
|
```bash
|
|
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
|
|
|
|
```bash
|
|
pm2 stop hotel-api
|
|
# Restaurar código anterior con git
|
|
git checkout <commit-anterior>
|
|
npm install
|
|
pm2 restart hotel-api
|
|
```
|
|
|
|
### Base de Datos
|
|
|
|
```bash
|
|
# 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
|
|
|
|
```bash
|
|
# 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.
|