Magento2がリリースされてはや半年。
日本語コミュニティやそれ以外の場所でMagento2のインストールに挑戦した人の声を見かけるようになりました。
その中で目立つのが「インストールがうまくいかない」という声です。
Magento1.xの時もそれなりにインストールで躓く人が多かったのですが、Magento2はさらに躓く方が多いように思います。

このエントリではMagento2が要求するシステム構成を改めて整理したうえで、インストールを成功させるために何が必要なのかを解説します。

Magento2が要求するシステム構成とは

これまで何度か取り上げていますが、Magento2が要求するシステム構成は以下のとおりです。

Apache

2.2 / 2.4
mod_rewriteが使えること
.htaccessによる設定の上書きができること

Nginx

1.8以降

PHP

5.5.22以降 / 5.6.x / 7.0.2以降
※7.0.2はMagento2.0.1以降でサポート

PHPエクステンション

  • bc-math (Enterprise Editionのみ)
  • curl
  • gd または ImageMagick 6.3.7以降
  • intl
  • mbstring
  • mcrypt
  • mhash
  • openssl
  • PDO/MySQL
  • SimpleXML
  • soap
  • xml
  • xsl
  • zip
  • PHP 7のみ
    • json
    • iconv

MySQL

5.6.x 

最近のLinuxディストリビューションでは、比較的新しいPHPバージョンが公式あるいは公式に近いパッケージとして配布されています。
Magentoの公式ドキュメントサイトでも、UbuntuCentOSについて解説されているので、まずこれらを読んでみることが必要です。 

もちろんMagento2のインストーラーはインストール時に環境チェックを行いますが、その前段階でインストール先の環境が上記の要件が満たされたものであるかを確認することは必要でしょう。

陥りがちなトラブル

それではここで陥りがちなトラブルについて幾つか解説したいと思います。

MySQLのバージョンが古い

Magento2はMySQL 5.6のみをサポートしています。
MySQL 5.5以前のバージョンでは動作しません。また、MySQL 5.7についてもサポート外です。

PHPのエクステンションが不足している

インストール時にチェックされますが、環境によってはPHPのエクステンション・パッケージが不足するケースがあります。
もし、お使いの環境で管理者権限を行使することが許可されていない場合は、管理者に不足しているエクステンションのインストールを依頼する必要があります。
共用レンタルサーバなどで設定変更が難しい場合は、別のサービスに乗り換えることも検討したほうが良いでしょう。

PHPに割り当てられているメモリが不足している

環境にもよりますが、512MBは割り当てたいところです。
128MB程度しか割り当てられていない環境を時折見かけることがあり、Magento2のプログラムを実行している途中でメモリ不足による処理停止が起きることがあります。

.htaccessで調整できるのであれば問題はないですが、Nginx + PHP-FPMの場合は php.iniを修正しなければならないので、少し面倒かもしれません。

PHPの設定が正しくない

よく見られる現象として、

  • Date/Timezoneの設定がされていない
  • mbstring周りの設定が正しくない
  • max_execution_timeなどの実行時間設定が正しくない
  • Xdebugがインストールされている場合に、xdebug.max_nesting_loopの値が適切でない

ということがあります。
往々にして標準のままのPHPの設定だとうまくいかないことがありますので、必要に応じてパラメータを調整する必要があるでしょう。

(Apacheの場合)mod_rewriteがインストールされていない・有効でない

あまり見かけない現象ですが、mod_rewriteがインストールされていない環境や、インストールされていても有効になっていない環境があるようです。
Magento1.xも2も、動作にはmod_rewriteが不可欠なので、インストールされていない場合は管理者にインストールと有効化を依頼するか、mod_rewriteが使える環境に移転する必要があるでしょう。

(Apacheの場合).htaccessによる設定の上書きが許可されていない

セキュリティあるいはパフォーマンスの観点で、.htaccessによるPHP設定の上書きや、mod_rewriteによるURL書き換えの設定が行えない環境があるようです。
このような環境ではMagentoを動作させることができないので、別のサービスを利用したほうが良いでしょう。

ディレクトリ・ファイルに対する権限が適切でない

ApacheやNginx、PHP-FPMを実行しているLinux上のユーザーと、ディレクトリ・ファイルの所有者が異なる場合、Magentoが作成するファイルやディレクトリがうまく作成できないことがあります。
あるいは権限が不足するために作成したファイルがブラウザからアクセスできないという現象が起きます。

WebサーバーやPHP-FPMの実行ユーザーが、Linuxのログインユーザーと同じか近しい権限を持つことは、セキュリティ面で問題視されることがあるかもしれません。
ここはサーバー管理者や組織内のセキュリティ指針に沿って調整をして頂く必要があると思います。

サーバーの性能が不足している

Magento2はMagento1.xよりもサーバー性能が要求されます。
Magento1.xが快適に動作していた環境であっても、Magento2を動かしてみるとあまり快適でなかったということは十分にありえます。

特に共用レンタルサーバでPHPがCGIモードで動作しているような環境ではそれ以外にも様々な制約が掛けられている事があります。
Magento用を謳っているサービスであれば問題はないかもしれませんが、そうでない共用レンタルサーバにインストールするのはやめておいたほうがよいでしょう。

ファイルが全てアップロードされていない

FTPやSFTPツールを用いてファイルをアップロードされる方が多いとは思いますが、これらのツールでアップロードした場合に、アップロード漏れが起きる可能性があります。

すべてアップロードしたつもりでインストールをしようとすると、

  • ファイルが読み込めない
  • 画面が表示されない

といった現象が起きることがあります。

例えば.htaccessがアップロードされていないですとか、転送途中でエラーが起きて、幾つかのファイルだけスキップされたとか。
そういう現象が起きえます。

最も安全なのはzipやtar.gzのままサーバーにアップロードし、サーバー上で展開することです。
これならファイルのアップロード漏れはほぼ起きないでしょう。

それでもうまくいかない場合は

  • ファイルは正しく全てアップロードできている
  • 環境周りの条件も全て満たしている

という状態であっても、インストールがうまくいかないケースはありえます。
何故かブラウザではうまくいかない環境というのが少なからず存在しており、そのような場合はコマンドからインストールするとうまくいくかもしれません。

コマンドによるインストール

Magentoはコマンドからインストールができます。
例えば以下のようにMagentoのソースを配置したディレクトリでコマンドによるインストーラーを実行すると、Magentoをインストールできます。

php bin/magento \
setup:install \
--cleanup-database \
--db-host=<データベースホスト名> \
--db-name=<インストールするデータベース名> \
--db-user=<データベースユーザー名> \
--db-password=<データベースユーザーのパスワード> \
--backend-frontname=admin \
--base-url=http://<ホスト名>/ \
--language=ja_JP \
--timezone=Asia/Tokyo \
--currency=JPY \
--admin-lastname=Admin \
--admin-firstname=Admin \
--admin-email=<管理者> \
--admin-user=<管理者ID> \
--admin-password=<管理者パスワード> \
--use-secure=0 \
--use-rewrites=1

Magento2に対応しているサーバーを利用する

海外のサービスが多いですが、Magento2を初期インストールしてくれるサーバーがいくつかあります。
インストールがうまくいかない場合はこれらのサービスを使うのも手です。

ただし、海外のサービスの場合、日本語でのサポートが受けられないことがあります。

技術者に依頼してインストールしてもらう

どうしてもうまくいかない場合は、Magentoに詳しい技術者に依頼するのも手です。
費用は相応にかかってしまいますが、うまく行かなくて悩むよりは良いでしょう。

もちろん弊社でも受け付けておりますので、お問い合わせください。