CakePHPのインストール


(2015/07/02) debug_kit の導入方法を改善。CLI との共存の記載を改善。

(2015/06/02) git clone から zip のダウンロードに変更。

(2015/04/28) PHP 自体のインストールを別ページに独立させた。

(2015/04/10) git clone のデフォルトで CakePHP 3.x が落ちてくるようになったので、2.x になるように調整。
また、動作環境を CentOS 6.6 + PHP-5.6.x にアップデートしました。

(2015/02/03) CLI との共存に関する記載順序の見直し。

(2014/07/03) WebアプリとCLI(コマンド)の共存について記載しました。

(2014/06/11) インストール手順の中のバージョン依存をなくしました。

(2013/12/27) CakePHP のインストールについてご紹介します。 動作確認したバージョンは CakePHP 2.4.4 です。

(2013/09/20) 一つ前のバージョン(CentOS 6.4 + PHP 5.3 + CakePHP 2.3.10)

例示におけるプラットフォームには CentOS 6.6(64bit) を使っており、 webtatic.com を参照して php 5.6.x を入れています。他の OS やディストリビューションをお使いの方は、yumなど固有のコマンド名を適宜読み替えてください。

Go previousメニューに戻る

前提事項

Apache + PHP

PHP のインストール の手順により PHP がインストールされていることを前提としています。

DNS(任意)

DNS に cake.example.com を登録。以下、これで例示します。

Apache

Virtual Host を有効にしています。

# vi /etc/httpd/conf/httpd.conf
# diff -Nu httpd.conf.orig /etc/httpd/conf/httpd.conf
--- httpd.conf.orig     2013-12-26 14:08:11.027811616 +0900
+++ /etc/httpd/conf/httpd.conf  2013-12-26 14:08:42.724183091 +0900
@@ -218,7 +218,7 @@
 #
 # Load config files from the config directory "/etc/httpd/conf.d".
 #
-Include conf.d/*.conf
+# Include conf.d/*.conf

 #
 # ExtendedStatus controls whether Apache will generate "full" status
@@ -987,7 +987,8 @@
 #
 # Use name-based virtual hosting.
 #
-#NameVirtualHost *:80
+NameVirtualHost *:80
+Include conf.d/*.conf
 #
 # NOTE: NameVirtualHost cannot be used without a port specifier
 # (e.g. :80) if mod_ssl is being used, due to the nature of the

以下の様な Virtual Host config を作成。ディレクトリ構成等もこれに従います。

# cat /etc/httpd/conf.d/cake.conf
<VirtualHost *:80>
    ServerAdmin     root@cake.example.com
    DocumentRoot    /var/www/cake/
    ServerName      cake.example.com
    CustomLog       logs/cake-access_log combined
    ErrorLog        logs/cake-error_log
    <Directory /var/www/cake>
        AllowOverride   FileInfo
    </Directory>
    Php_flag    xdebug.remote_enable        On
    Php_flag    xdebug.remote_connect_back  On
</VirtualHost>

CakePHP が .htaccess を使うようなので、最低限 FileInfo を有効にしておきます。また、いずれ必要になるであろう、Xdebug の機能も組み込んであります。どのホストからもデバッグ可能にしてあるとセキュリティ的には弱いので、可能ならデバッグ可能なホストを制限するほうが好ましいでしょう。

# service httpd restart

インストール

CakePHP コア部分

一般ユーザ m-hotta で触れるようにしています。
また、便宜上ホームディレクトリからシンボリックリンクを貼っています。

m-hotta@nigeria:~$ wget https://github.com/cakephp/cakephp/archive/2.6.4.zip -O /tmp/cakephp-2.6.4.zip
m-hotta@nigeria:~$ unzip /tmp/cakephp-2.6.4.zip
m-hotta@nigeria:~$ chmod -R 777 cakephp-2.6.4/app/tmp/
m-hotta@nigeria:~$ sudo mv cakephp-2.6.4 /var/www/cake
m-hotta@nigeria:~$ ln -s /var/www/cake .
m-hotta@nigeria:~$ cd cake
m-hotta@nigeria:~/cake$ vi app/Config/core.php
(以下の2値を適当に変更する)
Configure::write('Security.salt', 'DYhG93b0qyJfIxffse9vvUubWwvniR2G0FgaC9mi');
Configure::write('Security.cipherSeed', '7685930965745354907834968364');

CakePHP のバージョン確認

m-hotta@nigeria:~/cake$ tail -1 lib/Cake/VERSION.txt
2.6.4

CakePHP DebugKit プラグインのインストール

インストールは必須ではないですが、デバッグ時にあるとかなり便利なのでオススメです。

m-hotta@nigeria:~/cake$ cd app/Plugin
m-hotta@nigeria:~/cake$ git clone --branch 2.2 git://github.com/cakephp/debug_kit.git DebugKit
m-hotta@nigeria:~/cake$ cd ../..
m-hotta@nigeria:~/cake$ vi app/Config/bootstrap.php (末尾に以下を追加)
CakePlugin::load('DebugKit');
m-hotta@nigeria:~/cake$ vi app/Controller/AppController.php
$ (クラスの中に1行追加)
class AppController extends Controller {
    public  $components = array('DebugKit.Toolbar');
}

動作確認

cake-justinstalled

本番リリースに際して

CakePHP DebugKitを導入すると、画面右上のハードディスクの形をしたアイコンをクリックすることでデバッグに有用な情報にアクセス可能となります。ただし、本番リリース時の状態としてはセキュリティ上好ましくないので、以下の手順によりこの機能を無効にすることをおすすめします。

m-hotta@nigeria:~/cake$ vi app/Controller/AppController.php
//  public  $components = array('DebugKit.Toolbar');    //  コメントアウト

すでに $components に複数のコンポーネントを定義してある場合は、 'DebugKit.Toolbar' を外しておきます。

または、

m-hotta@nigeria:~/cake$ vi app/Config/core.php(34行目付近)
    Configure::write('debug', 0);   //  2 を 0 にする

この手順の場合、完全にデバッグモードがオフになります。php が Warning を吐いたりした場合も、debug=0 の場合は画面に表示されなくなります。

CLI との共存

この後、以下の設定を追加することで、 WebアプリとCLIアプリを同一ソースツリー内で共存できます。 最後の mask がキモです。

CakePHP では app/tmp/cache 配下にいろいろなキャッシュを持ちますが、 Web(httpd)経由で実行された場合、それらのファイルのオーナーが apache 等になります。その後 CLI 経由で起動した場合、 それらのファイルを書き換えようとしてパーミッションエラーとなるので、 それを回避するための設定です(まだ検証中)。

m-hotta@nigeria:~/cake$  diff -u /tmp/core.php app/Config/core.php
--- /tmp/core.php       2015-07-02 10:01:27.424277102 +0900
+++ app/Config/core.php    2015-07-02 10:39:37.998341944 +0900
@@ -340,6 +340,17 @@
  *     ));
  */

+Cache::config('default', array(
+       'engine' => 'File', //[required]
+       'duration' => 3600, //[optional]
+       'probability' => 100, //[optional]
+       'path' => CACHE, //[optional] use system tmp directory - remember to use absolute path
+       'prefix' => 'cake_', //[optional]  prefix every cache file with this string
+       'lock' => false, //[optional]  use file locking
+       'serialize' => true, //[optional]
+       'mask' => 0666, //[optional]
+));
+
 /**
  * Configure the cache handlers that CakePHP will use for internal
  * metadata like class maps, and model schema.
@@ -370,7 +381,8 @@
        'prefix' => $prefix . 'cake_core_',
        'path' => CACHE . 'persistent' . DS,
        'serialize' => ($engine === 'File'),
-       'duration' => $duration
+       'duration' => $duration,
+       'mask' => 0666, //[optional]
 ));

 /**
@@ -384,3 +396,10 @@
        'serialize' => ($engine === 'File'),
        'duration' => $duration
 ));
+Cache::config('cake_toolbar_cache', array(
+       'engine' => $engine,
+       'prefix' => $prefix . 'cake_toolbar_cache_',
+       'path' => CACHE . 'models' . DS,
+       'serialize' => ($engine === 'File'),
+       'duration' => $duration
+));
m-hotta@nigeria:~/cake$ sudo chgrp -R wheel app/tmp
m-hotta@nigeria:~/cake$ sudo chmod -R g+w app/tmp

(例は CLI を実行するユーザのグループが wheel の場合)

Go back