CakePHP さくらインターネット

CakePHPをさくらインターネットのサブドメインを使用する環境へインストールする

2013/05/07

CakePHPで作ったシステムを、手持ちのさくらのサーバへ入れてみることにしました。
その際、マルチドメインがひとつ余っていたので、それを利用してアクセスさせてみようとしましたら、案の定、.htaccess ともうひとつの落とし穴にはまり2時間悩むことに。

せっかく得た知識なので忘備録として、そしてこれからインストールする人たちへのヒントとしてポストしたいと思います。

なお、CakePHP はバージョン 1.3 で、サーバ構成は、/home/ユーザ名/www/ をドキュメントルートとします。
ユーザ名部分が、契約したユーザ名となります。

今回の設置の方法ですが

  1. さくらで用意されているサブドメインを利用し sola.bona.jp でアクセスできるようにする
  2. cakephp本体を、ドキュメントルート(www)と同列に設置する
  3. HTMLや画像、CSSなど、つまり CakePHP の webroot を、/www/demo/ に設置する

の、3つをこなしたいと思います。

ディレクトリの設置イメージは図にするとこんな感じです。

TREE

1. マルチドメイン設定

まず、FTPで /home/ユーザ名/www/demo/ ディレクトリを作成してから、以下の作業に進みます。
以下、マルチドメインの設定。

ドメイン設定

サーバのコントロールパネル、ドメイン設定メニューの「ドメイン設定」をクリックし、赤い「新しいドメインを追加」ボタンををクリック。

以下の画面が出るので、ドメイン名、サブドメインを入力、選択します。

マルチドメイン

確認画面、完了画面と続き、設定画面に進みます。

ここは2番の「マルチドメインの対象のフォルダをご指定ください」のみ設定。
先に作成した、 demo を指定します。
その際、「/demo/」ではなく、「/demo」として下さい。

ディレクトリ指定

出来上がったら、このようになると思います。

ドメイン一覧

2. CakePHPをアップロード

ドキュメントルート(www)と同階層にアップロードします。

FTPで一個一個上げていってもいいですが、zipファイルで固めてアップロードし、ターミナルから unzip コマンドで解答したほうが何倍も早いので、ぜひそちらを採用して下さい。

3. /cakephp/app/webroot を、/home/ユーザ名/www/demo/ へ設置

FTPで、/cakephp/app/webroot にあるフォルダ、ファイル群を、/home/ユーザ名/www/demo へアップロードします。

/home/ユーザ名/www/demo/index.php

/home/ユーザ名/www/demo へアップロードしたファイルの、index.php を2箇所、編集します。

/home/ユーザ名/www/demo/index.php

これで一応、トップページ(http://sola.bona.jp)にはアクセス出来ますが、sola.bona.jp/controllers/action に遷移すると、500エラー(Internal Server Error)が出ます。
コントロールパネルから、apache のログを確認すると、

[error] [client ***.***.***.***] mod_rewrite: maximum number of internal redirects reached. Assuming configuration error. Use 'RewriteOptions MaxRedirects' to increase the limit if neccessary.

てのが書かれています。

これは、さくらインターネットのサーバの仕様で、mod_rewrite を使う場合は .htaccess に RewriteBase を記述しないとエラーとなるらしいので、3つの .htaccess を編集します。

/home/ユーザ名/cakephp/.htaccess

/home/ユーザ名/cakephp/app/.htaccess

/home/ユーザ名/www/demo/.htaccess

上記のように書き換えれば、問題なく動作するはずです。
ドメインの用意もできていると思うので、http://sola.bona.jp に繋がれば、成功です。

これで、先に挙げた3つに対応出来ました。

リダイレクト出来ない

意気揚々と作成したサイトにアクセスして、動作を確認していると、なぜかリダイレクトが効かないという現象に出くわしました。

Warning: Cannot modify header information - headers already sent by (output started at /home/ユーザ名/www/demo/index.php:1) in /home/ユーザ名/www/demo/index.php on line (行数)

なんでこれは?
と探っていくと、こちらのサイトで解決方法を発見。

[さくらインターネット スタンダードプラン]リダイレクト処理ができない | じゃみじゃみ.net

書いてある通りに処理してみます。

  1. さくらインターネットコントロールパネルにログイン
  2. PHP設定の編集をクリック
  3. php.ini 設定ファイル編集画面で「output_buffering = On」を入力し「保存する」をクリック
  4. エラーが出ていた所が正常にリダイレクト処理を行っているか確認

これで解決しました。

頼むよマジで! 心の叫びです。
これで1時間悩みましたw

ということで、以上がさくらインターネットのサーバに CakePHP をインストールする方法でした!
何かの参考になれば幸いです。

-CakePHP, さくらインターネット
-