MAMPのバーチャルホストで複数プロジェクトをラクラク管理（方法２）

#目次
[はじめに](#はじめに)
[Virtual Hostを有効化](#Virtual Hostを有効化)
[Virtual Hostの設定](#Virtual Hostの設定)
[hostsファイルを編集](#hostsファイルを編集)
[確認](#確認)

#はじめに
以前書いた[MAMPのバーチャルホストで複数プロジェクトをラクラク管理（方法１）](https://qiita.com/drafts/29cc6fe62561194f043c/edit)の記事ですが、あの後から何故か「localhost:8005」などにアクセスすると、localhost:8888に返されてしまう現象が発生。
編集したファイルを確認するも問題はなく、挙げ句にはMAMP自体を入れ直してみましたが改善する気配がない。

そこで、前回の方法１とは違ったアプローチを試してみました。
やり方自体は検索すれば適当にヒットするのですが、もしListen 8001~を追加してみたけど似たような症状が起こっても申し訳ないので、こちらに備忘録も兼ねて残しておきます。

#Virtual Hostを有効化
[前回の記事](https://qiita.com/drafts/29cc6fe62561194f043c/edit)と同じく、「**applications/mamp/conf/apache/httpd.conf**」を開いて、576行目付近の

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

↑の`#`を外して↓のようにコメントアウトしてください。

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

#Virtual Hostの設定
こちらも[前回の記事](https://qiita.com/drafts/29cc6fe62561194f043c/edit)と同じく「**applications/mamp/config/apache/extra/httpd-chosts.conf**」を開いて、末尾くらいに

```httpd-vhost.conf
<VirtualHost *:80>
　以下略
</VirtualHost>

<VirtualHost *:80>
　以下略
</VirtualHost>
```

と記述された場所があります。

これを雛形にするので、`<VirtualHost *:80> 〜 </VirtualHost>`を末尾に１つ複製します。
複製した`<VirtualHost *:80> 〜 </VirtualHost>`の中で書き換えるのは、`DocumentName`と`ServerName`、オプションの`ErrorLog`と`CustomLog`です。
ちなみにオプションは任意なので、いらないのであれば最初の2項目だけで大丈夫です。

```httpd-vhosts.conf
<VirtualHost *:80>
    DocumentRoot "/Applications/MAMP/htdocs/project-name"
    ServerName project-name.local.com
    ErrorLog "logs/project-name-error_log"
    CustomLog "logs/project-name-access_log" common
</VirtualHost>
```

`DocumentRoot`
→　htdocs配下のプロジェクトフォルダを指定してください。
`ServerName`
→　「http://指定して文字列」と入力することでDocumentRootで指定したプロジェクトが表示されます。
　　ここでは「http://project-name.local.com」と入力することで、従来の「http://localhost:8888/project-name」と同じ様にアクセスできます。
`ErrorLog`、`CustomLog`
→　この2項目はオプションです。指定した場所（**logsフォルダ以下**）に、指定した名前でエラーログファイルが生成されます。

#hostsファイルを編集
ここではターミナルを使って、hostsファイルを編集していきます。
ちなみにターミナルを使いたくない人は、「**private/etc/hosts**」にあります。

では、ターミナルを起動し、`$ sudo vi /etc/hosts`と打ち込んでエンターを押してください。
パスワードを求められるので、入力してエンター。

すると以下のような画面になるはずです。

```ターミナル
##
# Host Database
#
# localhost is used to configure the loopback interface
# when the system is booting.  Do not change this entry.
##
127.0.0.1       localhost
255.255.255.255 broadcasthost
::1             localhost
~
~
~
~
~
"/etc/hosts" 12L, 275C
```

そのまま**i**を押すと、末尾が`-- INSERT --`となり、インサートモードに切り替わります。
そうしたら矢印キーとエンターで`::1`の次の行に移動して、`127.0.0.1 test-project.local.com`と打ち込みます。
test-project.local.comというのは、先程httpd-vhosts.confのServerNameで指定した文字列です。
もしhttpd-vhosts.confで複数追加したのであれば、その分だけ`127.0.0.1 ▲▲▲▲`と打ち込んでください。
今回は以下のように入力しました。

```ターミナル
##
# Host Database
#
# localhost is used to configure the loopback interface
# when the system is booting.  Do not change this entry.
##
127.0.0.1       localhost
255.255.255.255 broadcasthost
::1             localhost
127.0.0.1 project-name.local.com
~
~
~
~
~
"/etc/hosts" 12L, 275C
```

入力したら、`esc`キーを押して、そのまま`:wq`と入力してエンターで元のターミナルに戻ります。

#MAMPのポート番号を変更
MAMPを起動させて、設定画面のPortsタブを開いて、**80 & 3306**を押してポート番号を80に変更してMAMPを再起動させます。

#確認
先程のServerNameで指定した文字列をブラウザのアドレスバーに入力してアクセスして表示されていれば成功です。
時折、apacheの反映にタイムラグが発生する時があるので、他のポート番号にリダイレクトされたり、エラーが出たりしたら、MAMPを終了して1〜2分間を空けてから再起動させたり、`$ sudo killall -HUP mDNSResponder`でDNSキャッシュをクリアしたり、PCの再起動を試してみてください。

もちろんタイプミスも十分有りえるので、`httpd.conf`、`httpd-vhosts.conf`、`hosts`もしっかり確認してみましょう。