macosxのapache2でサブドメイン環境を作る

web開発のテスト環境はmacのapache2使ってみることにしました。

  • メリット
    • ローカルで動かせるので、スタンドアロンな状況でも開発できる。
    • レスポンスが速い(たぶん)
    • 簡単に構築できる(と思った)
  • デメリット
    • macosxapacheの設定の資料がwebにあんまり無い。

apacheの起動

apacheの起動は簡単。GUIでシステム環境設定 -> 共有 -> web共有 を有効にするだけ。
http://192.168.0.5/ とか http://192.168.0.5/~shikajiro/ http://localhost でアクセスできる。アクセスするURLも表示されてるので分かりやすい。

サブドメインの運用

http://192.168.0.5/~shikajiro/ とかだと、パスの設定が本番と異なってしまうので、サブドメイン運用がしたくなった。http://test1.localhost とか http://test2.localhost とか。

hostsで名前解決

/etc/hosts を編集。

127.0.0.1 test1.localhost
127.0.0.1 test2.localhost

とか書く。

VirtualHostでの振り分け

virtualhostの設定。ここに詰まったでの僕なりの解決策を書く。
ポイント:公開するディレクトリはユーザーのSitesディレクトリ内に作る!
DocumentRootを/var/www/htmlとかにした場合、403エラーになってしまう。アクセス権限をきちんと書けば動くかもしれないが、僕はアクセス権限がよくわからない!なるべく簡単なやり方を模索した結果、/User/username/Sites/以下ならエラーがでないことが分かったので、そこにDocumentRootを設定することにした。

以下、usernameをshikajiroと仮定。
htmlを置く公開ディレクトリの作成

mkdir /Users/shikajiro/Sites/test1

/etc/apache2/extra/httpd-vhosts.confの編集。サブドメインを追加していく。DocumentRootにhtmlがあるディレクトリを指定する。

<VirtualHost *:80>
    ServerName test1.localhost
    DocumentRoot "/Users/shikajiro/Sites/test1"
</VirtualHost>

/etc/apache2/httpd.conf httpd-vhosts.confのIncludeのコメントアウトを外して、httpd-vhosts.confが使用されるようにする。

# Virtual hosts
-#Include /private/etc/apache2/extra/httpd-vhosts.conf
+Include /private/etc/apache2/extra/httpd-vhosts.conf

再起動は上述したようにシステム環境設定からできますが、コマンドラインからもできます。

httpd -k restart

http://test1.localhost でアクセスできるはず!