eZ Publish 5.4 インストールガイド

## 概要
CentOS 7 に **eZ Publish 5.4** のオープンソース版である [eZ Publish Community Project 2014.11](http://share.ez.no/downloads/downloads/ez-publish-community-project-2014.11) をインストールする手順について解説します。
有償サブスクリプションを契約すると、製品版の [eZ Publish 5.4](http://ez.no/Forms/Discover-eZ-Publish-Platform-5.4) がダウンロード可能になります。

## システム要件
[公式ドキュメント](https://doc.ez.no/display/EZP/Requirements+5.4) によるシステム要件は以下の通りです。

* PHP スクリプト言語: 5.4/5.5/5.6, minimum 5.4.4, & community support 7.0
* SQL データベース: MySql/MariaDB or PostgreSQL
* Web サーバー: Apache 2.2, Apache 2.4 or Nginx 1.4+
* Java JRE 1.7 (Oracle-Sun/OpenJDK) when Solr is used (for use with eZ Find search engine)


## システム構成例
ソフトウェア|バージョン|リポジトリ
---|---|---
CentOS |7.2.1511 (1610-01)|(rolling)
Apache |2.4.6 |updates
MariaDB |5.5.50 |updates
PHP |5.4.16 |updates

## 環境構築
最小限の手順にするため、パフォーマンス等は考慮していません。実運用には PHP のバージョンやライブラリなど適宜検討してください。

### Apache 2.4 / PHP 5.4 のインストール
CentOS の標準リポジトリでインストール可能です。

```bash
yum install php php-{gd,intl,mbstring,mysqlnd,process,xml}
sed -i.org 's|;date.timezone =|date.timezone = Asia/Tokyo|' /etc/php.ini
sed -i '/memory_limit/ s/128M/512M/' /etc/php.ini
systemctl start httpd && systemctl enable httpd
```

### MariaDB 5.5 のインストール
ezpublish.cnf は設定しなくても基本的には動作します。

```bash
yum install mariadb-server
cat << "_EOF_" > /etc/my.cnf.d/ezpublish.cnf
[mysqld]
character-set-server = utf8
innodb_buffer_pool_size = 128M
_EOF_
systemctl start mariadb && systemctl enable mariadb
```

### FirewallD の設定
```bash
firewall-cmd --add-service=http --permanent && firewall-cmd --reload
firewall-cmd --list-services
```

## eZ Publish
### データベースとDBユーザーの作成
```bash
cat << "_EOQ_" | mysql -u root -p
CREATE DATABASE `ezpublish` CHARACTER SET 'utf8';
CREATE USER 'ezpublish'@'localhost' IDENTIFIED BY 'ezpublish';
GRANT ALL ON ezpublish.* TO 'ezpublish'@'localhost';
_EOQ_
```

### スワップ領域の作成
メモリが 1GB 程度だと不足する場合があるのでスワップ領域を作成しておきます。

```bash
dd if=/dev/zero of=/var/tmp/swap bs=1M count=1024
mkswap /var/tmp/swap
chmod 600 /var/tmp/swap
swapon /var/tmp/swap
```

### ファイルの展開

公式サイトからだと果てしなく遅い時があるので Fossies からダウンロードします。

```bash
curl -LO https://fossies.org/linux/www/ezpublish5_community_project-2014.11.1-gpl-full.tar.gz
mkdir /var/www/ezpublish5
tar xf ezpublish5_community_project-2014.11.1-gpl-full.tar.gz -C /var/www/ezpublish5 --strip=1
```

### Composer
整合性の関係上、古いバージョンの Composer をインストールします。 [^update]
またアップデートに非常に時間がかかるため、リポジトリの変更と高速化プラグインをインストールします。

[^update]: https://doc.ez.no/display/EZP/5.4.x+Update+Instructions

```bash
cd /var/www/ezpublish5
php -r "copy('https://getcomposer.org/download/1.0.3/composer.phar', 'composer.phar');"
php composer.phar config -g repos.packagist composer https://packagist.jp
php composer.phar global require hirak/prestissimo
```

### Composer によるアップデート
2014年12月以降のバグフィックスやセキュリティアップデートを適用するため、以下の手順で実施します。

```bash
php -d memory_limit=-1 composer.phar update --no-dev --prefer-dist --no-scripts ezsystems/ezpublish-legacy-installer
php -d memory_limit=-1 composer.phar selfupdate
php -d memory_limit=-1 composer.phar remove --no-update --dev behat/mink-selenium-driver
php -d memory_limit=-1 composer.phar require --no-update symfony/symfony:~2.7.0 sensio/distribution-bundle:~3.0
php -d memory_limit=-1 composer.phar install --no-dev --prefer-dist
```

### パーミッションの設定
```bash
chown apache:apache -R /var/www/ezpublish5/*
setfacl -R -m u:apache:rwx -m u:apache:rwx /var/www/ezpublish5/ezpublish/{cache,logs,config,sessions} /var/www/ezpublish5/ezpublish_legacy/{design,extension,settings,var} /var/www/ezpublish5/web
setfacl -dR -m u:apache:rwx -m u:apache:rwx /var/www/ezpublish5/ezpublish/{cache,logs,config,sessions} /var/www/ezpublish5/ezpublish_legacy/{design,extension,settings,var}  /var/www/ezpublish5/web
chcon -R -t httpd_sys_script_rw_t /var/www/ezpublish5/ezpublish/{cache,logs,config,sessions} /var/www/ezpublish5/ezpublish_legacy/{design,extension,settings,var} /var/www/ezpublish5/web
```

### VirtualHost の設定 [^apache]

[^apache]: https://github.com/ezsystems/ezpublish-community/tree/master/doc/apache2

バーチャルホストを設定して Apache を再起動します。

```
cp -a /var/www/ezpublish5/doc/apache2/vhost.template /etc/httpd/conf.d/ezpublish.conf
sed -i /etc/httpd/conf.d/ezpublish.conf \
-e 's|%IP_ADDRESS%:%PORT%>|*:80>|' \
-e 's|ServerName %HOST%|ServerName www.example.com|' \
-e 's|ServerAlias %HOST_ALIAS%|ServerAlias localhost|' \
-e 's|%BASEDIR%/web|/var/www/ezpublish5/web|' \
-e 's|=%ENV%|=dev|'
systemctl restart httpd
```

これでコンソールでのインストール作業は完了です。
再起動後にブラウザでトップページへアクセスするとインストール画面が表示されます。

## インストール画面
コンソールでのインストール作業が完了したら、今度はブラウザでセットアップしていきます。

### インストール言語の選択
インストール言語を選択します。Japanese を選択後。「Finetune」ボタンを押下すると次の画面に遷移します。

![ezp_install_1.png](https://qiita-image-store.s3.amazonaws.com/0/15175/117b1311-c392-2dca-6e83-413ceae644e6.png)

### システムの最適化
前述通りの手順を踏襲していれば、ここに表示される問題点は無視しても問題ありません。

![ezp_install_2.png](https://qiita-image-store.s3.amazonaws.com/0/15175/764ef8af-0fc6-5fc7-af9d-1c860800000a.png)

### メール送信設定
![ezp_install_3.png](https://qiita-image-store.s3.amazonaws.com/0/15175/77be91cb-8c25-b26f-9346-a2b12ec5e573.png)

### データベースの接続設定
![ezp_install_4.png](https://qiita-image-store.s3.amazonaws.com/0/15175/01d19195-e98b-05cd-042f-6510086c996d.png)

### 言語の選択
![ezp_install_5.png](https://qiita-image-store.s3.amazonaws.com/0/15175/26dc0c33-0cb8-8f8f-492f-a6bfa9e68507.png)

### サイトパッケージ
動作検証等を行う場合は1つ目のサイトパッケージを選択しましょう。いくつかのサンプルページが用意された状態になります。
2つ目の without demo content のサイトパッケージでは余計なコンテンツ（オブジェクト）が生成されません。

![ezp_install_6.png](https://qiita-image-store.s3.amazonaws.com/0/15175/721eab91-10d8-bfd2-bdf4-5efc7278f4ba.png)

### パッケージ言語オプション
![ezp_install_7.png](https://qiita-image-store.s3.amazonaws.com/0/15175/c563aa2e-a5b3-b447-f0bb-7ce30be7280c.png)

### サイトアクセス構成
通常は「URL」で問題ありません。
サブドメインを利用して通常のユーザー画面と管理画面を分けたいといった要件がある場合は、「ホスト名」を選択します。

![ezp_install_8.png](https://qiita-image-store.s3.amazonaws.com/0/15175/b11db16e-da25-afb6-1fe1-f5bf0f06597d.png)

### サイトの定義
「ユーザーサイトのパス名」はユーザー側では基本的に使うことがありませんが、デフォルトのサイトアクセス名として設定や開発で利用することになるので、分かりやすい名前を付けると良いでしょう。
次期バージョンの eZ Platform からは、デフォルトの「管理者サイトのパス名」（管理画面のサイトアクセス名）が「ez」に変更になったので、本バージョンでも「ez」と指定すると分かりやすいかと思います。

![ezp_install_9.png](https://qiita-image-store.s3.amazonaws.com/0/15175/5a0ee72a-10bd-00b4-aa72-a653795c9152.png)

### サイト管理者
![ezp_install_10.png](https://qiita-image-store.s3.amazonaws.com/0/15175/58e0ba48-320b-42bd-54df-7fe1b283903a.png)

### コミュニティの紹介
![ezp_install_11.png](https://qiita-image-store.s3.amazonaws.com/0/15175/546700dd-9abd-6722-efe0-87c5c2f9005d.png)

### セットアップ完了
この画面が表示されればセットアップは完了です。
この画面から Symfony のプロファイラーがブラウザー画面最下部に表示されるようになります。
いつでも再表示できるので、右端の「<i class="fa fa-times-circle" aria-hidden="true"></i>」ボタンを押下して閉じてしまっても問題ありません。

![ezp_install_12.png](https://qiita-image-store.s3.amazonaws.com/0/15175/ce06c0df-c37e-6c80-8653-1690ab7511e6.png)

### 管理画面へのログイン画面
管理画面には「管理者サイトのパス名」で指定した文字列を URL で指定するとアクセスできます。
前述通りであれば「/ez」になります。デフォルト値から変更していない場合は「/ezdemo_site_admin」になります。
初期の管理者ユーザー名は「admin」になります。

![admin_top.png](https://qiita-image-store.s3.amazonaws.com/0/15175/2540ebc9-9420-1895-43dd-a840653fdc4a.png)