Magento2のアップデート方法(動画の解説)

By |2019-01-19T14:16:11+09:002018年7月18日|Categories: Magentoの設定, Magentoバージョン|Tags: , , |

動画:Magento2.2.2 → 2.2.5へ Composerでアップデート

Magentoのアップデート全般については、Magento2アップデートをご参照ください。
また、アップデート前には、必ずバックアップをとるようにしてください。

1. Magento2のマイナーアップデートについて

先日2018年6月末にMagento2.2.5がリリースされたので、一週間ほどの検討後、2.2.3から2.2.5へのアップデートを行いました。
前バージョンの2.2.4はネットでの評判が良くなかったので、事実上スキップしました。2.2.5では、2.2.4で投入されたバグの大部分が修正されているようです。

私がMagento1からMagento2へ移行したのは、2017年の末、Magento2.2.1バージョンの時で、以後、2.2.1 → 2.2.2 → 2.2.3 → 2.2.5 とアップデートをしてきました。このように、2.2.x の x の部分の数字でのアップデートを、一般的に、Magento2の「マイナーアップデート」と呼びます。上の動画では、Composerを使い、Magento2.2.2から2.2.5へマイナーアップデートをしています。

基本的に最新バージョンを使うべきと思ってはいますが、実際のライブ環境でアップデートを実行すべきかどうかは、導入しているテーマやエクステンションの対応状況を見て、また、そのバージョンの評判なども念入りにチェックし、自分なりのタイミングを慎重に探るべきと考えています。
セキュリティ的には最新バージョンのリスクが一番小さいのかもしれませんが、アップデートの作業そのものに決して小さくはないリスクがあるので、そのバランスの見極めが大切になります。一般論ではなく、各自、自分のサイトの現実的な事情から最適な判断をしていく必要があるのだろうと思います。

2. Magento2アップデートのコマンド一覧

前置きが長くなりましたが、以下、ComposerによるMagento2のアップデート動画で入力したコマンドの一覧です。
コマンドは、すべてMagento2のルートディレクトリ(Magento2のインストールされている階層)で実行します。動画では、cd public_html/demo とMagento2のルートに移動しています。ご自身の環境により、ファイルパスは置き換えてください。

バージョン確認
php bin/magento --version

メンテナンスモードへ
php bin/magento maintenance:enable

Composerインストール(必要な場合)
curl -sS https://getcomposer.org/installer | php
php composer.phar

Magentoのキャッシュクリアと既存の生成ファイル削除
php bin/magento cache:clean
php bin/magento cache:flush
rm -rf pub/static/*
rm -rf var/di/* var/generation/* var/cache/* var/log/* var/page_cache/* var/view_preprocessed/pub/*
rm -rf generated/code/* generated/metadata/*

Composerのキャッシュクリア
php composer.phar clear-cache

Magentoアップデート
php composer.phar require magento/product-community-edition 2.2.5 --no-update
php composer.phar update
php bin/magento setup:upgrade
php bin/magento setup:di:compile
php bin/magento indexer:reindex
php bin/magento cache:clean
php bin/magento cache:flush

メンテナンスモード解除
php bin/magento maintenance:disable

上記コマンドは、冒頭がすべて php になっています。
しかし、動画では、php71 と入力しています。これは動画内の作業環境のデフォルトのphpがphp5.6バージョンなので、別にphp7.1のバイナリを指定しているためです。通常の共用サーバーでは、php のみのコマンドが一般的なので、この解説記事でも便宜的に php で表記しております。例えば、php71 bin/magento --version は、php bin/magento --version になります。
また、VPSやクラウドなどroot権限のある環境では、php ではなく、sudo コマンドの使用が一般的です。例えば、php bin/magento --version は、sudo bin/magento --version となります。さらに、同環境でComposerをグローバルにインストールしている場合、例えば、php composer.phar update は、sudo composer update となります。
コマンドの冒頭は、ご自身の環境により適宜読み替え/置き換えてください。ご不明な点は、先ずはお使いのサーバー会社にお問い合わせされることをおすすめいたします。

尚、コマンド作業がはじめての方は、先ずは「SSHアクセス」や「PuTTY 使い方」「ターミナル 使い方」などのワードで検索をし、コマンドラインの基本をおさえてください。日本語で検索して、わかりやすいサイトがたくさんヒットします。

それでは、各コマンドについて簡単な説明をいたします。

バージョン確認
php bin/magento --version
これは、文字通りMagento2のバージョンを確認するためのコマンドです。ご自身のMagento2のバージョンを確認するためには、Magento2の管理画面の右下にバージョン数が表示されているので、それを見ると分かります。ですので、アップデートのために、あえてこのコマンドを実行する必要はありません。今回はこの動画のために、アップデートの前後に確認の意味で実行しています。

メンテナンスモードへ
php bin/magento maintenance:enable
このコマンドで、Magento2をメンテナンスモードに切り替えることができます。ユーザーからのサイトへのアクセスは遮断されるので、本番環境の場合は事前にアナウンスをしておいてください。

Composerインストール(必要な場合)
curl -sS https://getcomposer.org/installer | php
php composer.phar
Composerが入っていない場合、このコマンドでComposerを新しくインストールしてください。Composerの有無については、次節の説明をご参照ください。
尚、二つ目のコマンドはインストールが正しくされたかどうかを確認するためのものなので、必ずしも必要なわけではありません。

Magentoのキャッシュクリアと既存の生成ファイル削除
php bin/magento cache:clean
php bin/magento cache:flush
rm -rf pub/static/*
rm -rf var/di/* var/generation/* var/cache/* var/log/* var/page_cache/* var/view_preprocessed/pub/*
rm -rf generated/code/* generated/metadata/*
上の二つのコマンドでMagento2のキャッシュをクリアします。また、rm ではじまるコマンドで、Magento2の pub/static var generated 以下のフォルダ内ファイルをすべて削除します。これにより、Magento2が生成している既存ファイルが消えるので、アップデート後に新しいファイルが自動生成されても、エラーとなりません。

Composerのキャッシュクリア
php composer.phar clear-cache
これは、すでにComposerの導入されている環境でMagento2をアップデートする際に必要となるコマンドです。Composerのキャッシュがサーバーに保存されていると、ダウンロード/インストールが正常に行われないケースが稀にあるので、念のため事前にキャッシュをクリアにしておきます。
このアップデート時にはじめてComposerをインストールする場合は、このComposerのキャッシュクリアは特に必要ではないので、とばしていただいても構いません。

Magentoアップデート
php composer.phar require magento/product-community-edition 2.2.5 --no-update
php composer.phar update
この二つのコマンドが、今回のアップデート動画のキモになります。
一つ目のコマンドで、composer.json ファイル内のMagento2のバージョン情報を、2.2.5 へ書き替えています。他のバージョンへのアップデートの際には、この数字を置き換えてください。--no-update というオプションは、文字通り「アップデートはしない」という意味で、アップデートのためのコマンドなのにアップデートしないようにさせているのは不思議なのですが、おそらく、ここで一息にMagentoをアップデートはさせず、つづく次のコマンドで、Composerで管理している他のライブラリと同時にアップデートをさせているのだろう、と私は理解しています。
動画で見ていただけるように、php composer.phar update のコマンド後に、新しいバージョンのライブラリが、vendor フォルダ以下にダウンロード/インストールされます。環境によってはダウンロードが開始するまで時間がかかることもありますので、そのままじっと待ってください。

php bin/magento setup:upgrade
php bin/magento setup:di:compile
php bin/magento indexer:reindex
php bin/magento cache:clean
php bin/magento cache:flush
上記のコマンドで、Magentoのデータベースの更新、コンパイル、indexの更新、キャッシュクリアを行っています。この一連のコマンドは、アップデート時に限らず、新しくエクステンションをインストールしたり、テーマをインストールしたりする際にも使う、Magento2の定番コマンドです。

メンテナンスモード解除
php bin/magento maintenance:disable
最後に、上記コマンドでメンテナンスモードを解除してください。

3. Composerのインストールについて

Composerでアップデートをするので、Composerが必要になります。
Magento2本体をインストールした時、はじめからComposerでMagento2をインストールしていれば、その環境にはすでにComposerが入っています。しかし、cPanelから1クリックでMagentoインストールしていたり、Zipファイルから手作業でインストールしていたりする場合は、アップデート前にComposerをインストールする必要があります。
今回の動画では、Composerのない環境でのアップデートを前提にしていますので、動画内でComposerのインストールも行っています。

共用サーバーをお使いで、ご自身の環境にComposerが入っているかどうか分からないという方は、FilezillaやFile Managerで、Magento2のルートからMagentoのファイル群をざっと見てください。
以下の画像のように、composer.json と composer.lock のファイルがあるのに、composer.phar というファイルが見当たらないのなら、その環境にComposerはインストールされていません。Composerがインストールされていなくても、composer.json と composer.lock の二つのファイルは(Magento2の本体ファイルに同梱されているので)元々存在します。Composerのインストールの有無は、composer.phar というファイルの有無でチェックしてください。

また、root権限のあるVPS等で、Compserがグローバルにインストールされているかどうかは、composer -v のコマンドで確認することができます。Composerがインストールされている環境であれば、Composerのバージョン情報が表示されます。

Composerインストール

4. Magento2のパーミッションについて

もう一点、アップデート前に確認しておくのは、パーミッションの設定です。
共用サーバーでMagento2をインストールしている際には、適切なパーミッションに自動で設定されているのが一般的ですが、VPSやクラウド環境では、ご自身でパーミッションを再確認する必要があります。
Magento2のパーミッションについては、公式ドキュメントFile systems access permissionsを見るのが一番信頼性が高いのですが、曖昧模糊とした表現で、これだけでは余計に混乱してしまうかもしれません。
具体的にどう設定すべきかについては、フォーラムサイトMagento 2 folder/file permissionsで論じられていますので、各自の環境にあわせてご参照ください。

ちなみに、パーミッションの設定が原因でアップデートに失敗すると、本来ダウンロード/インストールされるべきファイルがごっそり消失してしまうという事態に直面します。bin/magento のファイルも消えてしまうケースもあり、Magento2のすべてのコマンドが効かなくなります。つまり、サイトが壊れます。
この場合、応急処置としては、bin/magento ファイルをMagento2のオリジナルファイル群からコピー&アップロードをして、chmodコマンドで実行権限を与え、とりあえずコマンドラインだけは機能するように復旧します。その後、Magento2をいったん元のバージョンにダウングレードをして、すべてのフォルダ/ファイルを復活させます。そしてパーミッションの再チェックを行い、Composerのキャッシュをクリアします。
元のバージョンに戻すためには、ちょうどアップデートのコマンド php composer.phar require magento/product-community-edition 2.2.5 --no-update の部分のバージョン数を元のバージョン数 (例 2.2.2)に置き換えて実行してください。
道に迷ったら迷った地点まで戻るのが鉄則ですが、アップデートのトラブル時にも元に戻すのが王道になります。ただ、元に戻そうにも戻らないという状況もあり得ますので、そのような事態も想定し、バックアップは必ずとっておくようにしてください。

5. Magento2のモードについて

本番環境でMagento2がproductionモードになっている場合は、Magento2のアップデート前に、developerモードに変更をしてください。(*)
流れとしては、メンテナンスモードにした後、php bin/magento deploy:mode:set developer とdeveloperモード変更のコマンドを入力してください。そして、アップデート終了後(メンテナンスモード解除後)に、再度、php bin/magento deploy:mode:set production とproductionモードに戻してください。
Magento2のモードについては、Magento2のモード変換の記事をご参考にしてください。

(*)万一アップデートでエラーが発生すると、developerモードの場合、そのエラーメッセージがブラウザに表示されてしまうので、事前にテスト環境でアップデートが問題なくできることを確認してください。基本的にはdeveloperモードでのアップデートが推奨されますが、本番環境においては、念のためにproductionモードのままアップデートをしてもいいかもしれません。

Magento2アップデート

Magento2アップデート

Magento2の三つのアップデート方法、マイナーアップデートとメジャーアップデートの違い、アップデート前の準備や注意事項など、Magento2のアップデート全般について説明しています。

Magento2アップデート