CakePHPでRails Tutorialをやってみる〜その１ Cloud9の設定〜

# はじめに
業務でCakePHPを使用することになったので、勉強を始めました。
本を買おうかとも思ったのですが、折角なので[Rails Tutorial](https://railstutorial.jp/)をCakePHPで書き換えながら勉強をしようかと思いました。

自分の整理と、他の方たちへの参考になればと思い、記事にさせていただきます。
とばせる部分はとばしているので、全て実施するわけではありません。
## 環境
環境はCloud9で行います。
[Rails Tutorial](https://railstutorial.jp/)ではHerokuを使用していますが、今回は使用しませんでした。

* PHP: 7.1.8
* CakePHP: 3.5.1
* MySQL: 5.5.57

# Cloud9にログイン
Cloud9にログインしてPHPのプロジェクトを作成します。
# PHPのバージョンアップ
Cloud9のデフォルトのPHPバージョンはPHP 5.5なので、バージョンアップします。
せっかくなので、2017年8月末時点で最新の7.1.8にしたいと思います。
Herokuのコミュニティページを参考にしました。
[How to upgrade to PHP7](https://community.c9.io/t/how-to-upgrade-to-php7/1379)

```
# 最初にlibmcrypt-devをインストール
$ sudo apt-get update
$ sudo apt-get install libmcrypt-dev

# phpbrewのインストール
$ curl -L -O https://github.com/phpbrew/phpbrew/raw/master/phpbrew
$ chmod +x phpbrew
$ sudo mv phpbrew /usr/local/bin/
$ phpbrew init

#  ~/.bashrcに追記
$ [[ -e ~/.phpbrew/bashrc ]] && source ~/.phpbrew/bashrc
$ phpbrew lookup-prefix ubuntu

# PHP 7.1.8をインストール
# その他のモジュールも一緒にインストール
$ phpbrew install 7.1 +default +mysql +pdo +fpm +opcache +intl
$ phpbrew switch php-7.1.8
$ phpbrew use php-7.1.8
$ php -v
PHP 7.1.8 (cli) (built: Aug 30 2017 08:43:16) ( NTS )
Copyright (c) 1997-2017 The PHP Group
Zend Engine v3.1.0, Copyright (c) 1998-2017 Zend Technologies
```
**phpbrew**というコマンドを使用しました。
PHPのバージョン管理がしやすくなるようです。
Rubyでいうところのrbenvみたいなものですかね？
# Composerのインストール
CakePHP3はComposerでのインストールがデフォルトなので、インストールします。
こちらもコミュニティサイトを参考にしました。
[Getting Started with CakePHP 3](https://community.c9.io/t/getting-started-with-cakephp-3/1607/1)

```
$ curl -sS https://getcomposer.org/installer | php
```
# CakePHPのインストール
プロジェクト名は`cakephp_de_rails_tutorial`とします。

```
$ php composer.phar create-project cakephp/app cakephp_de_rails_tutorial
```
途中でパーミッションに関して質問されますが、そのままEnterを押してしまいます。

```
$ cd cakephp_de_rails_tutorial
$ chmod +x bin/cake
```
# データベースの設定
Cloud9でPHPプロジェクトを作成すると、LAMP環境を作成してくれるので、その設定を追記します。
こちらもコミュニティサイトを参考にしました。
[Setting Up MySQL](https://community.c9.io/t/setting-up-mysql/1718)

以下のコマンドで、ユーザー名と使用DB名を取得できます。

```
$ mysql-ctl start
       Root User: hogehoge
   Database Name: fugafuga
```
これをもとに、`config/app.php`を編集します。
ついでにタイムゾーンも編集しておきます。

```diff:config/app.php
'Datasources' => [
    'default' => [

        // ...

       //'port' => 'non_standard_port_number',
+        'username' => getenv('C9_USER'),
+        'password' => '',
+        'database' => 'fugafuga',
         'encoding' => 'utf8',
+        'timezone' => '+09:00',
         'flags' => [],
         'cacheMetadata' => true,
         'log' => false,
```
CakePHPのアプリケーション自体のタイムゾーンは`config/bootstrap.php`を編集します。

```diff:config/bootstrap.php
- date_default_timezone_set('UTC');
+ date_default_timezone_set('Asia/Tokyo');
```
# サーバーを起動してみる
ここまでやって、CakePHPのコマンドでサーバーを起動してみます。

```
$ bin/cake server -H $IP -p $PORT

Welcome to CakePHP v3.5.1 Console
---------------------------------------------------------------
App : src
Path: /home/ubuntu/workspace/cakephp_de_rails_tutorial/src/
DocumentRoot: /home/ubuntu/workspace/cakephp_de_rails_tutorial/webroot
---------------------------------------------------------------
built-in server is running in http://0.0.0.0:8080/
You can exit with `CTRL-C`
```
`http://0.0.0.0:8080/`にアクセスしてみると、下図のようになっていれば問題ないかと思います。

![スクリーンショット 2017-08-30 18.47.10.png](https://qiita-image-store.s3.amazonaws.com/0/118817/24dc0fa7-de3a-09ac-9b84-1cad105ac935.png)

# 9/8 追記
Cloud9を一度閉じる、もしくは新しくターミナルのタブを立ち上げると、`~/.phpbrew/bashrc`が読み込まれていないため、PHPのバージョンがデフォルトのままになっています。
そのため、`~/.bashrc`に追記し、起動時に読み込むようにしておきます。

```diff:~/.bashrc
+ # To update PHP 7
+ if [ -f ~/.phpbrew/bashrc ]; then
+     source ~/.phpbrew/bashrc
+ fi
```

# さいごに
今回は環境設定についてでした。
次回から実際にコードを書いていきたいと思います。
なお、[Rails Tutorial](https://railstutorial.jp/)の[3章（ほぼ静的なページの作成）](https://railstutorial.jp/chapters/static_pages?version=5.0#cha-static_pages)からやろうと思います。
次→[ほぼ静的なページの作成](http://qiita.com/naoki85/items/0b7e7ea106a1c661ed35)