MacでCakePHPの開発環境を整える
- 2008.02.08
- PHP
MacでCakePHPの開発環境を整えたときのメモ。CakePHPガイドブックを見ながら作業した。
- CakePHPのインストール
- MacのApacheの設定
- MySQLのインストール
■CakePHPのインストール
インストールというよりは、ファイルを置いておくという感じかな。
ダウンロードは、CakePHPのサイトから。
解凍したら、自分のサイトディレクトリに置く。
自分のホームディレクトリ/サイト/cake/
cake_1.1.19.6305のように長いディレクトリ名は cake のように短くしておく。好みもあるけど、単純に分かりやすいから。
■Apacheを起動してアクセスする
Apacheを起動する。
システム環境設定 > 共有 > パーソナルWeb共有
■PHPを有効にする。
/etc/httpd/httpd.conf の以下2行のコメントを外して有効にする。
(MacOS 10.5では、/etc/apache2/httpd.conf を編集する)
LoadModule php4_module libexec/httpd/libphp4.so AddModule mod_php4.c
Apacheを停止してから、起動する。
とりあえず、Safariでアクセスして、「CakePHP Rapid Development」が表示されればOK。
http://localhost/~自分のログイン名/cake/index.php
■PHPの設定ファイルを用意する
/etc/php.iniを用意する。
$ sudo cp /etc/php.ini.default /etc/php.ini
■Apacheを再度設定する
mod_rewriteが使えるようになっていることを確認する。
(MacOS 10.5では、/etc/apache2/httpd.conf を編集する)
/etc/httpd/httpd.conf
LoadModule rewrite_module libexec/httpd/mod_rewrite.so AddModule mod_rewrite.c
.htaccessを使えるようにする。
/etc/httpd/users を /etc/httpd/users.BAK として「ディレクトリ単位」でバックアップしておく。
/etc/httpd/users 内にある設定ファイルは「全て」apacheが読み込んでしまうため、注意する。
/etc/httpd/users/自分のログイン名.conf
<Directory "/Users/FinalCut/Sites/"> # Options Indexes MultiViews Options Indexes MultiViews FollowSymLinks # AllowOverride None AllowOverride All Order allow,deny Allow from all </Directory>
(Indexesはディレクトリ内を一覧できるので便利だけど、本番環境では利用しないことが多い)
(MultiViewsも日本語・英語の両方でコンテンツを提供する *.html.ja や *.html.en を使わなければ外しておく)
(MacOS 10.5では、/etc/apache2/users/自分のログイン名.conf を編集する。httpd.conf -> extra/httpd-userdir.conf -> users/*.conf という遠回りなIncludeが指定してある。)
上記の設定で、http://localhost/cake/をブラウザでアクセスするとエラーになるはず。
それでよし。以下の設定を行う。
■3つの.htaccessファイルにRewriteBaseを設定する
自分のホームディレクトリ/Sites/cake/.htaccess を編集して、RewriteBaseの行を加える
<IfModule mod_rewrite.c> RewriteEngine on RewriteBase /~自分のホームディレクトリ名/cake/ RewriteRule ^$ app/webroot/ [L] RewriteRule (.*) app/webroot/$1 [L] </IfModule>
自分のホームディレクトリ/Sites/cake/app/.htaccess を編集して、RewriteBaseの行を加える。
<IfModule mod_rewrite.c> RewriteEngine on RewriteBase /~自分のホームディレクトリ名/cake/app/ RewriteRule ^$ webroot/ [L] RewriteRule (.*) webroot/$1 [L] </IfModule>
自分のホームディレクトリ/Sites/cake/app/webroot/.htaccess を編集して、RewriteBaseの行を加える。
<IfModule mod_rewrite.c> RewriteEngine On RewriteBase /~自分のホームディレクトリ/cake/webroot/ RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^(.*)$ index.php?url=$1 [QSA,L] </IfModule>
▼これは、間違い。
RewriteBase /~自分のホームディレクトリ名/Sites/cake/
▼これは、正しい。
RewriteBase /~自分のホームディレクトリ/cake/
なぜなら、http://localhost/~自分のホームディレクトリ/cake/ をリライトの基本にしますよ。という指示だから。
■MySQLをインストール
MySQL5.0をダウンロードした。バージョンは今回とりあえずどうでもいい。
http://dev.mysql.com/downloads/mysql/5.0.html#macosx-dmg
dmgをダブルクリックでマウントして、mysql-5.0…pkgをインストールする。
MySQLStartupitem.pkgは、自動起動したい人用なので必要なし。
MySQL.prefPaneは、システム環境設定でMySQLを起動停止できるので、ダブルクリックしてインストールしておいた。
■MySQLを起動する
システム環境設定でMySQLを起動できるようにしたのでそれを利用してもよいと思う。
ただ、起動しなかった場合にエラーメッセージが表示されないので原因が分からないので手動で起動する。
rootになって手動で起動する。
# /usr/local/mysql/bin/mysqld_safe --user=mysql &
起動スクリプトを使って起動停止する場合、
# /usr/local/mysql/support-files/mysql.server start # /usr/local/mysql/support-files/mysql.server stop
■MySQLでデータベースとテーブルを作成しておく
データベースを作成する。
mysql> create database xxxdb; mysql> grant all privileges on xxxdb.* to tanaka@localhost identified by 'pass';
テーブルを作成する。
create table customers ( id bigint(20) not null auto_increment, name varchar(50) binary not null, tel varchar(15) binary not null, created datetime not null, modified datetime not null, primary key(id) ) type=MyISAM; create table order_records ( id bigint(20) not null auto_increment, name varchar(250) binary default null, customer_id bigint(20) not null, order_date datetime not null, flag_finished tinyint(4) not null, created datetime not null, modified datetime not null, primary key(id) ) type=MyISAM;
■MySQLへの接続情報をCakePHPに教える
データベースへの接続設定ファイル
自分のホームディレクトリ/Sites/cake/app/config/database.php
database.php.defaultをコピーしてdatabase.phpを作成する。
class DATABASE_CONFIG { var $default = array('driver' => 'mysql', 'connect' => 'mysql_connect', 'host' => 'localhost', 'login' => 'user', 'password' => 'password', 'database' => 'project_name', 'prefix' => ''); var $test = array('driver' => 'mysql', 'connect' => 'mysql_connect', 'host' => 'localhost', 'login' => 'user', 'password' => 'password', 'database' => 'project_name-test', 'prefix' => ''); } ?>
ブラウザでhttp://localhost/~自分のログイン名/cake/index.php にアクセスしてWarningが出なければOK。
MySQLが作成するSocket: /tmp/mysql.sock
PHPが探すSocketの場所: /var/mysql/mysql.sock
なので、 この違いのためWarningが出るはず。
解決策は2つ。
- PHPの設定を変更してソケットファイルを探す場所を変更する。
- MySQLがソケットファイルを作成する場所を変更する。
今回は、PHPの設定を変更して、/tmp/mysql.sockを探すようにした。
■PHPの設定を変更してソケットファイルを探す場所を変更する場合
さきほど作った/etc/php.iniを編集してソケットの場所を教えてあげる。
; Default socket name for local MySQL connects. If empty, uses the built-in ; MySQL defaults. mysql.default_socket = /tmp/mysql.sock
Apacheを再起動する。
面倒だったら、Macを再起動するのが簡単。
■MySQLがソケットファイルを作成する場所を変更する場合(参考情報)
/etc/my.cnfを修正すればよい。/usr/local/mysql/support-files/my-medium.cnfをコピーして/etc/my.cnfを作成する。
$ sudo cp /usr/local/mysql/support-files/my-medium.cnf /etc/my.cnf
サーバの設定
[mysqld] port = 3306 socket = /tmp/mysql.sock
クライアントの設定
[client] #password = your_password port = 3306 socket = /tmp/mysql.sock
MySQLを再起動する。
-
前の記事
MacでMPEG-1を音声付きでQuickTime編集可能な形式に動画変換する 2008.01.25
-
次の記事
MacでCakePHPのメモ 2008.02.13