今回はMAMPのインストールとドキュメントルートの設定などの基本設定が終わったあとにやっておきたい、バーチャルホストの設定についてまとめていきたいと思います。MAMPというよりは、おそらくMAMPが代理でインストールしてくれる、Apacheの設定方法になります。

まだMAMPのインストールがお済みでない方は、【Mac OSX】MAMPの初期設定 : 基本の設定をご覧ください。

バーチャルホストとは?

バーチャルホストというのは、簡単に言うと一台のマシンないしIPアドレス(ドメイン)で、複数のサイトがあるように使うことができる技術です。

ウェブ制作の携わっているとone社の案件、two社の案件にthree社の案件…etc.を同時に管理しないといけないということがありますよね。フォルダで分けるのは無理がありますし、マシンを増やすわけにもいきません。バーチャルホストの設定はほぼ必須となることでしょう。

  • 自社サイトhoge
  • one社のウェブサイト
  • two社のウェブサイト
  • three社のウェブサイト

今回は、『1台のPCで複数サイト管理』を実現すべく、上記4つのサイトを例にMAMP開発環境を設定して行きます。

前提条件

  • MAMPをインストール済
  • MAMPインストール場所:「アプリケーション」
  • Document Root:/Applications/MAMP/htdocs
  • http://localhost:8888/でDocument Rootにアクセスできる

Document Rootやポートがデフォルトでない方は適宜読みかえてください。

httpd.confファイルの設定

まずはApacheのバーチャルホスト機能を使うためにバーチャルホスト用の設定ファイル(httpd-vhosts.conf)を読み込むよう設定を変更します。

「アプリケーション」-「MAMP」-「conf」-「apache」-「httpd.conf」をテキストエディタで開きます。
apache-vhost1

「#Include /Applications/MAMP/conf/apache/extra/httpd-vhosts.conf」の行頭「#」を削除し、httpd-vhosts.confを有効化します。
apache-vhost2

以上を編集した後、保存して終了します。

バーチャルホスト設計

次にバーチャルホストの設定をしていきます。設定自体はとても簡単なので、どう設定するかをまず考えましょう。最低限必要な情報は以下の3つでしょうか。

ServerName ドメイン名(例:hoge.localhost)
DocumentRoot ルートフォルダのパス
ErrorLog エラーログファイルの場所

他にも、ServerAdmin、ServerAlias、CustomLogが設定できますがこれは開発環境なら飛ばしてもいいだろうということで割愛します。
詳しく知りたい方は、Apache バーチャルホスト説明書(公式)こちらをどうぞ。

Apacheのドキュメントルートは「htdocs」なので、「htdocs」の直下に4つのフォルダを作成します。それぞれがドキュメントルートのようになって、別のURLでアクセスできればうまく行きそうですよね。文章ではちょっとよくわかりにくいかもしれませんが、こんな感じにフォルダを作ってみました。

apache-vhost3

このフォルダに対して、アクセスしたいドメインを用意します。

ServerName DocumentRoot ErrorLog
hoge.localhost /Applications/MAMP/htdocs/hoge logs/hoge-error.log
one.localhost /Applications/MAMP/htdocs/one logs/one-error.log
two.localhost /Applications/MAMP/htdocs/two logs/two-error.log
three.localhost /Applications/MAMP/htdocs/three logs/three-error.log

上の表は、「http://hoge.localhost:8888/」というURLで「/Applications/MAMP/htdocs/hoge」が表示できるようにしたいなぁという設計になっています。ServerNameは他と重複しなければ自由につけることができます。

決めることは以上です。ではこの表に沿って設定ファイルを作っていきます。

httpd-vhosts.confファイルの設定

「アプリケーション」-「MAMP」-「conf」-「apache」-「extra」-「httpd-vhosts.conf」をテキストエディタで開きます。

apache-vhost4

nameVirtualHostのポート設定を確認します。MAMPのポート番号になっていればOK。

NameVirtualHost *:8888

次に、バーチャルホストの設定を書きます。コメント行にサンプルがあるのでそれをコピーして追記します。

<VirtualHost *:8888>
    DocumentRoot "/Applications/MAMP/htdocs"
    ServerName localhost
    ErrorLog "logs/localhost-error.log"
</VirtualHost>

こちらがバーチャルホスト1つ分の設定です。「DocumentRoot」「ServerName」「ErrorLog」を先ほど設計した値に書き換えます。すべて設定を書いた例は以下のようになります。

apache-vhost5

…さっきの表になかったlocahosって設定が増えてますね。バーチャルホストを有効にすると通常のDocumentRootは無効になり、バーチャルホストの最初に設定したホストがデフォルト設定になります。そのため、いままでどおり「htdocs」にアクセスできるようにするために追記しておきました。

Apache再起動

設定ファイルの内容は起動時に読み込まれるので、MAMPを再起動して設定を反映します。
MAMPメニューから、「サーバーを停止」でApacheが終了した後「サーバーを起動」をクリックします。

apache-vhost6

以上で、Apacheの設定は終了です。
最後に、今回追加したServerNameをURLとして認識できるように設定します。

hostsファイルの設定

ローカルホストのIPアドレス(127.0.0.1)に対して、設定したServerNameを設定します。
hostsの設定が反映するようにリフレッシュもしておきましょう。

127.0.0.1 localhost hoge.localhost one.localhost two.localhost three.localhost

以上が終わったら、「http://hoge.localhost:8888/」にアクセスしてみて、設定したフォルダの内容が見られるか確認してみてください。
その他のドメインについても同様に確認して、バーチャルホストの設定は終了です。

※ MAMPバージョン 2.2(Apache2.2)での内容です。