EC-CUBE4 の学習環境をCloud9でつくろう

AWS Cloud9 で作成したインスタンスで、EC-CUBE4 を動かすための手順です。

ローカルで環境を作ろうと思うと、上手くいかなかったりして苦労することも多いと思います。
Cloud9なら独立して使えるサーバー環境を用意してくれる上に、IDEで直感的に編集することもできるので、ぜひ試してみてください。

(更新) 2020年12月13日 - Amazon Linux 2 をベースにした構築方法に書き換えました。

#### ご注意
この手順で作成する環境はあくまで学習用です。
デフォルトのままであれば自分以外はサイトを閲覧できないので安心して学習に利用できます。
外部に公開することはセキュリティ的によろしくないので行わないでくださいね。

## Cloud9 IDEの作成
AWSのコンソール>Cloud9 から新しいIDEを作成します。

- 無料枠のあるt2.microでも動きます。(もっさりしますが、学習目的ならまずは十分)
- プラットフォームの選択は Amazon Linux 2 を選びます。

## サーバー環境の準備
Cloud9 IDE が起動したら、画面下部にある `Terminal` タブで環境を作成していきます。
![スクリーンショット 2018-12-23 8.51.24.png](https://qiita-image-store.s3.amazonaws.com/0/113212/0bef92f8-d2c4-5884-4496-1409893e8b44.png)


### ~~php 7.1 のインストール~~ → Amazon Linux 2では不要になりました

~~EC-CUBE4の動作にはphp7.1以上が必要なため、php7.1をインストールします。~~
Amazon Linux 2 ではデフォルトで PHP 7.2.24 がインストールされているので、この手順での導入は不要です(2020年12月13日確認)

### 不足しているPHP拡張モジュールのインストール

Amazon Linux 2 にデフォルトでインストールされていない拡張モジュールをインストールします。

```
sudo yum install php-mbstring php-zip php-intl
```

### TRUSTED_PROXIESを設定する

おそらくELBの配下にインスタンスがあることが原因で、TRUSTED_PROXIESを設定しないと管理画面にアクセスできません。
.envに以下の環境変数を定義することで回避します。

```
echo TRUSTED_PROXIES=127.0.0.1 >> ~/environment/ec-cube/.env
```

### php設定の変更

初期設定のままだとプラグインのインストール時にエラーになるので設定を変更します。

```
sudo sh -c 'echo "memory_limit = 500M" >> /etc/php.d/php.ini'
sudo sh -c 'echo "xdebug.max_nesting_level=5000" >> /etc/php.d/php.ini'
```

### composer のインストール

EC-CUBE4のインストールに利用します。

```
curl -sS https://getcomposer.org/installer | php
```

## EC-CUBE 4 のインストール
[EC-CUBE 4.0 開発ドキュメント > インストール方法](http://doc4.ec-cube.net/quickstart_install) ページにある「コマンドラインでのインストール」の方法でインストールを行います。
下記のコマンドを実行するだけでインストールが完了します。

```
php composer.phar selfupdate --1
php composer.phar create-project ec-cube/ec-cube ec-cube "4.0.5" --keep-vcs -vvv
```

※今回はバージョン `4.0.5` を指定してインストールします。未リリースの最新コードを試したい場合は、 `4.0.x-dev` を指定してください。

## EC-CUBEの起動

### サーバーの起動

Cloud9の `Run` 機能を利用して起動します。
メニュー>Run>Run With>PHP (built-in web server)で実行できます。
下記のようなタブが表示されれば起動できています。
![スクリーンショット 2018-12-23 9.47.16.png](https://qiita-image-store.s3.amazonaws.com/0/113212/a6e22a8f-762e-c390-69c5-9aa0b335aea0.png)

### サイトのプレビュー

画面上部のメニューにある `Preview` から表示できます。
Preview>Preview Running Application を押すとプレビュー用のタブが表示されます。
URLの末尾に `ec-cube/` を入力してアクセスすると、EC-CUBEの画面が表示されます。
※URLの末尾に「/」を入れ忘れないように注意！
![スクリーンショット 2018-12-23 9.51.17.png](https://qiita-image-store.s3.amazonaws.com/0/113212/ddeb04a7-bdf4-22ab-1600-858362a611c2.png)

### 管理画面へのログイン

URLの末尾に “/admin” を付けてアクセスすることで、管理画面にログインできます。
ID: admin
パスワード: password

## xdebugの導入

AmazonLinux2でそのままxdebugをインストールしようとすると依存関係のエラー発生してできない。
個別にremiのリポジトリを追加してインストールする必要があるようだ。(このあたり試行錯誤したので認識間違っているかも)

```shell
#xdebugに必要なlibtinfo.soをインストールするため
sudo yum install ncurses-compat-libs

#remi公式のウィザートなど参照しながらphp7用のリポジトリを追加。amzn2-coreを参照しないようにしてxdebugをインストール。
sudo yum install https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
sudo yum install https://rpms.remirepo.net/enterprise/remi-release-7.rpm
sudo yum install --disablerepo=amzn2-core --enablerepo=remi,remi-php72 php-pecl-xdebug
```

## 動作確認したこと

- Cloud9でブレークポイントを設定してのステップ実行。
- EC-CUBE管理画面からプラグインのインストール


学習やプラグインの開発には十分使える環境になりました。
EC2なのでちゃんとapacheで動かしたりなど応用もできます。
ぜひ試してみてください。