MAMPでの複数のローカルホストのたてかた！


MAMPは、Apache, MySQL, PHP をパッケージとして一括インストールすることができるソフトです。PHPの勉強用や[Pickles Framework](http://pickles.pxt.jp/)の様なPHPベースのCMSを自分のPC上で構築出来ます。

ここではMAMPのインストール方法と複数のローカルホストをたてる時の設定の仕方を書いてみます。

## MAMPのダウンロード

以下のMAMPの公式サイトからパッケージをダウンロードできます。

[http://www.mamp.info/en/](http://www.mamp.info/en/)

![mamp_003.png](https://qiita-image-store.s3.amazonaws.com/0/35975/8515b8b7-2f08-f0f2-49fc-bbe24e959069.png "mamp_003.png")

ダウンロードした`MAMP_MAMP_PRO_3.0.5.pkg`というファイルをダブルクリックします。↓

![mamp004.png](https://qiita-image-store.s3.amazonaws.com/0/35975/bccd6a40-2113-3160-ec4c-28f14fb20f81.png "mamp004.png")

インストーラーの流れにそっていけばインストール出来ます。(MAMP PROがいらない場合は一番最後でカスタマイズを選択すればMAMPのみをインストール出来ます)

"MAMP" の中に "MAMP.app" というファイルがあるので、ダブルクリックで実行してください。
以下のようなダイアログが表示されます。

![mamp005.png](https://qiita-image-store.s3.amazonaws.com/0/35975/33311b39-633e-3cd2-4661-4a104cf9ddce.png "mamp005.png")

「サーバを起動」を実行して左側の「Apacheサーバ」「MySQLサーバ」の状態が赤から緑に変わったことが確認できたら、「スタートページを開く」を実行してください。以下のようなページが表示されればインストール成功です。

![mamp006.png](https://qiita-image-store.s3.amazonaws.com/0/35975/58036dab-3e38-96b8-93da-2458c704bb1e.png "mamp006.png")


## バーチャルホストのたて方
MAMPをインストールすると、デフォルトでは /Applications/MAMP/htdocs/ がローカルディレクトリとして設定されており、ローカルディレクトリは、`http://localhost:8888/` でブラウザで表示を確認することができます。

図で説明してみます。↓

![mamap_0001.png](https://qiita-image-store.s3.amazonaws.com/0/35975/38580fd4-1664-2a94-4981-183ec3a102b8.png "mamap_0001.png")


しかしこの方法(デフォルト)だとつねに１つのローカルホストしか立てられな事になります。

「これ以外のフォルダでもMAMPが動く様に」複数のローカルホスト(バーチャルホスト)のたて方を以下に書きます。

バーチャルホストの設定は以下２ファイルで行います。

* /Applications/MAMP/conf/apache/httpd.conf
* /Applications/MAMP/conf/apache/extra/httpd-vhosts.conf

### httpd.conf を設定する

httpd.conf は次のパスにあります。

* /Applications/MAMP/conf/apache/httpd.conf

![mamap_0002.png](https://qiita-image-store.s3.amazonaws.com/0/35975/359a03dc-3f88-2b3b-1a3f-97bd1f14fcca.png "mamap_0002.png")



このファイルの下の方(およそ569行目あたり)に、次のような記述があります。

```
# Virtual hosts
#Include /Applications/MAMP/conf/apache/extra/httpd-vhosts.conf
```

この2行目の先頭の # を削除して、コメントアウトを解除します。

```
# Virtual hosts
Include /Applications/MAMP/conf/apache/extra/httpd-vhosts.conf
```


### httpd-vhosts.conf を設定する

httpd-vhosts.conf は次のパスにあります。

* /Applications/MAMP/conf/apache/extra/httpd-vhosts.conf

開いてみると以下の様になってると思います。これがデフォルト時の設定です。

```
#
# Virtual Hosts
#
# If you want to maintain multiple domains/hostnames on your
# machine you can setup VirtualHost containers for them. Most configurations
# use only name-based virtual hosts so the server doesn't need to worry about
# IP addresses. This is indicated by the asterisks in the directives below.
#
# Please see the documentation at 
# <URL:http://httpd.apache.org/docs/2.2/vhosts/>
# for further details before you try to setup virtual hosts.
#
# You may use the command line option '-S' to verify your virtual host
# configuration.

#
# Use name-based virtual hosting.
#
NameVirtualHost *:80

#
# VirtualHost example:
# Almost any Apache directive may go into a VirtualHost container.
# The first VirtualHost section is used for all requests that do not
# match a ServerName or ServerAlias in any <VirtualHost> block.
#
<VirtualHost *:80>
    ServerAdmin webmaster@dummy-host.example.com
    DocumentRoot "/Applications/MAMP/Library/docs/dummy-host.example.com"
    ServerName dummy-host.example.com
    ServerAlias www.dummy-host.example.com
    ErrorLog "logs/dummy-host.example.com-error_log"
    CustomLog "logs/dummy-host.example.com-access_log" common
</VirtualHost>

<VirtualHost *:80>
    ServerAdmin webmaster@dummy-host2.example.com
    DocumentRoot "/Applications/MAMP/Library/docs/dummy-host2.example.com"
    ServerName dummy-host2.example.com
    ErrorLog "logs/dummy-host2.example.com-error_log"
    CustomLog "logs/dummy-host2.example.com-access_log" common
</VirtualHost>
```


このファイルの一番下に、作成したいバーチャルホスト分以下の記述を追記します。

この例では、 `http://localhost:8001/` にアクセスしたら、 /Users/userId/web/localhost_8001/htdocs にあるファイルが表示されるように設定します。

以下のように書けば良いのですが、内容の内訳を説明します。

一番上の`Listen 8001`はこれからどのローカル番号に振るかを最初に決めます。

`Listen 8001`なら`http://localhost:8001/`でローカルホストを立ち上げる宣言文みたいなもので最初にこの項目は必ず入れなければいけません。

この場合8001番のローカルホストを使う事になるので、

よってその下の`<VirtualHost *:8001>`も8001が入ります。

その下の`DocumentRoot ""`と`<Directory "">`の`""`の中は2つともMacの「Users(ユーザー)」から「今回ローカルで使用するフォルダ」までのパスを書きます。

```
Listen 8001

<VirtualHost *:8001>
    DocumentRoot "/Users/userId/web/localhost_8001/htdocs"
    <Directory "/Users/userId/web/localhost_8001/htdocs">
        AllowOverride All
    </Directory>
</VirtualHost>
```

全体で見るとこんな感じです。↓

```
#
# Virtual Hosts
#
# If you want to maintain multiple domains/hostnames on your
# machine you can setup VirtualHost containers for them. Most configurations
# use only name-based virtual hosts so the server doesn't need to worry about
# IP addresses. This is indicated by the asterisks in the directives below.
#
# Please see the documentation at 
# <URL:http://httpd.apache.org/docs/2.2/vhosts/>
# for further details before you try to setup virtual hosts.
#
# You may use the command line option '-S' to verify your virtual host
# configuration.

#
# Use name-based virtual hosting.
#
NameVirtualHost *:80

#
# VirtualHost example:
# Almost any Apache directive may go into a VirtualHost container.
# The first VirtualHost section is used for all requests that do not
# match a ServerName or ServerAlias in any <VirtualHost> block.
#
<VirtualHost *:80>
    ServerAdmin webmaster@dummy-host.example.com
    DocumentRoot "/Applications/MAMP/Library/docs/dummy-host.example.com"
    ServerName dummy-host.example.com
    ServerAlias www.dummy-host.example.com
    ErrorLog "logs/dummy-host.example.com-error_log"
    CustomLog "logs/dummy-host.example.com-access_log" common
</VirtualHost>

<VirtualHost *:80>
    ServerAdmin webmaster@dummy-host2.example.com
    DocumentRoot "/Applications/MAMP/Library/docs/dummy-host2.example.com"
    ServerName dummy-host2.example.com
    ErrorLog "logs/dummy-host2.example.com-error_log"
    CustomLog "logs/dummy-host2.example.com-access_log" common
</VirtualHost>

Listen 8001

<VirtualHost *:8001>
    DocumentRoot "/Users/userId/web/localhost_8001/htdocs"
    <Directory "/Users/userId/web/localhost_8001/htdocs">
        AllowOverride All
    </Directory>
</VirtualHost>
```

上記の設定ができたら、MAMP のコントロールパネルから MAMP を再起動します。

新しく設定したバーチャルホスト `http://localhost:8001/` にテストファイルなどを置いて正しく設定ができているか、確認してみてください。

このようにしていけば、例えば「8001」から＋１つづつ(8002、8003と)ローカルホストを増やしていく事が可能です。




### まとめと参考サイト

今回の記事をまとめるにあたって、「[Pickles Framework](http://pickles.pxt.jp/setup/preparation/mac/index.html)」さんのサイトを大変参考にさせてもらいました。ありがとうございます。

またMAMPのバージョンですが新しいVer3.xxに合わせて書きました。