Help us understand the problem. What is going on with this article?

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

More than 1 year has passed since last update.

はじめに

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

スクリーンショット 2017-08-30 18.47.10.png

9/8 追記

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

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

さいごに

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

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away