Proceso de actualización de Sherpa Orchestrator (versión local)#

Información general sobre la actualización#

La actualización de Sherpa Orchestrator incluye los siguientes componentes:

  • Actualización de archivos de la aplicación
  • Actualización de la estructura de la base de datos
  • Actualización de dependencias de Node.js (si es necesario)
  • Reinicio de servicios

Copia de seguridad antes de la actualización#

¡Siempre haga copias de seguridad antes de actualizar!

Copia de seguridad de la base de datos#

# Cree un volcado de la base de datos
mysqldump -u root -p orchestrator > orchestrator_backup_$(date +%Y%m%d_%H%M%S).sql

# Cree un volcado de la base de datos de archivo (si se utiliza)
mysqldump -u root -p orchestrator_archive > orchestrator_archive_backup_$(date +%Y%m%d_%H%M%S).sql

Copia de seguridad de archivos de configuración#

# Cree una copia de seguridad de la configuración
cp -r /opt/SherpaOrchestrator/backend/config /opt/SherpaOrchestrator/backend/config_backup_$(date +%Y%m%d_%H%M%S)

# Cree una copia de seguridad de los certificados SSL
cp -r /opt/SherpaOrchestrator/backend/config/certs /opt/SherpaOrchestrator/backend/config/certs_backup_$(date +%Y%m%d_%H%M%S)

Copia de seguridad de registros y datos#

# Cree una copia de seguridad de los registros
cp -r /opt/SherpaOrchestrator/backend/logs /opt/SherpaOrchestrator/backend/logs_backup_$(date +%Y%m%d_%H%M%S)

Descarga de archivos de actualización#

# Vaya al directorio /opt y descargue el archivo como en la etapa de preparación
cd /opt

# Descargue el archivo comprimido de la actualización
orchestrator_local_update_*.tgz

Detener servicios antes de la actualización#

# Detenga los procesos de PM2
sudo pm2 stop all
sudo pm2 delete all

# Detenga Nginx
sudo systemctl stop nginx

# Detenga PHP-FPM
sudo systemctl stop php8.5-fpm

# Detenga MySQL/MariaDB (opcional, para una detención completa)
sudo systemctl stop mariadb

Crear una copia de seguridad de la instalación actual#

# Renombre el directorio actual
sudo mv /opt/SherpaOrchestrator /opt/SherpaOrchestrator_backup_$(date +%Y%m%d_%H%M%S)

Descomprimir e instalar la actualización#

# Cree un nuevo directorio
sudo mkdir /opt/SherpaOrchestrator

# Encuentre y descomprima el archivo de actualización (se selecciona automáticamente la versión más reciente)
tar -xvzf "$(ls orchestrator_local_update_*.tgz | sort -V | tail -n 1)"


# Vaya al directorio de la aplicación
cd /opt/SherpaOrchestrator

# Haga que los scripts sean ejecutables
sudo find ./*.sh -type f | xargs chmod +x

Restaurar la configuración#

# Restaure los archivos de configuración desde la copia de seguridad
sudo cp -r /opt/SherpaOrchestrator_backup_*/backend/config/* /opt/SherpaOrchestrator/backend/config/

# Restaure los certificados SSL
sudo cp -r /opt/SherpaOrchestrator_backup_*/backend/config/certs/* /opt/SherpaOrchestrator/backend/config/certs/

# Establezca los permisos correctos
sudo chown -R www-data:www-data /opt/SherpaOrchestrator
sudo chmod -R 775 /opt/SherpaOrchestrator

Importante: Después de la restauración, verifique que en backend/config/phinx.php se indiquen las mismas contraseñas de la base de datos que en config.ini (el parámetro 'pass' en la sección environments). De lo contrario, las migraciones durante la actualización de la base de datos fallarán.

Actualización de la base de datos#

# Verifique la configuración de conexión en phinx.php (las contraseñas deben coincidir con config.ini)
sudo nano backend/config/phinx.php

# Ejecute las migraciones de la base de datos
sudo ./migrate.sh

Actualización de dependencias de Node.js (si es necesario)#

# Vaya al directorio websocket
cd /opt/SherpaOrchestrator/backend/app/websocket/

# Actualice las dependencias
sudo npm install

# Regrese al directorio principal
cd /opt/SherpaOrchestrator

Iniciar servicios después de la actualización#

# Inicie MySQL/MariaDB (si se detuvieron)
sudo systemctl start mariadb

# Inicie PHP-FPM
sudo systemctl start php8.5-fpm

# Inicie Nginx
sudo systemctl start nginx

# Inicie el servicio WebSocket
cd /opt/SherpaOrchestrator/backend/app/websocket/
sudo pm2 start index.js --name "Websockets"
sudo pm2 save

# Regrese al directorio principal
cd /opt/SherpaOrchestrator

Verificación de funcionamiento después de la actualización#

# Verifique el estado de los servicios
sudo systemctl status nginx
sudo systemctl status php8.5-fpm
sudo systemctl status mariadb

# Verifique los procesos de PM2
sudo pm2 list
sudo pm2 logs Websockets --lines 20

# Verifique la disponibilidad de la interfaz web
curl -I https://your-domain-or-ip

# Verifique los registros de Nginx en busca de errores
sudo tail -f /var/log/nginx/error.log

Limpieza después de una actualización exitosa#

# Después de una prueba exitosa, elimine las copias de seguridad antiguas
# (¡realice esto solo después de confirmar que todo funciona!)

# Elimine los archivos de actualización antiguos
rm -f /opt/orch_local_update_*.tgz

# Elimine las copias de seguridad antiguas (si está seguro de que todo funciona)
# rm -rf /opt/SherpaOrchestrator_backup_*

Problemas posibles durante la actualización#

Problemas con la base de datos#

  • Verifique la corrección de la configuración en config.ini y phinx.php
  • Asegúrese de que el usuario de la base de datos tenga suficientes permisos
  • Verifique los registros de migraciones

Problemas con el servidor web#

  • Verifique la sintaxis de la configuración de Nginx: sudo nginx -t
  • Verifique los registros: /var/log/nginx/error.log
  • Verifique las rutas al socket de PHP-FPM

Problemas con WebSocket#

  • Verifique los registros de PM2: sudo pm2 logs Websockets
  • Verifique las dependencias de Node.js: npm list
  • Verifique la disponibilidad de los puertos

Reversión en caso de actualización fallida#

Si la actualización falla:

# Detenga todos los servicios
sudo pm2 stop all
sudo systemctl stop nginx php8.5-fpm

# Restaure desde la copia de seguridad
sudo rm -rf /opt/SherpaOrchestrator
sudo mv /opt/SherpaOrchestrator_backup_* /opt/SherpaOrchestrator

# Restaure los permisos
sudo chown -R www-data:www-data /opt/SherpaOrchestrator
sudo chmod -R 775 /opt/SherpaOrchestrator

# Inicie los servicios
sudo systemctl start php8.5-fpm nginx
cd /opt/SherpaOrchestrator/backend/app/websocket/
sudo pm2 start index.js --name "Websockets"

Recomendaciones para la actualización#

  1. Siempre haga copias de seguridad antes de la actualización
  2. Pruebe la actualización en un entorno de prueba, si es posible
  3. Actualícese en horas no laborables para minimizar el tiempo de inactividad
  4. Documente el proceso de actualización para su equipo
  5. Verifique los registros después de la actualización en busca de errores