Atualizar OpenDataBio

Instruções seguras para atualizar instalações do OpenDataBio

Use esta página para a sequência comum de implantação. Antes de atualizar, leia o arquivo UPGRADES_NOTES.md da versão de destino do OpenDataBio. Ele é a fonte oficial para requisitos, permissões de armazenamento, migrações, preenchimentos e comandos de reparo específicos da versão; essas instruções não são repetidas aqui.

Antes de começar

  1. Leia UPGRADES_NOTES.md e as notas da versão de destino. Anote todos os testes preliminares e comandos pós-migração antes de começar.
  2. Faça backup de pelo menos:
    • Dump do banco de dados
    • .env
    • Toda a árvore storage/app, incluindo mídias, exportações geradas e os arquivos persistentes das versões de datasets
  3. Compare as configurações atuais com os modelos/configurações da versão de destino:
    • .env com .env.example (incluindo ASSET_URL)
    • Configuração do Supervisor (/etc/supervisor/conf.d/opendatabio-worker.conf ou equivalente no contêiner)
    • Configuração do PHP (php.ini de CLI e FPM/Apache)
  4. Planeje uma janela de manutenção para o ambiente de produção.

Atualização (instalação Apache ou nginx)

  1. Coloque a aplicação em modo de manutenção:
cd /home/odbserver/opendatabio
php artisan down
  1. Atualize o código-fonte:
git fetch --tags
git checkout <target-tag-or-branch>
  1. Instale as dependências e execute as migrações:
composer install --no-dev --optimize-autoloader
php artisan migrate:status
php artisan migrate --force
  1. Execute, na ordem documentada, os comandos pós-migração indicados no UPGRADES_NOTES.md da versão de destino. Alguns comandos enviam UserJobs em segundo plano; mantenha a aplicação em manutenção e acompanhe-os até o fim quando as notas assim exigirem.
  2. Recompile os assets do frontend e do Livewire após mudanças no .env (obrigatório quando ASSET_URL mudar):
sh scripts/build-assets.sh
  1. Limpe o cache e reinicie os workers:
php artisan optimize:clear
php artisan config:cache
php artisan queue:restart
systemctl restart supervisor.service
# Reinicie o servidor web e o PHP-FPM conforme a sua instalação.
  1. Verifique a aplicação, os workers, os logs e as operações citadas nas notas de atualização; depois coloque a aplicação online novamente:
php artisan up

Atualização (instalação Docker)

Os comandos abaixo são para o perfil de produção (docker-compose.prod.yml e .env.production). Para o perfil de desenvolvimento com bind mounts, execute make docker-init somente quando desejar intencionalmente um ambiente de desenvolvimento.

  1. Atualize o código-fonte e revise as configurações:
cd opendatabio
git fetch --tags
git checkout <target-tag-or-branch>

Compare .env.production com .env.production.example, sem substituir a chave da aplicação nem os segredos existentes.

  1. Coloque a aplicação atual em manutenção e construa as novas imagens:
docker compose --env-file .env.production -p odb-prod -f docker-compose.prod.yml exec -T -u www-data laravel php artisan down
make build-prod
  1. Inicie o novo container da aplicação e execute as migrations:
docker compose --env-file .env.production -p odb-prod -f docker-compose.prod.yml up -d mysql redis laravel
docker compose --env-file .env.production -p odb-prod -f docker-compose.prod.yml exec -T -u www-data laravel php artisan migrate:status
docker compose --env-file .env.production -p odb-prod -f docker-compose.prod.yml exec -T -u www-data laravel php artisan migrate --force
  1. Execute dentro do contêiner da aplicação, na ordem documentada, os comandos pós-migração do UPGRADES_NOTES.md da versão de destino e acompanhe os UserJobs enviados por eles.
  2. Atualize os caches e recrie nginx e os workers. As dependências do Composer e os assets do frontend já estão incluídos nas imagens de produção:
docker compose --env-file .env.production -p odb-prod -f docker-compose.prod.yml exec -T -u www-data laravel php artisan optimize
docker compose --env-file .env.production -p odb-prod -f docker-compose.prod.yml up -d --force-recreate nginx supervisord
  1. Valide e retire a aplicação do modo de manutenção:
docker compose --env-file .env.production -p odb-prod -f docker-compose.prod.yml exec -T -u www-data laravel php artisan locales:audit
docker compose --env-file .env.production -p odb-prod -f docker-compose.prod.yml exec -T -u www-data laravel php artisan up
docker compose --env-file .env.production -p odb-prod -f docker-compose.prod.yml ps

Variáveis de ambiente

Para Apache/nginx, compare .env com .env.example. Para Docker de produção, compare .env.production com .env.production.example. Siga UPGRADES_NOTES.md para variáveis cujo valor ou significado mudou; confira APP_FORCE_HTTPS e ASSET_URL.

Estratégia de rollback

Se algo falhar depois das migrações:

  1. Mantenha o modo de manutenção ativo.
  2. Restaure o banco, o .env e o backup correspondente de storage/app. Os registros do banco e os arquivos das versões de datasets devem ser restaurados como um único snapshot.
  3. Retorne para a tag estável anterior.
  4. Reinstale as dependências/reconstrua os contêineres e valide os logs antes de php artisan up.