MAMP 使わずに Mac で Apache/PHP を動かしてみる

今転職活動をしていて、Flash しか経験した言語がないとかだとゲームとかデザインとか微妙な職種しか募集してないので、募集が多いPHPとかひさしぶりに勉強してみた。VMWare とか Linux のイメージディスクをダウンロードしてると3時間とか言ってるので、我慢できずにすでにMacにプリインストールされてるPHPApacheで動かすところまで頑張ってみた。

Apacheの起動

MacはデフォルトでApache2.2がインストールされているっぽい。こいつは /usr/sbin/apachectl ってやつをstart/stop/restartすると起動したり停止したりできる。ただし、root権限が必要なので、下記のようにsudoとか、suとかしないとダメ。

$>sudo /usr/sbin/apachectl start

起動したら、ブラウザで
http://localhost/ とか、
http://localhost/~ユーザー名 とか
とかを確認してみて、動いてたら成功。失敗してたらログを見て原因を探る。
ログは、/private/var/apache2/log/ あたりに access_log とか error_log とかがあるので、それを見る。 また、動いたかどうかは sudo ps aux | grep httpd とかでも確認できる。起動に失敗したら httpd プロセスが動いてない。

PHPを有効にする

デフォルトではPHPが有効になってないので、

<?php
print("Hello, World!\n");
?>

とかって書くと、"Hello, World!" っていう文字列だけが表示されて欲しいところ、このスクリプトがそのまま表示されてしまう。.php拡張子のファイルは、phpとして処理してもらうようにApacheの設定を書き換える。Apache の設定ファイル、いわゆる "conf" ファイルは、/etc/apache2/ にある httpd.conf を書き換える。編集したあと、文字コードが云々のエラーでApacheが起動しなくなったら悲惨なので、必ずバックアップをとってから作業すること。このファイルも編集にはroot権限が必要なので、sudoをつけつつviとかemacsとか好きなエディタで編集する。
phpで検索して、
#LoadModule php5_module libexec/apache2/libphp5.so
って書かれてる場所をさがして、そこの行頭の"#"を削除する。これだけ。
編集した後はApacheを再起動して、
http://localhost/
にアクセスできるか確認する。できてなかったらなんかおかしいのでもういっかい最初からやり直す。アクセスできていたら、/Library/WebServer/Document/ に、index.php というファイルを作成し、

<?php
print("Hello, PHP!");
?>

という内容を書きこむ。
そして http://localhost/index.php をブラウザで開き、"Hello, PHP!" が表示されたら成功。

バーチャルホストを切る

バーチャルホストとはなんぞや、というと簡単にいえば今まで "localhost" という名前でアクセスしてきたけど、開発環境が色々ごちゃごちゃしてきたら、ホスト名を変えて管理したくなってくる。たとえば、www.katsuren.com というのがあったとして、これをテストする環境は test.katsuren.com で、開発は dev.katsuren.com とか。田中さんからの発注があって、そのホストは www.tanaka.com なんだけど、ローカルで開発するときは local.tanaka.com だとか。そんな感じ。
この設定も、Apache の conf ファイルを編集する。すでにこの設定ファイルが外部に出されているので、これを編集することにする。具体的には /etc/apache2/users/"ユーザー名".conf だ。こいつに以下の記述を追記する。

<Directory "/Users/ユーザー名/works/dev.katsuren.com">
    Options Indexes MultiViews
    AllowOverride None
    Order allow,deny
    Allow from all 
</Directory>

<VirtualHost *:80>
    ServerAdmin あなたのEメール
    DocumentRoot "/Users/ユーザー名/works/dev.katsuren.com"
    ServerName dev.katsuren.com
    ServerAlias dev.katsuren.com
    ErrorLog "/private/var/log/apache2/dev.katsuren.com/error_log"
    CustomLog "/private/var/log/apache2/dev.katsuren.com/access_log" common
</VirtualHost>

ここで、ドキュメントルートとなる
/Users/ユーザー名/works/dev.katsuren.com とか、
ログ出力先となる
/private/var/log/apache2/dev.katsuren.com は、
ディレクトリがないとApache再起動のときにエラーで起動ができなくなってしまうので、先にディレクトリを作成しておく。
次に"dev.katsuren.com"をhostsに登録しておく。

127.0.0.1 dev.katsuren.com

そしてApache再起動。/Users/ユーザー名/works/dev.katsuren.com/ に上で作った index.php あたりをコピーして、
http://dev.katsuren.com/index.php にブラウザからアクセス、"Hello, PHP!" が表示されたら成功。


こんな記事かいてるうちにディストリビューションのダウンロードが終わったー!Linuxの構築しよう♪