MAMPでhtdocs内に複数のローカルホストを作成する方法

最近個人的にあれこれ試す時にMAMPをよく使うのですが、MAMPは通常「MAMP」フォルダ内にある「htdocs」がローカルディレクトリとして設定されていて、その中に必要となるデータを入れていきます。
この場合、作業しているサイトとは別のサイトを表示させたい時に、一旦「htdocs」内に入れてあったデータを退けて、空いた「htdocs」に表示させたいサイトのデータを入れるという面倒な作業が発生してしまいます。
そのため、今までは「htdocs」内に複数のフォルダを作って、そのフォルダごとに別のサイトのデータを入れていました。しかしやり方としてあまりよくありません。
そこで今回はMAMPの設定で複数ローカルホストをたてられるようにしてみます。設定の流れとしては下記の通り。
- httpd.confでhttpd-vhosts.confを使えるようにする
- httpd-vhosts.confで追加のローカルサーバーの設定を行う
ではやってみましょう。
httpd.confの設定
httpd.confの場所は「アプリケーション」フォルダ内の「/MAMP/conf/apache/httpd.conf」にあります。このファイルを編集するのでテキストエディタ等でファイルを開きましょう。

このファイルの574・575行目に下記のような記述があります(MAMPのバージョンによって多少前後する可能性があります)。
# Virtual hosts
#Include /Applications/MAMP/conf/apache/extra/httpd-vhosts.confこの2行目の先頭の「#」を消してコメントアウトします。
# Virtual hosts
Include /Applications/MAMP/conf/apache/extra/httpd-vhosts.conf「Include」は「包含する」等の意味を持つので、要は「/Application/MAMP/conf/apache/extra/httpd-vhosts.conf」を取り込む設定を行ったわけです。
httpd-vhosts.confの設定
先程のhttpd.confの575行目にも書かれていましたが、httpd-vhosts.confは「アプリケーション」フォルダ内の「/MAMP/conf/apache/extra/httpd-vhosts.conf」にあります。

httpd-vhosts.confを開いてファイルの一番下に新たなローカルホストの設定を追加します。
追加するコードは下記の通り(カギ括弧で囲まれている部分が設定する部分です)。
Listen 「ローカル番号」
<VirtualHost *:「ローカル番号」>
DocumentRoot "「設定したいフォルダのパス」"
<Directory "「設定したいフォルダのパス」">
AllowOverride All
</Directory>
</VirtualHost>
例えば、ローカル番号は8001番で、設定したいフォルダのパスは「/Applications/MAMP/htdocs/8001_sample」で設定すると下記のようになります。
Listen 8001
<VirtualHost *:8001>
DocumentRoot "/Applications/MAMP/htdocs/8001_sample"
<Directory "/Applications/MAMP/htdocs/8001_sample">
AllowOverride All
</Directory>
</VirtualHost> 設定できたら何かファイルを置いて、MAMPを再起動してみて「http://localhost:8001/ 」にアクセスしてみましょう。正しく表示ができていればOKです。
サイトを追加したい場合の手順
この設定が出来ればあとはhttpd-vhosts.confを開いて上記の設定をコピペしてどんどん追加していけばいいわけですが、その時はローカル番号は1ずつ増やしていきます。
特に決まっているというわけではありませんが、その方が管理がしやすいですし、楽です。
だから今回はローカル番号8001で登録しましたが、次追加で登録する時は8002で登録してURLは「http://localhost:8002/」となります。
あとはパスを設定すればその場所が表示されるのですが、このパスはフルパスなので、「/Applications」もしくは「/Users」から始まると思います。もちろん今回設定したhtdocs以外のディレクトリでも指定は可能です。
ちなみに、フルパスをコピーしたい場合はFinderでパスをコピーしたいフォルダを右クリックしてOptionキーを押すとパス名のコピーができます。これをそのままパスの部分にペーストしてやればOKです。

フォルダの管理に関して
いくつもローカルサーバーが立てれるようになるといちいち中身を切り替えなくてよくなるので便利になりますが、同時にフォルダもどんどん増えていって管理が大変になってしまいます。
それに、フォルダの名前を限定しすぎるのも考えものです。
「htdocs内のフォルダを移動する手間」が「httpd-vhosts.confを編集する手間」に変わっただけにすぎないのですから。
そこで、僕の場合は予め「仕事用」「プライベートのサイト用」などざっくりした用途ごとに分けて使う事にしました。

| 8001_htdocs | 元のhtdocsのような役割。何でも入れる。 |
|---|---|
| 8002_work | 仕事に関連するデータはここ。 |
| 8003_work | 仕事用2つ目。 |
| 8004_private | プライベートで何かしたいことがあればここで行う。 |
| 8005_private | プライベート用2つ目 |
5つあれば足りるでしょうし、これ以上増える場合は流石にフォルダ移動する事にします。
全部のフォルダを「8001_htdocs」「8002_htdocs」「8003_htdocs」のようにする方が便利かもとも考えましたが、何でも入れていいフォルダを幾つも使うと、フォルダの整理がしきれない気がしたのでやめました。
何でも入れていいのは1個で十分な気がします。

Google Chromeの「お使いのデバイスに送信」機能を使ってiPhoneに閲覧中のサイトを送信する方法
macOS Catalinaになってから追加されたシステム環境設定の「Apple ID」にある項目
情報収集に最適!!RSSリーダー「Feedly」の登録から簡単な使い方まで
Google Chromeの別アカウントとのブックマークを同期する「TeamSync Bookmarks」
メールによくある「アーカイブ機能」が何なのか今まで知らなかったので調べてみた
Backlogの課題期限をカレンダーアプリのFantastical 3に表示させる方法
Drive File Streamで接続しているGoogle Drive内の検索をするAlfred Workflowの作成方法
サイト運営には不可欠!!自分のブログ用のFacebookPage作ろう。
BetterTouchToolでウインドウをアクティブにしないで移動する方法
作業効率化に大きく貢献してくれているMacのアプリ達
iTerm2で「Use System Window Restoration Setting」を設定しているとアラートが表示されて機能しない
Google Chromeのサイト内検索(カスタム検索)機能を別のプロファイルに移行する方法
iPadで入力モードを切り替えずに数字や記号をすばやく入力する方法
iPhoneやiPadでYouTubeの再生速度を3倍速や4倍速にする方法
Keynoteで有効にしているはずのフォントが表示されない現象
MacのKeynoteにハイライトされた状態でコードを貼り付ける方法
AirPodsで片耳を外しても再生が止まらないようにする方法
iTerm2でマウスやトラックパッドの操作を設定できる環境設定の「Pointer」タブ
DeepLで「インターネット接続に問題があります」と表示されて翻訳できないときに確認すること
Ulyssesの「第2のエディタ」表示を使って2つのシートを横並びに表示する
Keyboard Maestroの「Macro Debugger」で複雑なマクロのデバッグを行う方法
無料版でも高機能なランチャーアプリ「Raycast」の基本機能と環境設定
OnyXでターミナルを使わずにmacOSの詳細設定を行う
軽量で高速なターミナルエミュレーター「Ghostty」の設定方法
Eagleで実現するクリエイティブ素材の簡単管理
かゆいところに手が届く「Supercharge」でMac環境を便利にカスタマイズする
超軽量なコードエディタ 「Zed」をサブエディタとして活用する
Bartender 6で追加されたWidgets機能で自作メニューバーアイテムを簡単に作成する
Googleカレンダーを便利に活用するための小技集(祝日だけを表示・月末の繰り返しイベントを追加)
Obsidianを使った「自己流PKM」で行う知識トレーニング