OSX標準のApache/PHPでPostgreSQLやMySQLを使えるようにしても良いのですが、いろいろカスタマイズしたい場合はMacPortsの方が便利だったりします。インストール手順が古かったりするブログもあったので(手順が抜けているかも知れませんが)最初から書きます。
MacPortsのインストール
MacPortsをインストールにはXcode (OSXの開発環境)が必要です。DVDに付属しているXcodeより、Webサイトから最新版のXcodeをダウンロードした方が良いでしょう。
http://developer.apple.com/technologies/tools/xcode.html
MacPortsはパッケージまたはソースからインストールできます。
http://www.macports.org/install.php
ソースからインストール必要性はあまりないので、「Mac OS X Package (.pkg) Installer」のセクションから自分の環境(Snow Leopard, Leopard, Tiger)に合ったパッケージをインストールすれば準備完了です。
Portsパッケージのインストール
MacPortsのパッケージはportコマンドでソースからインストールします。今回はApache2, PHP5, PostgreSQL 8.4, mysql 5をインストールします。
sudo port install apache2 php5-* postgresql84 mysql5
執筆時点でのPHP5パッケージはPHP 5.3でした。PHP 5.2を利用したい場合はphp52-*を利用します。このコマンドを実行するとphp-gtkなどのGUIアプリケーションもビルド&インストールします。非常に沢山のパッケージをインストールしてしまうので、少なくしたい場合はphp-gtk、php-qt、php-cairoなどのパッケージを含めないようにします。
PHPモジュールは複数ロードできますが、Zendエンジンのモジュールは一度に一つしかロードできないので注意してください。
例: php-apc, php-apd, php-eaccelerator, php-xdebugなど
apacheの起動
Apacheを自動起動したい場合は以下のコマンドを実行します。
sudo launchctl load -w /Library/LaunchDaemons/ org.macports.apache2.plist
Apacheを起動・停止するエイリアスを定義しておくと便利です。
alias mysqlstart=’sudo /opt/local/bin/apachectl start’
alias mysqlstop=’/opt/local/bin/apachectl stop’
postgresqlの起動
まずデータベースを初期化しなければならないので初期化します。私は/var/pgsqlをデータディレクトリにしました。
sudo mkdir /var/pgsql && chown yohgaki:yohgaki /var/pgsql
データベースをutf8エンコーディングで初期化します。MacportsのPostgreSQLのコマンドはバージョン毎に分けてインストールされています。
/opt/local/lib/postgresql84/bin/initdb -E utf8 –no-locale .
MySQLを自動的に起動したい場合は、以下のコマンドを実行します。
/Library/LaunchDaemons/org.macports.postgresql84-server.plist
以下のエイリアスを登録していると便利です。
pgsqlstart=’/opt/local/lib/postgresql84/bin/pg_ctl start -D /var/pgsql -l /var/pgsql/pgsql.log’
pgsqlstop=’/opt/local/lib/postgresql84/bin/pg_ctl stop -D /var/pgsql -m fast’
psql=’/opt/local/lib/postgresql84/bin/psql’
mysqlの起動
MySQLを自動的に起動したい場合は、以下のコマンドを実行します。
sudo launchctl load -w /Library/LaunchDaemons/org.macports.mysql5.plist
以下のエイリアスを登録していると便利です。
alias mysqlstart=’sudo /opt/local/bin/mysqld_safe5 &’
alias mysqlstop=’/opt/local/bin/mysqladmin5 -u root -p shutdown’