Magento2本体アップグレード(Upgrade)操作手順

Magento2本体プログラムのバージョン更新の手順について紹介します。
AdobeCommerce公式ドキュメントではMagento2本体プログラムのバージョン更新操作をする事をアップグレード(Upgrade)という言葉を使っています。
本記事の手順に関して下記ページを参考にしています。

なお、Magentoの本体プログラムのバージョン更新は慎重に対処することをおすすめします。公開運用中の環境に対して事前検証テストせずアップグレードしてしまうと予期せず不具合が発生して最悪ストア公開・商品販売ができなくなります。公開運用中の構成データをコピーしたテスト検証環境を用意して、そこで問題ないかきちんと事前テスト確認してから対処すべきです。

手順

操作の流れとして、ソースコードならびにデータベースの更新中にアプリ内の処理が実行されてしまうと問題なので、最初にWebリクエスト処理、定時実行Cron処理が実行されない状況に設定変更。その後アップグレード処理を実行。最後に元の状態に戻す。といった流れになります。

処理遮断:設定変更

[Step.1] Magentoをメンテナンスモードを有効に切り替えます。
メンテナンスモードを有効にすると、フロントエンド、バックエンド共にWebページは表示されなくなります。

$ su - magento_user
$ cd /path/to/magent/
$ bin/magento maintenance:enable

[Step.2]定時実行Cron処理の停止
crontabの登録を一時的にコメントアウトして停止します。

$ su - magento_user
$ crontab -e

冒頭に#文字を追加してコメントアウト化

$ #~ MAGENTO START 6019fce397ec21cc8216f4896dc1b3d425330dbcc0df794edf6f170e83d5dddc
* * * * * /usr/bin/php8.1 /path/to/magento/bin/magento cron:run 2>&1(省略)
#~ MAGENTO END 6019fce397ec21cc8216f4896dc1b3d425330dbcc0df794edf6f170e83d5dddc
$ #~ MAGENTO START 6019fce397ec21cc8216f4896dc1b3d425330dbcc0df794edf6f170e83d5dddc
#* * * * * /usr/bin/php8.1 /path/to/magento/bin/magento cron:run 2>&1(省略)
#~ MAGENTO END 6019fce397ec21cc8216f4896dc1b3d425330dbcc0df794edf6f170e83d5dddc

[Step.3]consumersグループのcron処理を実行してメッセージキューを強制的に消化させます。

$ bin/magento cron:run --group=consumers

アップグレード処理

Composerを使ってソースコードの更新、その後Magentoのアップグレード処理(=バージョンアップに伴うDB更新を行います)
[Step.4]ソース更新処理中のトラブルに備えて、Composerソース管理定義ファイル composer.json をバックアップしておきます。

$ cp composer.json composer.json.bak

[Step.5]リポジトリで現在提供されているMagentoバージョンを確認します。
例)2.4系での提供バージョン確認したい場合のコマンド。
composer show magento/product-community-edition 2.4.* --available | grep -m 1 versions
以下の例の場合2.4.5が最新であることが読み取れます。

$ composer show magento/product-community-edition 2.4.* --available | grep -m 1 versions
versions : * 2.4.5, 2.4.4-p1, 2.4.4, 2.4.3-p3, 2.4.3-p2, 2.4.3-p1, 2.4.3, 2.4.2-p2, 2.4.2-p1, 2.4.2, 2.4.1-p1, 2.4.1, 2.4.0-p1, 2.4.0

[Step.6]Composerで指定のバージョンでソースコードを更新します。
2.4.5を指定する場合
下記コマンドで composer.json の内容を更新

$ composer require-commerce magento/product-community-edition 2.4.5 --no-update

アップデート処理実行( composer.json に従いソースコードが更新されます )

$ composer update

[Step.7]Magentoのupgradeコマンドを実行して、バージョンアップに伴う更新処理を実行します。
(※)メインプログラムのバージョンアップに伴うDB内容の更新処理も含まれる、安全をとるならばこのコマンドの前にDBのバックアップをとっておくことをおすすめします。

ソースコードFILEの上書き、追加等発生しているのでパーミッションを再度設定しておきます。

$ $ sudo chown -R magento_user:www-data .
$ find . -type d -exec chmod 770 {} \;
$ find . -type f -exec chmod 660 {} \;
$ chmod 770 bin/magento


次にキャッシュファイルを削除しておきます。

$ rm -rf var/cache/*
$ rm -rf var/page_cache/*
# rm -rf generated/code/*

upgradeコマンドを実行

$ bin/magento setup:upgrade

upgrade後、コンパイルとコンテンツデプロイをします。

$ bin/magento setup:di:compile
$ bin/magento setup:static-content:deploy -f
$ bin/magento setup:static-content:deploy ja_JP -f

処理再開:設定変更

[Step.8] 定時実行Cron処理の再開(元に戻す)

#~ MAGENTO START 6019fce397ec21cc8216f4896dc1b3d425330dbcc0df794edf6f170e83d5dddc
#* * * * * /usr/bin/php8.1 /path/to/magento/bin/magento cron:run 2>&1(省略)
#~ MAGENTO END 6019fce397ec21cc8216f4896dc1b3d425330dbcc0df794edf6f170e83d5dddc
#~ MAGENTO START 6019fce397ec21cc8216f4896dc1b3d425330dbcc0df794edf6f170e83d5dddc
* * * * * /usr/bin/php8.1 /path/to/magento/bin/magento cron:run 2>&1(省略)
#~ MAGENTO END 6019fce397ec21cc8216f4896dc1b3d425330dbcc0df794edf6f170e83d5dddc

[Step.9] Magentoをメンテナンスモードを無効に切り替えます。(元に戻す)

$ bin/magento maintenance:disable

上記手順実行後、フロントエンド・バックエンドWebページが正常に表示され、バックエンドLogin後にページ右下にバージョンが表示されているはずです。

Magento管理画面バージョン表示エリア