PHP を使ったアプリケーション開発フレームワークの1つ、cakePHP を最近あちこちで使うようになったので、その環境を構築する手順を紹介します。


まず前提条件として、PHP/MySQL(または mongoDB、或いは両方)/Apache HTTPD がセットアップ済みである必要があります。これらは全て異なるサーバーに用意しても構いませんが、本エントリでは同一のマシン内(localhost)に構築する前提で紹介します。

HTTP サーバーとして Apache HTTPD の代わりに Nginx を使うこともできますが、少し手順が異なってくるのでここでは詳細は省略します。DB は RDB を使うのであれば MySQL(又は互換性のある MariaDB) を、高速な JSON DB を使うのであれば mongoDB を、併用するのであれば両方をセットアップしておきます。これら前提条件の導入手順の詳細は以下を参照してください:
CentOS に PHP を導入する
CentOS に MySQL をインストールする
mongoDB を CentOS 上にインストールする
CentOS に Apache HTTPD を導入して SSL を有効にする


前提条件の用意が済んだら、公式ページから最新版の cakePHP をダウンロードします。仮にダウンロードモジュール名が cakephp-2.4.7.zip(バージョン 2.4.7)であったと仮定して以下の説明を続けます:


まずは cakePHP で開発するアプリケーションが使うデータベースを定義します。既存のものを使っても構いませんし、新規に作成しても構いません。ここでは MySQL 内に "cakedb" という名前の UTF8 データベースを作成しています。また同データベースにアクセスするためのユーザー cake_user を定義しました:
# mysql -u root -p
Enter password: (パスワード入力)
  :
  :
mysql> create database cakedb default character set utf8;
Query OK, 1 row affected (0.00 sec)
mysql> grant all privileges on cakedb.*  to cake_user@localhost identified by 'cake_pass' with grant option;
Query OK, 1 row affected (0.00 sec)
mysql> quit
#

次に cakePHP モジュールを展開します。この例ではドキュメントルート(/var/www/html/)以下に展開して、cake/ というフォルダ名に変更しています:
# cd /var/www/html
# unzip /tmp/cakephp-2.4.7.zip
# mv cakephp-2.4.7 cake

これで cakePHP がドキュメントルート以下に展開されました。が、利用するにはもう少し設定が必要です。まずは接続先データベースを定義します。まず app/Config/database.php.default を app/Config/database.php にコピーして、その内容を以下のように変更/保存します(この内容はデータベースに MySQL を使う前提で記載しています):
public $default = array(
  'datasource' => 'Database/Mysql',
  'persistent' => false,
  'host' => 'localhost',
  'login' => 'cake_user',
  'password' => 'cake_pass',
  'database' => 'cakedb',
  'prefix' => '',
  'encoding' => 'utf8'
);

public $cakedb = array(
  'datasource' => 'Database/Mysql',
  'persistent' => false,
  'host' => 'localhost',
  'login' => 'cake_user',
  'password' => 'cake_pass',
  'database' => 'cakedb',
  'prefix' => '',
  'encoding' => 'utf8'
);
この設定では上記で作成した MySQL 内の cakedb データベースに cake_user : cake_pass で接続するための $default という配列変数を定義しています。また全く同じ内容を $cakedb 変数にも設定しています。

cakePHP では特に何の指定もしない場合の接続先は $default 変数に定義する必要があります。そのための設定です。

なお、それだけならばわざわざ $cakedb 変数を定義する必要はないのですが、後から $default 以外の接続先を利用することも考慮してこのような設定にしています。MySQL 内の別のデータベースや、MySQL 以外の別データベースにも接続したり、接続先を随時変更したりすることができるようにこのようにしている(逆を言えば、MySQL 内の1つのデータベースだけを対象に読み書きするのであれば $default だけの定義で充分)、と理解してください。


次に cakePHP は一時的にファイルを作成することがあるため、そのための書き込み権限を付与します:
# cd app
# chmod -R 777 tmp

最後にセキュリティのための設定を行います。app/Config/core.php 内に 'Security.salt'(ハッシュキーの生成に用いる文字列)、および 'Security.cipherSeed'(暗号化・復号化で利用する文字列)がデフォルト状態で定義されています。これをそのまま使うのは危ないので、独自の内容に変更します。前者は半角英数字、後者は数値文字列で適当な内容に変更して保存ます:
    :
  Configure::write('Security.salt', 'ABCDabcd1234' );
    :
    :
  Configure::write('Security.cipherSeed', '12345678' );
    :


この時点で cakePHP を利用することができるようになります。ブラウザでドキュメントルートの cake サブディレクトリにアクセスすると、以下の様な画面になるはずです:
2014051301


この画面では緑および黄色のメッセージしか出ていませんが、ここに赤いメッセージが出ている場合はまだ設定が正しく完了していないことを意味しています。メッセージ内容を見直して、適宜対応してください。

とりあえず最低限のインストールはこんな感じです。