CakePHP は Apache で動作することが前提なため、IIS へのインストールは情報も少なく面倒である。Server 2008 R2 の IIS7.5 へ CakePHP をインストールしたので、メモとして記録しておく。
CPU | Core i7 920 |
---|---|
RAM | DDR3 12GB |
HDD | 1TB(RAID1)×2 |
OS | Windows Server 2008 R2 Datacenter |
Web daemon | Internet Information Server 7.5 |
PHP | PHP 5.3.0 |
公式サイト http://cakephp.jp/ から安定版(Stable)の zip ファイルをダウンロードする。2010/1/21 現在の安定版は cake_1.2.5.zip。
適当なフォルダに解凍する。なお、既存の Web サイトがある場合、CakePHP は新しい Web サイトを構築するため、フォルダの位置は現在のサイトがあるフォルダ下でなくともよい。
cake_X.X.X というフォルダ名を適当に変更する。ここでは cakephp とする。 フォルダ構成が下記のようになることを確認する(太文字が重要)。
IIS7.5 では mod_rewrite が利用できないらしく、MS が提供する URL Rewrite 1.1 を使用する。
URL Rewrite 1.1 のインストールには Web Platform Installer(Web PI) と呼ばれる管理ソフトが必要である。このへん から落としてインストールする。現時点でのバージョンは 2.0。
Web PI のインストールが完了して起動すると、URL Rewrite がインストールできる。スクリーンショットを取り忘れたが、ウィザードの指示に従うだけなので簡単だ。
ちなみに私の環境では、このインストール後になぜかブルースクリーンになってサーバーが落ちた。再起動後、正常に URL Rewrite がインストールできていたようなのでよしとしたが、原因は不明である。
IIS マネージャーの [Web サイトの追加] で Web サイトを追加する。
サイトの基本情報を入力する。
ポートは既にサイトが存在している場合、80 番以外のポートにするか、80 番にしてホスト名で判別させる必要がある。ここでは 50000 番のポートとした。
新しく作った Web サイト cakephp を選択する。IIS の項目に [URL 書き換え] があるので、これをダブルクリックする。
画面右メニューにある [規則のインポート] をクリックする。
[書き換え規則]に下記を貼り付けする。
RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^(.*)$ index.php?url=$1 [QSA,L]
[変換済みの規則] に問題がなさそうなら、右メニューの [適用] をクリックする。
これは CakePHP とは直接関係ないが、新しいサイトを作っているので設定しなければならない。 IIS マネージャで cakephp サイトを開き、[ハンドラーマッピング] を開く。
[モジュールマップの追加]で下記のようにして、マッピングを追加する。
ポートを 80 番以外にした場合、ファイアウォールを開けなければ「このwebページは表示できません」となってしまう。Windows ファイアウォールの設定で受信の規則にポート許可を追加する。
ここまでの状態でサイトにアクセスするとおそらく下記のようにエラーがでる(黄色のメッセージ)。バージョンは 1.2.5 なのになぜか 1.2.4 と表示されている。。。
一つずつつぶしていく。
1 つ目のエラーはハッシュに用いる文字列が既定のときの Notice。app/config/core.php を開き "salt" を検索して、下記の行のランダムな文字列を適当に書き換えればよい。文字列は適当にキーボードを叩くとかして入力する。要は簡単でなければなんでもいい。
Configure::write('Security.salt', 'mf138$q0env84%hqtidjgaoid');
これで更新すれば 1 つ目は緑になるはずだ。
2 つ目は app/tmp フォルダに IIS の匿名ユーザー "IUSR" の書き込み権限がないと出るエラー。app/tmp フォルダのプロパティ→セキュリティで IUSR を追加し、書き込み権限を付加する。
データベース設定ができていないよ!というエラー。app/config/database.php.default を database.php にリネームする。 ファイルを開き、下記の設定部分を適宜変更する。ただし、データベースを使用しない場合はたぶん設定しなくともよい。
var $default = array( 'driver' => 'mysql', 'persistent' => false, 'host' => 'ホスト名', 'login' => 'ユーザー名', 'password' => 'パスワード', 'database' => 'データベース名', 'prefix' => '', );
エラーを消していくとすべて緑になる。
URL Rewrite は概ね順調に動いていたのだが、パラメータを含む次のような URL でエラーがでた。
/books/index/page:1
エラー内容はサーバー上のブラウザでアクセスするとこんな感じ。
HTTP Error 500.50 - URL Rewrite Module Error. The URI scheme is not valid. (URI のスキームが無効です。)
なんのこっちゃわからんエラーだが、どうやら URI にコロン(:)が含まれているのが、気に入らないらしい。
これは URL Rewrite 1.1 の不具合らしく、URL Rewrite 2.0 をインストールすることで解決した。 っていうか、直接インストーラ落とせんのかい!って感じですが。
ちなみにインストール時に再起動を要求されるが、しなくても特に問題なく動作した。
Kenz Yamada(山田研二)。1984年生。大阪。ちょっとずつ好きなプログラム作ってます。
好きなものはカメラと旅行。ガジェットや身の回り、ちょっとこだわります。
詳しくは Web mixi で。