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


はじめに

業務でCakePHPを使用することになったので、勉強を始めました。
本を買おうかとも思ったのですが、折角なのでRails TutorialをCakePHPで書き換えながら勉強をしようかと思いました。

自分の整理と、他の方たちへの参考になればと思い、記事にさせていただきます。
とばせる部分はとばしているので、全て実施するわけではありません。

環境

環境はCloud9で行います。
Rails Tutorialでは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

# 最初に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

$ 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

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

$ mysql-ctl start
       Root User: hogehoge
   Database Name: fugafuga

これをもとに、config/app.phpを編集します。
ついでにタイムゾーンも編集しておきます。

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を編集します。

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/にアクセスしてみると、下図のようになっていれば問題ないかと思います。

9/8 追記

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

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

さいごに

今回は環境設定についてでした。
次回から実際にコードを書いていきたいと思います。
なお、Rails Tutorial3章(ほぼ静的なページの作成)からやろうと思います。
次→ほぼ静的なページの作成