このエントリはMagento Advent Calendar 2016の第1日目です。

2015年11月にMagento2がリリースされてはや1年以上経過しました。
既にMagento2.1がリリースされ、2.2やBtoB Editionの情報もちらほらと流れてくるようになっている今、そもそものインストール・セットアップで躓く人が予想外に多いので、2016年版のセットアップガイドをまとめておきたいと思います。

Magento2が動作する環境とは

Magento2を動作させるためには、公式のDevdocsに書かれている条件を満たす必要があります。
わかりやすく表にまとめましたので、参考にしてください。

OS

64ビットLinux

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以降でサポート
※5.5.xはMagento2.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 / 5.7.x
※5.7.xはMagento2.1.2以降でサポート

その他

 

  • cronが定義できること
  • sshあるいはコンソールによる操作ができること

 

日本語環境における問題点

公式ではRedHat Enterprise LinuxやCentOS(Amazon Linuxも)で動作すると書かれていますが、日本語環境では現時点では下表のように動作する環境が限られています。

OSバージョン 6.x 7.x
PHPバージョンと
パッケージ
5.6 Remi Remi
IUS IUS
epel - epel -
7.0 Remi Remi
IUS IUS
epel epel

この内容は「」と「CentOS6でMagento2用の環境を作る際の注意点」でお伝えした内容を一部更新したものです。
なお、既にこの問題点については、Magento公式に報告済みであり、改修に取り組んでいる途中であるということです。
将来的な改修によって問題が改修される可能性がありますので、あくまで上記の内容は2016年末時点のものとお考えください。

どんな環境で動かすのが適切なのか

Magento2はMagento1.xよりもより高いサーバー性能を要求します。
これまでの環境にいれたところ、動作しなかったというケースは多々あります。

また、共用レンタルサーバーへのインストールは、正式に対応を表明しているサービスのもの以外は避けるほうが良いでしょう。
Magento2の処理に伴うCPU負荷がサービスの不正利用と誤認される可能性が否定できず、より上位のプランへの移動を求められる事があるかもしれません。
(少なくともMagento1.xの時代には処理を途中で強制終了されてしまうケースがありました)

さて、Magento2を動かすための環境は以下のような性能を満たせば良いのではないかと思います。

CPU

最低でも2コア。4コア以上あるとなおよし。

メモリ

2GB以上。
MySQLを同じサーバー上で動作させるのであれば、4GB以上必要。 

ディスク

容量が多い方が良い。
HDDよりもSSDのほうが高速なので、できればSSD仕様の方が良い。

弊社の場合では、開発作業に使う仮想マシンのCPUやメモリに上記のような性能を満たす環境を用いています。
あまりに低性能な環境では作業が滞ってしまうからです。

環境構築について

環境を構築する際は、普通にOSをインストールします。
その後、WebサーバーやPHP、MySQLをセットアップしていきます。

特にPHPについてはLinuxディストリビューションによって異なります。
DevdocsにはCentOSとUbuntu Linuxの例が掲載されています。

とりあえず試すのであれば、上記のガイドに沿ってパッケージをインストールしていけばよいでしょう。
なお、それ以外のディストリビューションの場合は類似のパッケージか、ソースコードからインストールする必要があります。

ApacheかNginxか

弊社では開発環境ではApache。本番や検証環境ではNginxを使用しています。
Magento2のソース一式に含まれているNginxの設定ファイルは、Ubuntu Linux用には少し書き換えが必要なので、お使いの環境に合わせて調整して頂く必要があります。

Apacheをお使いの場合は.htaccessによるディレクトリ単位の設定変更ができるのであれば、さほど難しくはありません。
サーバー構築に不慣れな方は、Apacheのほうが扱いやすいかもしれません。

MySQL5.6か5.7か

Magento2.1.2以降ではMySQL5.7に正式対応しています。
パフォーマンスや今後のメンテナンスを考えると、MySQL5.7を使いたくなります。

MySQL5.7を使われる場合は、このメジャーバージョンで導入された新機能や設定をよく理解した上で設定を行う必要があります。
正しく設定ができていない環境の場合、Magentoが期待通りの挙動をしてくれない可能性があります。

ファイルの配置

さて、LinuxのインストールとWebサーバーやデータベースの準備ができたらいよいよMagentoのファイルをサーバー上に配置します。
Magento2の場合は3通りの方法があります。

  • アーカイブファイルをサーバーにアップロードし、サーバー上で展開して配置する
  • 全てのファイルを1つずつサーバーにアップロードして配置する
  • composerを使って配置する

前2つの方法は比較的古典的な方法です。
ただ、Magento2のようにファイル数やアーカイブファイルのサイズが大きいアプリケーションの場合は以下のような問題点があります。

  • Magento公式からファイルをダウンロードするのに時間がかかる
  • ダウンロードしたファイルをアップロードするのに時間がかかる
  • 展開したファイルをFTP/SFTPクライアントでアップロードするのに気が遠くなるような時間がかかる

そのため弊社では主にcomposerを用いたインストールをおすすめしています。
」で手順については説明していますので、参考にしてみてください。

インストール

ファイルが正しくサーバー上に配置できたら、いよいよインストールです。
インストーラー画面を使う場合は、「」を参考にしてください。
コマンドを使う場合は、「」の末尾にコマンドサンプルを掲載しています。

Cronジョブの設定

インストールが無事に終わったら、Cronジョブを設定しておきます。

* * * * * <path to php binary> <magento install dir>/bin/magento cron:run | grep -v "Ran jobs by schedule" >> <magento install dir>/var/log/magento.cron.log
* * * * * <path to php binary> <magento install dir>/update/cron.php >> <magento install dir>/var/log/update.cron.log
* * * * * <path to php binary> <magento install dir>/bin/magento setup:cron:run >> <magento install dir>/var/log/setup.cron.log

これでインデックスの更新や新バージョンのチェックが自動化されます。

まとめ

Magento2はMagento1.xよりも動作する環境を選びます。初期のMagento1.xもCentOSなどでは標準状態でインストールができませんでしたが、それと同様に環境を選びます。

また、MagentoはECサイトを作るためのシステムです。サーバーに対する適切な投資は不可欠で、あまりにも安い価格帯のサーバーには不向きなシステムです。
さらに昨今のアプリケーションはコマンド操作やAPIによる自動運用を目指している側面があるため、ターミナルからの操作が不可欠です。

動かない、インストールできないと嘆く前に、本当にその環境がMagentoに適しているかをよく調べて頂く必要があるでしょう。

明日はkzkiq2ndさんです。よろしくお願いします!

 

追記: