Cloud9でCakePHP３．２開発環境構築の手順

ドットインストールさんの動画を参考に、Cloud9でCakePHP3の開発環境を作ってPHPの学習をしました。その際の手順を残します。

## １．PHP環境の確認

まずは、必要要件であるPHP環境を確認。
CakePHP３.2での必要条件は、以下のとおり。

PHPのバージョンが5.5.9 以上
インターナショナル拡張が必要
### ➀PHPのバージョン確認

$ php -v

私の環境では、以下のように表示されました。
PHP 5.5.9-1ubuntu4.17 (cli) (built: May 19 2016 19:05:57)

### ➁PHPインターナショナル拡張の確認

$ php -i|grep intl

以下のように表示されればOK。（私の環境では拡張済みでした。）
/etc/php5/cli/conf.d/20-intl.ini,
intl
intl.default_locale => no value => no value
intl.error_level => 0 => 0
intl.use_exceptions => 0 => 0

## ２．データベースの設定

### ➀mysqlのバージョン確認

$ mysql --version

cloud9では、mysql自体はインストール済みです。念のため、バージョン確認をしました。
私の環境では以下のように表示されました。
mysql  Ver 14.14 Distrib 5.5.49, for debian-linux-gnu (x86_64) using readline 6.3

### ➁phpmyAdminのインストール

$ phpmyadmin-ctl install

ログが流れて・・・最後の行にｐｈｐｍｙAdminへアクセスするためのリンクが表示されます。
PHPMyAdmin Installation complete. You can log in at: https://ワークスペース名−ユーザID.c9users.io/phpmyadmin with the following username (and blank password):
「You can log in at:」の後ろのURLがｐｈｐMyadminにアクセスするURL。
ログインIDは「Username:」以降に記載されたIDで、cloud9自体のIDと同じ。
➂ｐｈｐMyAdminのログインとセットアップ

ログイン：
　Cloud9のIDと同じIDでログインする。パスワードは最初は設定されていないので空欄。
設定：
　「一般設定」の「サーバ接続の照合順序」：　utf8_general_ci
外観の設定：
　「言語」を「日本語」
ユーザパスワードの設定：
　「ユーザ」タブを開いて該当ユーザIDの「特権を編集」リンクをクリック。
　下の方へスクロールすると、「パスワードを変更する」とあるのでそこでパスワードを入れ、
　右下に見える「実行」ボタンをクリックする。

### ➃ユーザの確認

ホーム＞ユーザと遷移して登録済みのユーザを確認すると、
自分のCloud9のユーザIDと同じIDが登録されていることが確認できます。

### ➄DBサーバのIPアドレス

PHPからDBへアクセスする際にDBサーバのIPアドレスが必要ですが、
クラウドなのでDBサーバのアドレスはどうなるの？と私のように迷う方もいるかと思います。
Cloud9上では、IPアドレスを指定せずとも「localhost」でPHPからアクセス可能です。


## 3．ｃａｋｅＰＨＰのインストール

いよいよ本題のcakePHPのインストールです。

### ➀ Composerのインストール

先に、Composerをインストールします。ターミナルで次のコマンドを実行。

$ curl -s https://getcomposer.org/installer | php

### ➁cakePHP３．２のインストール

ターミナルで次のコマンドを実行します。コマンド一番後ろには、これから作成するcakePHPアプリのプロジェクト名を入力。

$ php composer.phar create-project --prefer-dist cakephp/app 作成したいプロジェクトの名前
例えば、「myapp」という名前のプロジェクトを作りたいのであれば

php composer.phar create-project --prefer-dist cakephp/app myapp
と入力すればOK。

しばらく待つとターミナルに以下のメッセージ（フォルダのパーミッションは設定するか？）が表示されるので「Y」を押す。

Set Folder Permissions ? (Default to Y) [Y,n]?

ここまででの操作で、ワークスペースの指定フォルダ（上の例だとmyappフォルダ）の下にcakePHPのスケルトンが作成されます。

### ➂ブラウザから確認する

ブラウザから以下のURLへアクセス。
https://ワークスペース名−ユーザID.c9users.io/プロジェクト名

例えば、Cloud9でワークスペースを「myworkspace」、Cloud9のユーザIDが「user1」、
cakePHPインストール時に「myapp」というプロジェクト名にした場合、

https://myworkspace-user1.c9users.io/myapp　となります。

「Get the Ovens Ready」と書かれたページが表示されればOK。

## 4．cakePHPのデータベース設定

### ➀ configフォルダのapp.phpを開き、データベース設定を記載する

プロジェクトフォルダ\configにあるapp.phpファイルを開き、「Datasources」という文字列を検索。
（私の場合２１７行目にありましたが、その時点のバージョンにより数行の変動があると思います。）
そこから１２行程度下までスクロールさせると　'username' => という記載が見つかるのでそこから下を修正。

'username' => 自分のDBユーザ名
'password' => パスワード
'database' => データベース名
'timezone' => '+09:00',

### ➁bootstrup.phpも修正する

同じフォルダにあるbootstrup.phpを開き、「timezone」と記載された行を文字列検索する。

date_default_timezone_set('UTC');

と記載されいますので、UTCをAsia/Tokyoに変更。

date_default_timezone_set('Asia/Tokyo');

### ➂ブラウザから確認

cakePHPインストール直後にアクセスした先に再度アクセス。

https://ワークスペース名−ユーザID.c9users.io/プロジェクト名

画面を下へスクロールさせて、「Database」と書かれたところに

CakePHP is able to connect to the database.　　と表示されていれば接続成功。

もしも、「CakePHP is NOT able to connect to the database.」となっていたらまだつながっていません。
app.phpに記載したID、パスワードあたりをよく確認してください。



## 5．bakeコマンドによるソース生成

### ➀ bakeコマンドでMVCのソースを自動生成
事前にテーブルを作り、そのテーブル名をbakeコマンドの一番後ろに指定します。

$ bin/cake bake all テーブル名

### ➁ ブラウザによる確認

以下のURLへアクセスすると、テーブルのデータ一覧が表示されます。
https://ワークスペース名−ユーザID.c9users.io/プロジェクト名/テーブル名

ワークスペース「myworkspace」、ユーザIDが「user1」、プロジェクト「myapp」、テーブルが「posts」という名前だった場合
https://myworkspace-user1.c9users.io/myapp/posts　となります。

これで一通りの設定は完了です。

ここまでできたら、後はバリバリと開発するだけです。お疲れ様でした。