Atualizar OpenDataBio
4 minute read
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
- Leia
UPGRADES_NOTES.mde as notas da versão de destino. Anote todos os testes preliminares e comandos pós-migração antes de começar. - 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
- Compare as configurações atuais com os modelos/configurações da versão de destino:
.envcom.env.example(incluindoASSET_URL)- Configuração do Supervisor (
/etc/supervisor/conf.d/opendatabio-worker.confou equivalente no contêiner) - Configuração do PHP (
php.inide CLI e FPM/Apache)
- Planeje uma janela de manutenção para o ambiente de produção.
Atualização (instalação Apache ou nginx)
- Coloque a aplicação em modo de manutenção:
cd /home/odbserver/opendatabio
php artisan down
- Atualize o código-fonte:
git fetch --tags
git checkout <target-tag-or-branch>
- Instale as dependências e execute as migrações:
composer install --no-dev --optimize-autoloader
php artisan migrate:status
php artisan migrate --force
- Execute, na ordem documentada, os comandos pós-migração indicados no
UPGRADES_NOTES.mdda 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. - Recompile os assets do frontend e do Livewire após mudanças no
.env(obrigatório quandoASSET_URLmudar):
sh scripts/build-assets.sh
- 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.
- 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.
- 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.
- 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
- 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
- Execute dentro do contêiner da aplicação, na ordem documentada, os comandos
pós-migração do
UPGRADES_NOTES.mdda versão de destino e acompanhe os UserJobs enviados por eles. - 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
- 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:
- Mantenha o modo de manutenção ativo.
- Restaure o banco, o
.enve o backup correspondente destorage/app. Os registros do banco e os arquivos das versões de datasets devem ser restaurados como um único snapshot. - Retorne para a tag estável anterior.
- Reinstale as dependências/reconstrua os contêineres e valide os logs antes de
php artisan up.