Processo de atualização do Sherpa Orchestrator (versão local)#

Informações gerais sobre a atualização#

A atualização do Sherpa Orchestrator inclui os seguintes componentes:

  • Atualização dos arquivos do aplicativo
  • Atualização da estrutura do banco de dados
  • Atualização das dependências do Node.js (se necessário)
  • Reinício dos serviços

Backup antes da atualização#

Sempre crie backups antes da atualização!

Backup do banco de dados#

# Crie um dump do banco de dados
mysqldump -u root -p orchestrator > orchestrator_backup_$(date +%Y%m%d_%H%M%S).sql

# Crie um dump do banco de dados de arquivo (se utilizado)
mysqldump -u root -p orchestrator_archive > orchestrator_archive_backup_$(date +%Y%m%d_%H%M%S).sql

Backup dos arquivos de configuração#

# Crie um backup da configuração
cp -r /opt/SherpaOrchestrator/backend/config /opt/SherpaOrchestrator/backend/config_backup_$(date +%Y%m%d_%H%M%S)

# Crie um backup dos certificados SSL
cp -r /opt/SherpaOrchestrator/backend/config/certs /opt/SherpaOrchestrator/backend/config/certs_backup_$(date +%Y%m%d_%H%M%S)

Backup dos logs e dados#

# Crie um backup dos logs
cp -r /opt/SherpaOrchestrator/backend/logs /opt/SherpaOrchestrator/backend/logs_backup_$(date +%Y%m%d_%H%M%S)

Download dos arquivos de atualização#

# Vá para o diretório /opt e baixe o arquivo como na etapa de preparação
cd /opt

# Baixe o arquivo de atualização
orchestrator_local_update_*.tgz

Parar serviços antes da atualização#

# Pare os processos do PM2
sudo pm2 stop all
sudo pm2 delete all

# Pare o Nginx
sudo systemctl stop nginx

# Pare o PHP-FPM
sudo systemctl stop php8.5-fpm

# Pare o MySQL/MariaDB (opcional, para parada completa)
sudo systemctl stop mariadb

Criar um backup da instalação atual#

# Renomeie o diretório atual
sudo mv /opt/SherpaOrchestrator /opt/SherpaOrchestrator_backup_$(date +%Y%m%d_%H%M%S)

Descompactar e instalar a atualização#

# Crie um novo diretório
sudo mkdir /opt/SherpaOrchestrator

# Encontre e descompacte o arquivo de atualização (a versão mais recente é escolhida automaticamente)
tar -xvzf "$(ls orchestrator_local_update_*.tgz | sort -V | tail -n 1)"


# Vá para o diretório do aplicativo
cd /opt/SherpaOrchestrator

# Torne os scripts executáveis
sudo find ./*.sh -type f | xargs chmod +x

Restaurar a configuração#

# Restaure os arquivos de configuração do backup
sudo cp -r /opt/SherpaOrchestrator_backup_*/backend/config/* /opt/SherpaOrchestrator/backend/config/

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

# Defina as permissões corretas
sudo chown -R www-data:www-data /opt/SherpaOrchestrator
sudo chmod -R 775 /opt/SherpaOrchestrator

Importante: Após a restauração, verifique se as senhas do banco de dados em backend/config/phinx.php são as mesmas que em config.ini (parâmetro 'pass' na seção environments). Caso contrário, as migrações durante a atualização do banco de dados falharão.

Atualização do banco de dados#

# Verifique as configurações de conexão em phinx.php (as senhas devem coincidir com config.ini)
sudo nano backend/config/phinx.php

# Execute as migrações do banco de dados
sudo ./migrate.sh

Atualização das dependências do Node.js (se necessário)#

# Vá para o diretório websocket
cd /opt/SherpaOrchestrator/backend/app/websocket/

# Atualize as dependências
sudo npm install

# Volte para o diretório principal
cd /opt/SherpaOrchestrator

Iniciar serviços após a atualização#

# Inicie o MySQL/MariaDB (se parou)
sudo systemctl start mariadb

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

# Inicie o Nginx
sudo systemctl start nginx

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

# Volte para o diretório principal
cd /opt/SherpaOrchestrator

Verificação de funcionamento após a atualização#

# Verifique o status dos serviços
sudo systemctl status nginx
sudo systemctl status php8.5-fpm
sudo systemctl status mariadb

# Verifique os processos do PM2
sudo pm2 list
sudo pm2 logs Websockets --lines 20

# Verifique a disponibilidade da interface web
curl -I https://your-domain-or-ip

# Verifique os logs do Nginx em busca de erros
sudo tail -f /var/log/nginx/error.log

Limpeza após atualização bem-sucedida#

# Após testes bem-sucedidos, remova os backups antigos
# (execute apenas após confirmar a funcionalidade!)

# Remova os arquivos de atualização antigos
rm -f /opt/orch_local_update_*.tgz

# Remova os backups antigos (se tiver certeza da funcionalidade)
# rm -rf /opt/SherpaOrchestrator_backup_*

Possíveis problemas durante a atualização#

Problemas com o banco de dados#

  • Verifique a correção das configurações em config.ini e phinx.php
  • Certifique-se de que o usuário do banco de dados tenha permissões suficientes
  • Verifique os logs das migrações

Problemas com o servidor web#

  • Verifique a sintaxe da configuração do Nginx: sudo nginx -t
  • Verifique os logs: /var/log/nginx/error.log
  • Verifique os caminhos para o socket do PHP-FPM

Problemas com WebSocket#

  • Verifique os logs do PM2: sudo pm2 logs Websockets
  • Verifique as dependências do Node.js: npm list
  • Verifique a disponibilidade das portas

Rollback em caso de atualização malsucedida#

Se a atualização falhar:

# Pare todos os serviços
sudo pm2 stop all
sudo systemctl stop nginx php8.5-fpm

# Restaure do backup
sudo rm -rf /opt/SherpaOrchestrator
sudo mv /opt/SherpaOrchestrator_backup_* /opt/SherpaOrchestrator

# Restaure as permissões
sudo chown -R www-data:www-data /opt/SherpaOrchestrator
sudo chmod -R 775 /opt/SherpaOrchestrator

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

Recomendações para atualização#

  1. Sempre faça backups antes da atualização
  2. Teste a atualização em um ambiente de teste, se possível
  3. Atualize em horários de menor movimento para minimizar o tempo de inatividade
  4. Documente o processo de atualização para sua equipe
  5. Verifique os logs após a atualização em busca de erros