Linuxサーバーを立ち上げる際に、CentOSなどのRedHat Enterprise Linux(以下、RHEL)の系統に属するディストリビューションを選ばれる方は多いと思います。
サポート期間が長いことや、RHELに用意されている様々なパッケージが利用できること、ミドルウェアの開発元がサポートしてくれていることなどが採用される大きな理由ではないでしょうか。
(もちろん、サーバー会社が標準でインストールしているという点もあります)

さて、そんなCentOSには2016年現在で2つの大きな利用できるバージョンがあります。
今回は2011年中ごろから利用されてきているバージョン6について取り上げたいと思います。

CentOS6とMagento2

CentOS6がリリースされたのは2011年で、今から5年前です。
この間、PHPのバージョンは大きく変わり、その上で動かすMagentoのバージョンも変わりました。

標準のPHPは5.3だが、Magento2は5.6以降を要求

CentOS6の標準では、PHPはバージョン5.3が選ばれています。
Magento1.xをインストールする場合でも既に5.3系では若干古い印象を受けますが、Magento2は既に5.5より前のバージョンは非対応となっているため、インストールすらできません。

そのためMagento2を動作させるサーバーのOSとして、CentOS6を選ぶ場合には、まず最初にPHPのバージョン入れ替えが必要です。

サードパーティリポジトリの利用

幸い、多くのLinuxディストリビューションでは、ディストリビューション公式以外にも利用できるリポジトリが複数存在します。
CentOSも例外ではなく、むしろRHELと大枠は同じディストリビューションであるだけに多くのリポジトリが利用できます。

これらをうまく使うことで、今では多少古くなってしまったCentOS6であっても、最新のPHPやMySQLといったミドルウェアをインストールすることができます。

Magento2向け環境構築で利用できるリポジトリ

CentOS6でPHPパッケージをインストールする場合、公式以外のリポジトリを使うのであれば、例えば以下のリポジトリがよく使われるのではないでしょうか。

Magento2の公式ドキュメントには、CentOS6用の環境構築手順がきちんと掲載されています。
このなかで使用されているリポジトリは、

となっています。
RemiやEPELは日本でも馴染みがあるリポジトリなので、利用される方も多いと思いますが、Magento公式で推奨されているリポジトリはIUSである点に注意をしてください。

Magento2を日本語にすると500エラーが出る?

の配布開始以降、「日本語に切り替えたところ500エラーが出た」というお問い合わせを何度かいただくようになりました。
弊社の環境では発生していなかったので、キャッシュ等の不具合によるものではないかと当初は考えていました。
ところがPHPのバージョンを5.6から7.0.xに変えたところ動作しなくなり、戻すと動作するようになったというご連絡がありました。
詳細にディストリビューションや導入されたパッケージ(及びバージョン)を確認したところ、エラーが出る環境には共通点があることがわかりました。

Remiが提供するPHP7.0.xパッケージを使うとエラーが出る

エラーが出ている環境は、例外なくRemiが提供するPHP7.0.xのパッケージ使用していました。
Remiのリポジトリは比較的信頼できるものとして扱われているだけに、正直驚きましたが、EPELやIUSのPHP7.0.xパッケージではMagento2が何ら問題なく動作したため、Remiのみが動作不良を起こすことが決定的になりました。(将来的に改善されることを切に願います)

原因としては、Magento2が翻訳データのベースに利用しているPHPのIntlエクステンションというものがあるのですが、このエクステンションが利用しているlibicuとIntlエクステンションの相性があまりよくないようで、ローカライズデータが取得できない現象が起きているようです。

結論

  • CentOS6でMagento2をインストールする場合は、Magento公式のドキュメントに書かれているIUSもしくはEPELのPHP7.0.xパッケージを利用する
  • RemiのPHP7.0.xパッケージはlibicuの動作不良があるため、英語以外の環境で動作不良を起こす