前提
・本番サーバー(1台)へのデプロイをこんな感じのシェルスクリプトで行っている。
#!/usr/bin/env bash
git fetch origin
git reset --hard origin/master
/usr/local/bin/composer update --no-interaction --no-dev
php artisan migrate --force
php artisan route:cache
php artisan config:cache
・.envはサーバー上で直接変更しているか自動デプロイとは別でアップしている。
・なんらかのデプロイツールを使い.envを毎回作成してる場合は今回の問題は起こらない。
問題
この状態でなにが起こるかというと.envを変更しても反映されない。
原因はphp artisan config:cache
でキャッシュしてるから。
例えばAPP_KEY
を変更したとしてもbootstrap/cache/config.php
が優先されるので無効。
対処
.envを変更した後にphp artisan config:cache
で解決。
感想
最近はAWS Elastic Beanstalkばかりだったので気付かなかった…。
ebだと管理画面から環境変数で設定して念のためさらに.envを毎回作成してる。
環境変数変えると必ず再デプロイなのでそこでconfig:cache
もされて問題発生しなかった。
手元からgit push→GitLab→CIでテスト→eb deployは本当に楽。
一度だけLaravelプロジェクトを共有サーバーにFTPでアップという原始時代みたいなこともやっただけど今更これはもう無理…。