Magento2

Magento2.1が出て少し時間が経ち、またMagento2.0環境がいつの間にか動かなくなっていたという不毛な事態を放置していたのですが、Magento2系の検証を行う必要もあったため、一からMagento2.1をインストールしてみました。

インストールしたMagento2.1環境(日本語環境未適用)

しかしこれがまたなかなかうまくいかず、罠と思われるようなインストーラの出来栄えもあり、一時はMagento2.1は動かない、と結論づけしようと思いましたが、なんとか動かすことができるようにはなりました。
Magento2の出来栄えはまだまだMagento1系の安定性には届かなそうですね。

それでもMagento2.1を動かしたいという方向けに、はまった罠や解消法を9つか案内します。英語情報を探し回ると見つかるのですが、日本語での情報がない場合がほとんどなので、諦められた方も多いのではないでしょうか。
※ この例はNginxを使用してインストールした際に生じるケースが多いので、Apache Http Serverであれば結構すんなりいくと思います。

必要なPHPモジュール

Magento1.xと比べ幾つかさらに多くのPHPモジュールが必要になっています。
しかしこれはMagento2.1のインストーラの画面で不足分を確認できるので比較的わかりやすいのですが、リストしておきます。

  • bc-math(Enterprise Editionのみ必要)
  • curl
  • gdかImageMagick 6.3.7以降、または両方
  • intl
  • mbstring
  • mcrypt
  • mhash
  • openssl
  • PDO/MySQL
  • SimpleXML
  • soap
  • xml
  • xsl
  • zip

PHP7を使用する場合は以下も必要

  • json
  • iconv

 

インストーラの罠

Magento2をNginx環境で動かす場合、Magentoのドキュメントルートにあるnginx.conf.sampleファイルをバーチャルホストの設定ブロックなどでを読み込めば非常に簡単にNginxのコンフィグ設定を適用することができるのですが、これに罠があります。

まずインストーラの画面が出てきません。28行目あたりに

root $MAGE_ROOT/pub;
この記載がありますが、これを、
root $MAGE_ROOT;
に直すとインストールまで完了することができます。しかしインストールが終わった後に再度
root $MAGE_ROOT/pub;
こちらに戻さなければCSSが全く当たっておらずJSも動かない、実質まともに動かないMagento2.1環境になりますので、Magento2.1のインストール後にCSSが効いていない画面がでてきてしまった場合は、これを試してください。

公式のインストールドキュメントにもこの件の記載が漏れていますが、Nginxユーザが多いので今必死になって修正しているところではないでしょうか。

php.iniの設定

これもインストーラが立ち上がった後にチェックができる項目ですが、php.iniのなかで、

always_populate_raw_post_data = -1
としておく必要があります。

インストールできない場合のその他の可能性

WordPressのように回答したファイルさえ置いておけばインストールができるわけではないため、ディレクトリやファイルのパーミッションを正しく修正しておく必要があります。これもインストール画面が立ち上がれば確認できますが、chmodコマンドに再起的に適用する"-R"オプションをつけないとこのチェックをクリアできないといったところまでは親切に確認してくれるものではないので、どうしてもこのチェックをクリアできない場合は、対象のディレクトリに対して"-R"をつけてパーミッションを変更してください。

またセッションを書き込むディレクトリに対し、Nginxの場合はオーナーをnginxにしないといけないといったところでインストーラがこけることもあります。

Magento1.xのインストールはもっと簡単でしたが、変なハードルが上がっているのがMagento2.1のインストールです。
このままの状況では変な話Windows XPのようにMagento1.xが使用され続け、来るMagento1.9.2のセキュリティパッチのサポートが切れてからようやくMagento2系の導入やアップデートが進むのではないかとすら思います。もしくは有志によってMagento1.9のアップデートが継続されていくかもしれません。

テーマもそうですが、なんといってもMagento1.xに用意されていた膨大な超強力なエクステンションがMagento2で動かなくなってしまうのが痛いですよね。
Magentoの魅力はエクステンションにもあるわけですのでこれは非常に重要な問題です。

なおMagento2.0では致命的なパフォーマンスの問題がありましたが、Magento2.1では解消されたようでわりとサクサク動いています。
Magentoを使用してECサイト構築を提供する当社としては、今後もアップデートの検証とレビューを継続していきたいと思います。