firefly-iiiのアップグレードを試みたところ、失敗。その記録と原因についてメモを残します。
環境
- Ubuntu 24.04
- Apache 2.4
- MySQL 8.0.39
- PHP 8.3.16
- Composer 2.7.9
- firefly-iii 6.1.5
- → 6.2.5にアップグレードを試みた
試した手順
- DBのバックアップを取得します。
- 最新版のパッケージをダウンロードして展開します。
- 利用中のfirefly-iiiを待避させます。
- 待避させたfirefly-iiiからファイル/ディレクトリをコピーします。
- アップグレードを行います。(失敗)
DBのバックアップ
cd /hoge && pwd
任意の作業ディレクトリに移動します。
mysqldump --no-tablespaces --single-transaction -u username -h localhost -p database_name > DB_Backup.$(date +%Y%m%d).sql
usename
、database_name
、及びDB_Backup
は自分の環境に合わせます。
head -100 DB_Backup.$(date +%Y%m%d).sql
バックアップができていること、平文でSQLが読めることを確認します。
パッケージ取得
cd /hoge && pwd
任意の作業ディレクトリに移動します。
wget https://github.com/firefly-iii/firefly-iii/releases/download/v6.2.5/FireflyIII-v6.2.5.zip
sudo chown www-data:www-data FireflyIII-v6.2.5.zip
ls -l FireflyIII-v6.2.5.zip
ファイルがあること、所有者がWebアプリ実行ユーザ(www-data)であることを確認します。
アップデート前のfirefly-iiiを待避
sudo mv /home/www-data/firefly-iii /home/www-data/firefly-iii.$(date +%Y%m%d)
自分の環境に合わせます。firefly-iiiがインストールされているディレクトリをまるごと移動します。
ls -ld /home/www-data/firefly-iii
→ ディレクトリが無いこと
ls -ld /home/www-data/firefly-iii.$(date +%Y%m%d)
→ ディレクトリがあること
アップデートパッケージの解凍と配置
sudo -u www-data unzip -o /hoge/FireflyIII-v6.2.5.zip -x "storage/*" -d /home/www-data/firefly-iii
/hoge
は先ほど取得したパッケージがある場所です。アップデート前と同じ位置、名前に解凍します。
ls -l /home/www-data/firefly-iii
ファイル一式があり、www-dataが所有者になっていること
アップデート前のファイル・ディレクトリをコピー
cd /home/www-data/firefly-iii.$(date +%Y%m%d) && pwd
自分の環境に合わせます。
sudo -u www-data cp -pi .env /home/www-data/firefly-iii/.env
コピー先のディレクトリは自分の環境に合わせます。
ls -l /home/www-data/firefly-iii/.env
ファイルがあることを確認します。
sudo -u www-data cp -pir storage /home/www-data/firefly-iii/
ls -l /home/www-data/firefly-iii/storage
ファイルやディレクトリがあることを確認します。
アップグレード → 失敗
cd /home/www-data/firefly-iii && pwd
先ほど展開したディレクトリに移動します。
sudo -u www-data php artisan migrate --seed
ここで失敗。以下のエラーが出ました。
Composer detected issues in your platform:
Your Composer dependencies require a PHP version ">= 8.4.0". You are running 8.3.16.
PHP Fatal error: Composer detected issues in your platform: Your Composer dependencies require a PHP version ">= 8.4.0". You are running 8.3.16. in /home/www-data/firefly-iii/vendor/composer/platform_check.php on line 22
そのため、切り戻しを行います。
失敗したため切り戻し
cd /home/www-data && pwd
自分の環境に合わせます。
sudo rm -rf /home/www-data/firefly-iii
sudo mv /home/www-data/firefly-iii.$(date +%Y%m%d) /home/www-data/firefly-iii
ls -l /home/www-data/firefly-iii
ファイル一式があり、www-dataが所有者になっていること
切り戻し反映・確認
sudo systemctl restart apache2.service
systemctl status apache2.service
- アップデートを行ったfirefly-iiiサイトにブラウザでアクセスします。
- ログインできることを確認します。
- バージョンが上がっていることを確認します。
- 登録操作などができることを確認します。
失敗の要因
これは明白にして単純です。
リリースノートを確認していなかった
に尽きます。LAMP環境で動くからこそ、ミドルウェアのバージョン(この場合はPHP)の必要とするバージョンを確認していなかった自分の落ち度です。
v6.2.0のリリースノートに
Firefly III requires PHP 8.4.
と書かれていることを見落としていました。
切り戻しが迅速だった要因
「切り戻しを前提としていた手順」に助けられました。
させる二段構えにより、迅速な切り戻しが可能になりました。
結局のところ、
「自分の確認不足」から来るミスを「自分の確認不足を想定した手順」でカバーした形です。