WindowsにApache2.2.14+PHP5.2.12+MySQL5.1.44+CakePHP1.2.6をインストールしてみた

CakePHPの環境を整えようと思った。

必要なもの

インストール

とりあえず上記4つのソフトをインストールする。

Apache 2.2.14のインストール

apache_2.2.14-win32-x86-openssl-0.9.8k.msiを実行してインストールするだけ。

  • インストール先
    • D:\apps\development\Apache2.2
CakePHP 1.2.6のインストール

cakephp-cakephp1x-ef18ab2.zipを解凍しディレクトリの名前をcake_1.2.6に変更して、Apacheのhtdocs以下に配置。

  • インストール先
    • D:\apps\development\Apache2.2\htdocs\cake_1.2.6

ちなみにcake_1.2.6はこんな構成になっていること

cake_1.2.6/
    +----- app/
    +----- cake/
    +----- vendors/
    +----- .gitignore
    +----- .htaccess
    +----- index.php
    `----- README
PHP 5.2.12のインストール

php-5.2.12-Win32.zipを解凍して適当なディレクトリに配置する。

  • インストール先
    • D:\apps\lang\php\php-5.2.12-Win32

次に、PHPのインストールディレクトリ直下に「libmysql.dll」というファイルがあるので、これを「C:\WINDOWS\system32」にコピーしておく。これ重要。zip形式のPHPをインストールするときには自分でここまでやる必要があるらしい。

MySQL 5.1.44のインストール

最初の画面、とりあえず「Next」

Setup Type:今回はCustomでいく

Custom Setup:今回はインストール先を「D:\apps\development\MySQL\MySQL Server 5.1」に変更。あとはそのまま。

Ready to install the program:Installを押す

インストールが完了してNextを押していくと以下の画面になる。ここで、最初のチェックボックス(Configure the MySQL Server now)だけにチェックをしてFinishを押す。

ここからサーバの設定を開始。Nextを押す。

MySQL Server instance configuration: Detail configurationを選んでNext

Developer Machineを選んでNext

Transactional Database Onlyを選んでNext

InnoDB Tablespace Settingsは何も変更せずにNext

Online Transactional Processing(OLTP)を選んでNext

Enable TCP/IP, Enable Strict Modeを選んでNext

Best Support〜を選んでNext(日本語って出てるやつね)

Install as Windows Serviceにチェックが入っていることを確認してNext。とくに変更の必要はないかな。

この下の画像でパスワードを入力してNext。ここで、Current root passwordと出ているのは、一度インストールして再インストールしようとしているから。初めてのインストールの場合、パスワード入力エリアは2つしか表示されていないはず。ちなみに、Current root passwordで以前指定したパスワードを指定しても次の画面でエラーになってしまった。なので、今回は1つ目のテキストボックスは空っぽすることでうまくいった(下の画像は3つとも入力しているけど・・)

最後にExecute押す。

全部の作業がうまくいったっぽい。

ここまでできたらインストール完了。

  • インストール先

そして、コマンドプロンプトからD:\apps\development\MySQL\MySQL Server 5.1\binに移動して以下のコマンドを実行しログインできることを確認する。パスワードはさっきウィザードで入力したやつね。

D:\apps\development\MySQL\MySQL Server 5.1\bin>mysql.exe -u root -p
Enter password: ****
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.1.44-community MySQL Community Server (GPL)

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql>

こんな感じでログインできたらOK。
ついでに、CakePHP用のデータベースを作成しておく。今回作成するDBは・・

  • データベース名: cake_test_db
  • ユーザ名: cake_test
  • パスワード: cake_test
mysql> GRANT ALL PRIVILEGES ON cake_test_db.* TO cake_test@localhost IDENTIFIED BY 'cake_test';
mysql> FLUSH PRIVILEGES;
mysql> CREATE DATABASE cake_test_db;

と、問題なく終了したらOK

ApachePHPMySQLを連携させる

# 2010.02.24 PHPのモジュールをロード
LoadModule php5_module "D:/apps/lang/php/php-5.2.12-Win32/php5apache2_2.dll"
<IfModule mod_php5.c>
  AddType application/x-httpd-php .php
  PHPIniDir "D:\apps\lang\php\php-5.2.12-Win32"
</IfModule>

#以下行のコメントを外す
LoadModule rewrite_module modules/mod_rewrite.so

# 追加 CakePHPの.htaccessがちゃんと動くように設定しておく
<Directory D:\apps\development\Apache2.2\htdocs\cake_1.2.6>
    AllowOverride All
</Directory>
PHPの設定

PHPをインストールしたディレクトリ(D:\apps\lang\php\php-5.2.12-Win32)にphp.ini-recommendedというファイルがあるので、これをコピーしてphp.iniと名前を変更しておく。そして、php.iniの以下の部分を変更しておく。

; php_mysql.dllなどの拡張ライブラリの場所を指定
;extension_dir = "./"
extension_dir = "D:\apps\lang\php\php-5.2.12-Win32\ext"

; 下記3つの設定をコメントアウト
extension=php_mbstring.dll
extension=php_mysql.dll
extension=php_mysqli.dll

; 日本語をあつかるように設定
mbstring.language = Japanese
mbstring.internal_encoding = UTF-8
mbstring.http_output = UTF-8

phpの動作確認をするにはhtdocsにtest.phpなどとファイルを作成して以下の内容を記述する。そして、ブラウザからtest.phpにアクセスすると設定内容が表示される。ここで、mbstringやmysql等の文字で検索してphp.iniに記述した内容が反映されていればOK。
※ test.phpの内容(問題がある場合は、このファイルを作って設定内容を確認する)

<?php phpinfo() ?>
参考

http://d.hatena.ne.jp/arakik10/20060611/p1

ここまでできたらApacheを”再起動”してhttp://localhost/cake_1.2.6にアクセスする。すると以下のような画面が出ていれば、ここまでは問題ない。

CakePHPの設定をする

上の画面が表示されたら、後はCakePHPの設定を行うのみ。画面で黄色くなっている部分(上下2箇所)はまだ問題のある箇所なのでこれを直してゆく。
まず、最初の黄色い部分は

Please change the value of 'Security.salt' in app/config/core.php to a salt value specific to your application [CORE\cake\libs\debugger.php, line 549]

となっている、これはSecurity.saltという値をデフォルトから変更してくださいと言っている。cake_1.2.6\app\config\core.phpを下記のように変更。
cake_1.2.5\app\config\core.php

	//Configure::write('Security.salt', 'DYhG93b0qyJfIxfs2guVoUubWwvniR2G0FgaC9mi');
	// 適当な文字列に変更
	Configure::write('Security.salt', 'dkJFDKnfdapfdKFNPEd4fja2VZakdEd2faqeewqf23');

この状態でもう一度http://localhost/cake_1.2.6にアクセスし、1つ目に表示されていた黄色い箇所が消えていることを確認する。


次の黄色い部分。

Your database configuration file is NOT present.
Rename config/database.php.default to config/database.php

database.php.defaultをdatabase.phpに変更しろと言っているので変更する。と、このファイルにはDBの接続情報もあるので一緒に変更しておく。

  • 変更ファイル
    • D:\apps\development\Apache2.2\htdocs\cake_1.2.6\app\config\database.php

下記のように今回変更する部分はlogin, password, databaseの3か所。

class DATABASE_CONFIG {

	var $default = array(
		'driver' => 'mysql',
		'persistent' => false,
		'host' => 'localhost',
		'login' => 'cake_test',
		'password' => 'cake_test',
		'database' => 'cake_test_db',
		'prefix' => '',
		'encoding' => 'UTF-8'
	);

	var $test = array(
		'driver' => 'mysql',
		'persistent' => false,
		'host' => 'localhost',
		'login' => 'cake_test',
		'password' => 'cake_test',
		'database' => 'cake_test_db',
		'prefix' => '',
		'encoding' => 'UTF-8'
	);
}

変更したらもう一度http://localhost/cake_1.2.6にアクセス。すべてグリーンになればインストール完了!

とりあえず、ここまでできたらいいんだろうか。次はサンプルのアプリを作ってみよう。
あ、今回文字コードUTF-8で統一したつもりだけど、まだ設定漏れがあるかも知れない。もし、今回の設定で駄目だった場合はまた更新しようと思う。