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.iniephinx.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#
- Sempre faça backups antes da atualização
- Teste a atualização em um ambiente de teste, se possível
- Atualize em horários de menor movimento para minimizar o tempo de inatividade
- Documente o processo de atualização para sua equipe
- Verifique os logs após a atualização em busca de erros