Install EC-CUBE on OS X

[EC-CUBE](http://www.ec-cube.net/)は **eコマース** のWebアプリケーションです。最新版は **GitHub** の[リポジトリ](https://github.com/EC-CUBE/ec-cube)で公開されています。
**EC-CUBE 3** から PHP Micro-Framework の [Silex](http://silex.sensiolabs.org/) が採用されています。

*OS X* (Mac)には標準で **Apache HTTP Server** や **PHP** がインストールされているので
開発環境が簡単に構築できます。（ネットワークの負荷によりますが、数分でインストールが完了します。）

![logo](https://dl.dropboxusercontent.com/u/14690051/images/cms/ec-cube/logo.png)

## Download

アプリケーションは[オフィシャルサイト](http://www.ec-cube.net/download/)からもダウンロードできますが
開発の最新版の取得は `git clone` のコマンドを利用してダウンロードします。

```bash
$ git clone https://github.com/EC-CUBE/ec-cube.git
$ cd ec-cube
```

## Database Setup

まず、データベースをセットアップします。今回はデータベースに **MySQL** を利用します。
(データベースは他に **PostgreSQL** が利用できますが、[Doctrine](http://www.doctrine-project.org/) のライブラリで **ORM** に対応しているので、コードの開発にはどちらでも差がない。また、パフォーマンスにも大きな差はないそうです。)

* *OS X* は `brew` のコマンドで **MySQL** をインストールすると簡単です。
* `mysql_secure_installation` コマンドで *root* ユーザにパスワードを指定しましょう。
* `php -m` コマンドで *PHP Modules* に `pdo_mysql` が含まれているか確認します。

```bash
$ brew install mysql
$ mysql_secure_installation
$ php -m | grep pdo_mysql
```

## Shell Script Installer

インストールを簡単するためにシェルスクリプトインストーラーの `eccube_install.sh` が提供されています。


* `eccube_install.sh` のデータベースの接続情報とファイルのパスの２カ所を編集します。
  * データベースは `root` ユーザで操作するので、`export DBPASS` を任意の値にして下さい。
  * ビルトインウェブサーバを利用するには `export ROOT_URLPATH` の値を `""` にします。
* `sh ./eccube_install.sh` の引数に `mysql` を指定して実行すると **EC-CUBE** のインストールが完了します。


```bash
$ edit ./eccube_install.sh
$ sh ./eccube_install.sh mysql
```

## Run

**Apache HTTP Server** を利用せずに、ビルトインウェブサーバで動作を確認します。

* `php` コマンドの `-t` オプションに `./html` を指定して、ウェブサーバを起動します。
  * `./html` が *DocumentRoot* になります。
 
```bash
$ php -S localhost:8000 -t ./html
```

ブラウザで `http://localhost:8000/` にアクセスするとデモサイトが表示されています。

![demo](https://dl.dropboxusercontent.com/u/14690051/images/cms/ec-cube/demo.png)

そして `http://localhost:8000/admin` にアクセスすると管理サイトのログインが表示されます。
(*ログインID* に `admin`、  *パスワード* に `password` を入力します。)

![login](https://dl.dropboxusercontent.com/u/14690051/images/cms/ec-cube/login.png)

ログインが成功すると管理サイトのホームが表示されます。

![admin](https://dl.dropboxusercontent.com/u/14690051/images/cms/ec-cube/admin.png)

シェルスクリプトインストーラーのおかげでインストールがとても簡単ですね。
誰でも簡単に開発環境が構築できる仕組みが有ると、開発者の負担が少なくて開発が捗ります。

----

# Tips

せっかくなので、Web版のインストーラーも紹介しましょう。


## Download

アプリケーションのダウンロードは、同じく `git clone` のコマンドを利用します。

```bash
$ git clone https://github.com/EC-CUBE/ec-cube.git
$ cd ec-cube
```

## Database Setup

まず、データベースとユーザーを作成します。
（`drop database` は必要な場合に実施してください。）

```bash
$ mysql -uroot -p
> drop database cube3_dev;
> create database cube3_dev DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
> GRANT ALL ON cube3_dev.* TO 'cube3_dev_user'@'%' IDENTIFIED BY 'password';
```

## Composer Install

[Composer](https://getcomposer.org/) で依存関係のライブラリをインストールします。

```bash
$ curl -sS https://getcomposer.org/installer | php
$ php ./composer.phar install --dev --no-interaction
```

## Web Installer

ブラウザで `http://localhost:8000/` にアクセスするとインストーラーが表示されています。
あとは案内通りに進めてるとインストールが完了します。

```bash
$ php -S localhost:8000 -t ./html
```

![step1](https://dl.dropboxusercontent.com/u/14690051/images/cms/ec-cube/step1.png)

## Timezone

`Warning: date_default_timezone_get():` のエラーが表示される場合は、 *Timezone* の設定を見直して下さい。

![timezone](https://dl.dropboxusercontent.com/u/14690051/images/cms/ec-cube/timezone.png)

`InstallApplication.php` の `__construct` に `/config.yml.dist` から参照した `timezone` を設定するコードを追加しても対応できます。

`src/Eccube/InstallApplication.php`:

```php
$distPath = __DIR__.'/../../src/Eccube/Resource/config';
$config_dist = Yaml::parse($distPath.'/config.yml.dist');
if (!empty($config_dist['timezone'])) {
    date_default_timezone_set($config_dist['timezone']);
}
```

*Enjoy EC-CUBE*