EC-CUBE3(正式版)をcentOS7+nginx+mariadbに導入

EC-CUBE3の正式版が発表されたので一から挑戦してみます。
構成は現行の本番環境に合わせてCentOS7の最小構成にnginxとmariadbをクリーンインストールから順を追っていきます。

#サーバ構成
##サーバ構成の下準備
仮想環境で検証するため下記の通り設定する。
[参照](http://qiita.com/egnr-in-6matroom/items/8bda88125f56ee68448a)

eccube-3.0.1
CentOS7
+nginx (http)
+PHP 5.4.16
+MariaDB 5.5.41 (MySQL互換DB)
※推奨環境ではないが、現行使用サーバに導入予定なので動作確認の為

#データベース初期設定
##mariadbにユーザーを追加
事前にデータベースの作成が必要なので従来の権限通りに追加
###mariadbにログイン
```bash:console
$ mysql -u root
```
* まだroot管理者しか設定していないのでrootでログイン
* rootパスワードを入力

###データベースとユーザを作成
```mysql:MariaDB
MariaDB [(none)]> CREATE DATABASE db_eccube;
MariaDB [(none)]> GRANT ALL ON db_eccube.* TO ur_eccube@localhost IDENTIFIED BY "pw_eccube";
MariaDB [(none)]> FLUSH PRIVILEGES;
MariaDB [(none)]> EXIT
```
* データベース名：db_eccube
* ユーザ名：ur_eccube
* ユーザパスワード：pw_eccube
* GRANT構文のALL権限(GRANT OPTION構文以外の全ての権限所持)

※GRANT構文とは、ユーザ アカウント作成や、アカウントに権利を与える事を可能にする構文

#ECCUBE3インストール
##ECCUBE3ダウンロード
```bash:console
$ pwd
/home/eccube
$ curl -O http://downloads.ec-cube.net/src/eccube-3.0.1.tar.gz
```
##ECCUBE3の解凍・配置
ユーザーディレクトリに配置し、公開用ディレクトリにコピーする
```bash:console
$ tar xzvfp eccube-3.0.1.tar.gz
$ sudo cp -r ~/eccube-3.0.1/* /usr/share/nginx
```
##nginxの.php$を変更する
###nginx.confを編集する
* ```bash:console
$ sudo vi /etc/nginx/nginx.conf
```
```vim:nginx.conf
（中略）
        location / {
        }
#ここから追加
        location ~ \.php(.*)$ {
            fastcgi_pass     127.0.0.1:9000;
            fastcgi_index    index.php;
            fastcgi_param    SCRIPT_FILENAME  $document_root$fastcgi_script_name;
            include          fastcgi_params;
        }
#ここまで
```
* viの使用方法
* 「Insert」キーで入力
* 「Esc」キーで入力状態解除
* 「:wq」書き込み後ファイルを閉じる
* 「:q!」強制的に書き込まずにファイルを閉じる

###nginxをリスタートする
```bash:console
$ sudo systemctl restart nginx
```
##phpの設定
###phpのユーザーとグループをnginxに変更する
```bash:console
$ sudo vi /etc/php-fpm.d/www.conf
```
```vim:www.con
; RPM: apache Choosed to be able to access some dir as httpd
user = nginx
; RPM: Keep a group allowed to write in log dir.
group = nginx
```
###phpのタイムゾーンをAsia/Tokyoに変更する
php5.4移行に対応するため
```bash:console
$ sudo vi /etc/php.ini
```
```vim:www.php.ini
[Date]
; Defines the default timezone used by the date functions
; http://php.net/date.timezone
date.timezone = Asia/Tokyo
```
###php-fpmをリスタートする
```bash:console
$ sudo systemctl restart php-fpm
```

##オーナーを変更する
```bash:console
$ sudo chown -R nginx:nginx /usr/share/nginx/*
```
#WEBからインストール画面へアクセスする
##http://(サイトURL)/index.php
![top.jpg](https://qiita-image-store.s3.amazonaws.com/0/70171/bc6843b0-530d-671e-8950-48acbf9eb112.jpeg)

##http://(サイトURL)/install.php
![admin1.jpg](https://qiita-image-store.s3.amazonaws.com/0/70171/1e016008-9ee3-ab4d-ebec-e406c537c98e.jpeg)

##権限チェック
![admin2.jpg](https://qiita-image-store.s3.amazonaws.com/0/70171/4a42e2e6-e8da-185f-ab78-cd3655d8ac65.jpeg)

##サイトの設定
![admin3.jpg](https://qiita-image-store.s3.amazonaws.com/0/70171/09ed5ae5-c024-3dd7-d741-ef6b8f0f90a6.jpeg)

* あなたの店名 - お好きなように
* メールアドレス - 受注メールなどの宛先用
* 管理画面のログインID - そのままの意味
* 管理画面パスワード - そのままの意味
* 管理画面のディレクトリ名 - 旧版の「http://サイト名/admin/」だと脆弱性の問題があるため
* サイトへのアクセスをSSL(https)経由に制限 - セキュリティ的にはチェックを入れて暗号化した方がいいがテストなので外してます。
* 管理画面へのアクセスIPの制限 - 管理者のIPが固定されている場合に使用したほうが望ましい。
* メーラーバックエンド - メールをとばす方法の設定

##データベースの設定
![admin4.jpg](https://qiita-image-store.s3.amazonaws.com/0/70171/b9556636-5e5d-14dd-8e5d-fa7649f6833f.jpeg)
* DBの種類 - MYSQL(mariaDBだけど互換性があるため)
* DBサーバのIPアドレス - localhost
* DB名 - db_eccube (作成したDB名)
* DBユーザ名 - ur_eccube (作成したDBユーザ)
* パスワード - pw_eccube (作成したDBパスワード)

##データベースの初期化
![admin5.jpg](https://qiita-image-store.s3.amazonaws.com/0/70171/62b17538-220c-3e8d-c139-fd27bbe0396a.jpeg)
* データベースの初期化を行わないのチェックは旧バージョンからの移行でもプラグインでDBに変更があるため怖くてチェックできない。

##インストール完了
![admin6.jpg](https://qiita-image-store.s3.amazonaws.com/0/70171/56df7e17-a816-143d-f0fd-b2b8e83a42fc.jpeg)

お疲れ様です。
ひとまずインストールは完了??しました。 

#まとめ
この後はディレクトリ構成がややこしく変更されているのでURLのエラー地獄が待ってます。
例えばログインユーザがDBに反映されてなくてdummyが入っているとか
素直なURLではないので
URL書き換え＆リダイレクトが必要で
Apacheのmod_rewriteに対応するnginxの対策を検討しなければならないとか
本当の完了にはまだまだ遠いです。
どうしたもんかなぁ