MAMPを使ってローカルで複数サイトのバーチャルホストを設定&イントラ環境や仮想環境からもそのサイトを確認する設定方法
以前、『MAMPを使ってMacのローカルで複数サイトのバーチャルホストを設定する方法』というエントリーを書いたのですが、もっと具体的に書いておいて、今後に活用しようと思ったので改めて、ちょっと内容も加えて書いておきます。
ちなみに今回の内容は、先日行ったSaCSS Weekly の1週目ので行った内容と同じになっております。
今回の設定での各達成目標
- バーチャルホスト:http://sacss/ でPC内の特定のディレクトリをルートとして表示する
- バーチャルホストを複数設定してみる
- イントラ環境と仮想環境からのアクセスでも特定のディレクトリをルートとして表示する
- htaccessをバーチャルホスト毎に使えるようにする
今回はより明確に、この4つをそれぞれ達成できるように設定方法についてを書いてきたいと思います。
バーチャルホスト:http://sacss/ でPC内の特定のディレクトリをルートとして表示
■初期フォルダと中身の表示
MAMPをインストールをしたフォルダ内の「httpd」フォルダにファイルをおくことで「http://localhost/ファイル名」で表示されます。
この時の http://localhost/ = http://127.0.0.1/
(ポート設定が80の場合)
http://sacss/でsacssフォルダを表示するための設定の流れ
まずは必要最低限の設定を行います。設定で触るファイルは、httpd.confとhttpd-vhost、それにhostの3ファイルです。
■httpd.conf
MAMPのバージョンが2系からバーチャルホストの設定が分離され、extraフォルダ内のhttpd-vhosts.confで設定する様になっています。そのため、このファイルを読み込むようにするため、apacehのhttpd.confの最後の方にある、Virtual hostsのインクルード(Include)を有効にしておきます。
# Virtual hosts # Include /Applications/MAMP/conf/apache/extra/httpd-vhosts.conf ↓ # Virtual hosts Include /Applications/MAMP/conf/apache/extra/httpd-vhosts.conf
■httpd-vhosts.conf
extraフォルダ内にある、httpd-vhosts.confに設定を書き入れます。
httpd-vhosts.confの内容で最低限必要なのは3点で、使うポートの設定と該当フォルダの場所、それにバーチャルホスト名として利用したいドメイン名を指定します。
NameVirtualHost *:80 <virtualhost *:80> # ↓ルートに設定したいフォルダ DocumentRoot "/Users/user/httpdocs" # ↓バーチャルドメイン名 ServerName sacss </virtualhost>
上記は、/Users/user/httpdocsのディレクトリをルートに設定し、そのディレクトリへhttp://sacss/でアクセス出来るようにするための設定が入っています。
■hostsの書き換え
最後に、PC内のドメインの行き先を管理しているhostsファイルに、バーチャルホスト名を追記します。
hostsファイルがある場所は、/private/etc/hostsになります。
Macの場合、隠しフォルダを表示にしておく必要があります。もしくは、隠しフォルダが表示できないという場合は、Finderのメニューから、移動→フォルダへ移動を選択して、出てきたウィンドウに「/private/etc」と記入して移動すると、hostsファイルがあるフォルダが表示さようになります。
hostsファイルは初期設定で上書保存できない設定になっていますので、ファイルを開く前に変更が保存できるように、hostsファイルを選択して右クリック→情報を見る・・・で出てきたウィンドウの一番下の項目「共有とアクセス権」で、自分のユーザーの書き込み権限をつけてください。
アクセス権をつけた後にファイルを開き、「127.0.0.1 localhost」となっている部分に、下記を追加します。
127.0.0.1 localhost sacss
「127.0.0.1 localhost」は既に入っているので、localhostの右に半角スペースをひとつ入れて、今回追加したいバーチャルホスト名を追加します。最後に保存を忘れずにしてください。
■apacheの再起動
設定をした後、最後にapacheを再起動したらOKです。MAMPの場合は「サーバーの停止」ボタンでapacheをとめて、その後再度ボタンを押すと修正後の内容が反映されます。再起動後はブラウザで「http://sacss/」にアクセスしてください。
設定したフォルダ内に何もなければ、下記の用にForbiddenが表示されたら、OKです。
Forbidden You don't have permission to access / on this server.
あとは、index.htmlなどのファイルを設定したフォルダに入れてください。
バーチャルホストを複数設定してみる
ここまではhttp://sacss/でアクセスできるようにする設定を書いてきましたが、同様にhttp://hamham/で別ファイルにアクセス出来るように設定を追加したいと思います。
しかし、ここまでの設定ができていたらわかるかもしれませんが、これまでの流れのうち、httpd-vhosts.confとhostsに内容を追加するだけで複数の追加が可能になります。
なので案件ごとにフォルダ分けなどして、設定を追加してみてください。
仮想PGやイントラネットからアクセス出来るようにするために
次に、パソコン内に入れた仮想PCや、同じLAN環境にいるイントラネットからのアクセスでも、見れるようにする設定を加えてみます。
イントラネットなどからのアクセス方法は、まずは見せたいPC(apacheが起動しているPC)のIPアドレスを調べて、それをドメインの代わりに入れてアクセスします。
(IPが192.168.0.1なら、http://192.168.0.1/)
このIPに同じイントラ環境にいる他の環境からアクセスすると、apacheの設定でポート80をデフォルトにしている場合は、そのPCのhttp://localhost/で設定していた中身を見ることができます。ポートが80以外に設定されている場合は、http://192.168.0.1:◯◯◯◯/のようなIP:ポートという順で書いてアクセスすると見ることができます。
先ほど設定した「/Users/user/httpdocs」を他のイントラ環境から見るようにするためには、ポートによる指定を加え、特定のディレクトリの中身を見せるようにするための設定を加えます。
■Listenの追加
http://192.168.0.1:8000/ のように、特定のポートでアクセスすることで、http://sacss/にアクセスした時と同じページを表示するようにするために、まずはapache側でListenを追加します。
デフォルトは、
Listen 80
もしくは
Listen 8888
となっているかと思います。これが書かれている次の行に、この記述ど同様に自分の好きなポート番号を追加します。
Listen 80
Listen 8000
ここで追加した数値がポートとなり、http://192.168.0.1:◯◯◯◯/の◯◯の部分となります。8000を追加したら、http://192.168.0.1:8000/でアクセスできるようになります。
■Virtual hostsの追加
先ほど
<virtualhost *:80> DocumentRoot "/Users/user/httpdocs" ServerName sacss </virtualhost>
と、追加したその真下あたりに、Listenで追加したポート分の設定を追記します。
<virtualhost *:80> DocumentRoot "/Users/user/httpdocs" ServerName sacss </virtualhost> <virtualhost *:8000> DocumentRoot "/Users/user/httpdocs" ServerName sacss </virtualhost>
ここまで設定したら、再びapacheを再起動します。これで他のパソコンからも/Users/user/httpdocsへアクセスし、ブラウザでの表示が可能になります。
VMware Fusionの環境からアクセスする場合は、ネットワークの接続を「ブリッジ」にしておくことで、このアクセスが可能になります。
.htaccessをバーチャルホスト毎に使えるようにする
ここまでの設定でほとんど終わりなのですが、追加したバーチャルホストの環境でも、htaccessを使えるようにするための設定についてを書いておきます。
環境にあわせて.htaccessファイルを入れておきたい場合はないでしょうか?apache側で設定をしておけばいい話でもあるのですが、個人的に.htaccessで設定しておきたいことなどがあったりします。
ところが、ここまでの設定では、追加したフォルダで.htaccessを追加したとしても反映されません。(※ただし、/Applications/MAMP/Library/htdocs 内にフォルダを指定してそこをルートにした場合は反映されます)
これは、apacheの初期の設定で、ルートが下記の設定になっているためです。
<Directory />
Options Indexes FollowSymLinks
AllowOverride None
</Directory>
ここのAllowOverride部分がNoneになっているため、フォルダ毎の.htaccessの設定が利用できなくなっています。
■AllowOverrideの追加
.htaccessを使えるようにするためには、AllowOverrideを許可の設定にする必要があります。上記のルートでNoneをAllに変更するという方法でもいいのですが、個別に設定しておくほうが何かと便利なので、個別の設定を加えるようにします。
設定で編集をするのはhttpd.confのみ。
<Directory />なとと入っている下に、<Directory "/Applications/MAMP/Library/htdocs">の記述があるのですが、その下くらいに個別の設定を追記します。
<Directory "/Users/user/httpdocs"> AllowOverride All </Directory>
AllowOverrideの他にもOptionの設定を変更したい時などもここで指定します。
あとはapacheを再起動したら、.htaccessが設定したディレクトリで有効になります。
最後に
あくまで最低限の設定です。ちなみに、公共のアクセスポイント環境下でMAMPを起動していると、誰かに見られる危険というのも十分ありますので、下記も追加変更しておきましょう。
<Directory /> Options FollowSymLinks AllowOverride None Order deny,allow Deny from all Allow from 127.0.0.1 </Directory>
上記にすると、ローカル環境だけでしか見れなくなりますので、とりあえず簡易的対策として。