166 lines
3.8 KiB
Markdown
166 lines
3.8 KiB
Markdown
# DH Inspección V2 — Despliegue A1
|
|
|
|
Estos comandos se ejecutan únicamente en `dhv2.korexlabs.com`.
|
|
|
|
## 1. Verificación previa
|
|
|
|
```bash
|
|
cd /var/www/dhv2.korexlabs.com
|
|
|
|
docker compose ps
|
|
docker compose config >/dev/null && echo "Compose actual OK"
|
|
curl -fsS http://127.0.0.1:3101/api/v3/health
|
|
```
|
|
|
|
## 2. Backup previo
|
|
|
|
```bash
|
|
cd /var/www/dhv2.korexlabs.com
|
|
|
|
PHASEA1_STAMP="$(date +%Y%m%d_%H%M%S)"
|
|
PHASEA1_BACKUP_DIR="/var/www/dh-backup/dhv2-pre-phase-a1-${PHASEA1_STAMP}"
|
|
|
|
mkdir -p "$PHASEA1_BACKUP_DIR"
|
|
|
|
docker compose exec -T db sh -lc \
|
|
'pg_dump -U "$POSTGRES_USER" -d "$POSTGRES_DB" -Fc' \
|
|
> "$PHASEA1_BACKUP_DIR/database.dump"
|
|
|
|
tar -czf "$PHASEA1_BACKUP_DIR/source.tar.gz" \
|
|
--exclude='./api-v3/node_modules' \
|
|
--exclude='./api-v3/dist' \
|
|
--exclude='./web-v2/node_modules' \
|
|
--exclude='./web-v2/dist' \
|
|
.
|
|
|
|
install -m 600 .env "$PHASEA1_BACKUP_DIR/.env"
|
|
cp /etc/nginx/sites-available/dhv2.korexlabs.com \
|
|
"$PHASEA1_BACKUP_DIR/nginx-site.conf"
|
|
|
|
cd "$PHASEA1_BACKUP_DIR"
|
|
sha256sum database.dump source.tar.gz .env nginx-site.conf > SHA256SUMS
|
|
```
|
|
|
|
Conservar el valor mostrado por:
|
|
|
|
```bash
|
|
echo "$PHASEA1_BACKUP_DIR"
|
|
```
|
|
|
|
## 3. Reemplazo de archivos
|
|
|
|
Subir `DH_V2_FASE_A1_SOURCE.zip` a:
|
|
|
|
```text
|
|
/var/www/dhv2.korexlabs.com
|
|
```
|
|
|
|
Después:
|
|
|
|
```bash
|
|
cd /var/www/dhv2.korexlabs.com
|
|
unzip -oq DH_V2_FASE_A1_SOURCE.zip
|
|
chmod 600 .env
|
|
docker compose config >/dev/null && echo "Compose A1 OK"
|
|
```
|
|
|
|
## 4. Build y migraciones
|
|
|
|
```bash
|
|
cd /var/www/dhv2.korexlabs.com
|
|
|
|
docker compose --profile tools build api migrate
|
|
docker compose up -d db
|
|
docker compose --profile tools run --rm migrate
|
|
docker compose --profile tools run --rm migrate npm run migration:show
|
|
docker compose up -d --no-deps api
|
|
```
|
|
|
|
La migración debe informar cinco migraciones aplicadas y luego:
|
|
|
|
```text
|
|
Pending migrations: no
|
|
```
|
|
|
|
## 5. Verificación de esquema y seeds
|
|
|
|
```bash
|
|
cd /var/www/dhv2.korexlabs.com
|
|
|
|
docker compose exec -T db sh -lc \
|
|
'psql -U "$POSTGRES_USER" -d "$POSTGRES_DB" -v ON_ERROR_STOP=1' <<'SQL'
|
|
SELECT table_name
|
|
FROM information_schema.tables
|
|
WHERE table_schema = 'public'
|
|
AND table_name IN (
|
|
'users', 'roles', 'permissions', 'user_roles',
|
|
'role_permissions', 'auth_sessions', 'audit_events'
|
|
)
|
|
ORDER BY table_name;
|
|
|
|
SELECT
|
|
(SELECT count(*) FROM roles) AS roles,
|
|
(SELECT count(*) FROM permissions) AS permissions,
|
|
(SELECT count(*) FROM role_permissions) AS role_permissions;
|
|
|
|
SELECT role.code, array_agg(permission.code ORDER BY permission.code) AS permissions
|
|
FROM roles role
|
|
LEFT JOIN role_permissions mapping ON mapping.role_id = role.id
|
|
LEFT JOIN permissions permission ON permission.id = mapping.permission_id
|
|
GROUP BY role.code
|
|
ORDER BY role.code;
|
|
SQL
|
|
```
|
|
|
|
Valores iniciales esperados:
|
|
|
|
```text
|
|
roles = 5
|
|
permissions = 9
|
|
role_permissions = 21
|
|
```
|
|
|
|
## 6. Verificación del usuario runtime
|
|
|
|
```bash
|
|
cd /var/www/dhv2.korexlabs.com
|
|
|
|
docker compose exec -T db sh -lc \
|
|
'PGPASSWORD="$APP_DB_PASSWORD" psql -U "$APP_DB_USER" -d "$POSTGRES_DB" -v ON_ERROR_STOP=1 -c "SELECT count(*) FROM roles"'
|
|
```
|
|
|
|
Este comando debe funcionar sin convertir a `dhv2_app` en owner o superusuario.
|
|
|
|
## 7. Verificación final
|
|
|
|
```bash
|
|
cd /var/www/dhv2.korexlabs.com
|
|
|
|
docker compose ps
|
|
docker compose logs --tail=100 api
|
|
curl -fsS http://127.0.0.1:3101/api/v3/health
|
|
curl -fsS https://dhv2.korexlabs.com/api/v3/health
|
|
```
|
|
|
|
## 8. Rollback seguro del código
|
|
|
|
Si el build o el arranque de la API falla, se puede restaurar el código anterior
|
|
sin eliminar las tablas nuevas:
|
|
|
|
```bash
|
|
cd /var/www/dhv2.korexlabs.com
|
|
|
|
tar -xzf "$PHASEA1_BACKUP_DIR/source.tar.gz" \
|
|
-C /var/www/dhv2.korexlabs.com
|
|
|
|
install -m 600 "$PHASEA1_BACKUP_DIR/.env" \
|
|
/var/www/dhv2.korexlabs.com/.env
|
|
|
|
docker compose build api
|
|
docker compose up -d --no-deps api
|
|
curl -fsS http://127.0.0.1:3101/api/v3/health
|
|
```
|
|
|
|
No revertir migraciones ni restaurar la base si ya se crearon usuarios o
|
|
sesiones. Ese rollback de datos debe decidirse usando el backup previo.
|