WebScripter.jpをご覧頂きありがとうございます。
このサイトについてご意見などあればお気軽にメッセージをお送り下さい。お待ちしています。



captcha

Technical note

MAMPでローカル環境構築のまとめ

2013.03.26

MAMPは簡単にWeb環境を構築できる便利なソフト。自分も長らく使ってますがあれこれ設定を変えたりしているので、おさらいがてら、ローカル環境を構築する時の設定をまとめてみました。

ポートの設定を変更する。

MAMPのApacheのポートはデフォルトで8888。接続するには、

http://localhost:8888

または、マシンに固有のローカルIPアドレスを振っていれば、

http://[IPアドレス]:8888/

でもアクセスできます。

でも、出来ることならポート番号なしのURLで接続したいですよね。それにはApache標準のポート80に設定する必要があります。以下の方法で簡単に設定出来ます。

まずはMAMPの環境設定をクリックします。

ポートの設定ーMAMPのコントロールパネル

「ポートタブ」を開き、「ApacheとMySQLの標準ポートに設定」をクリックすると、ポート番号が変わるので、「OK」をクリックし、サーバーが再起動するのを待ちます。

ポートの設定ー「ApacheとMySQLの標準ポートに設定」をクリック

サーバーが再起動したら、「スタートページを開く」をクリックします。

ポートの設定ー「スタートページを開く」

アドレスバーを確認して、

http://localhost/MAMP/?language=Japanese

のように、ポート番号が消えていればOKです。

ただし、一つ注意することがあります。ポート80は、すでにOSXのApacheに割り当てられているので、変更する時は「システム環境設定 > 共有」を開き、サービスの「Web共有」を確認し、チェックを外しておいてください。チェックがはいっている場合、MAMPの設定が正常に反映されません。

Web共有のチェックを外しておく

ドキュメントルートを変更する。

ドキュメントルートとは、公開するWebサーバー上のルートディレクトリのことで、 MAMPの場合、「環境設定 > Apache」で確認すると、デフォルトでは下記のようにのアプリケーションのMAMPフォルダ内のhtdocsがドキュメントルートになっています。

ドキュメントルートの設定

自分の場合、作業データは、起動ディスクとは別の作業用HDDに保存していることもあり、作業データがあちこちのボリュームに分散していると管理上よろしくないので、ドキュメントルートを変更しています。

変更するには、「参照」をクリックし、任意の場所を指定することで変更できます。

バーチャルホストを設定する。

この項はMAMP固有のというより、Webサーバーで利用されるApacheの設定の話になります。

バーチャルホストとは、簡単に説明すると、Webサーバーやメールサーバーを運用する際に一台のサーバーマシンで複数のドメインを扱える技術のことです。ローカルのテスト環境の構築では、複数のテストサイトにドメインを振る、URLのディレクトリ構造を本番サイトと同じにするといったことが出来ます。

ここでは例として2つのテストサイトを用意し、バーチャルホストにそれぞれ任意の名前(ドメイン)を設定してみます。

テスト環境1のディレクトリ:/Volumes/data/htdocs/hogehoge/
テスト環境2のディレクトリ:/Volumes/data/htdocs/fugafuga/

バーチャルホストを設定しない場合、上記のサイトにアクセスするURLは通常、http://localhost/hogehoge/、http://localhost/fugafuga/となりますが、これを下記のように設定します。

テスト環境1のURL:http://hogehoge.local/
テスト環境2のURL:http://fugafuga.local/

httpd.confを修正する。

バーチャルホストはApacheの設定ファイルであるhttpd.confを編集します。まずは次のファイルを開きます。修正する際には、バックアップは必ずとっておきましょう。

/Applications/MAMP/config/apache/httd.conf

MAMPの最新バージョン(記事執筆時は1.9x)のApacheでは、バーチャルホストの設定は外部のファイルになっているので、下記の行を探し、"include"の前の#を外してファイルの読み込みを有効にします。

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

次はその外部ファイルを開きます。次の場所になります。

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

ファイルを開くと以下のようにコメントに続き、19行目あたりから既にバーチャルホストの設定サンプルが記述されています。

apache
#
# 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>

何行かにわたりいくつかの設定項目がありますが、今回はローカル環境での設定なので最低限のものに絞ります。27〜42行目をコメントアウト、もしくは削除して、次のように2つのテスト環境の設定を記述します。「DocumentRoot」には、テスト環境のディレクトリを、「ServerName」にはテストサイトの名前(ドメイン)を記述します。

apache
<VirtualHost *:80>
 DocumentRoot "/Volumes/data/htdocs/hogehoge/"
 ServerName hogehoge.local
</VirtualHost>

<VirtualHost *:80>
 DocumentRoot "/Volumes/data/htdocs/fugafuga/"
 ServerName fugafuga.local
</VirtualHost>

同じようにテストサイト用のディレクトリを設置し、バーチャルホストの設定を増やしていけば、複数の環境を作ることが出来ます。

hostsを修正する。

名前でアクセスする場合、httpd.confの設定だけではアクセスできません。OSXのシステムにあるhostsファイルを修正する必要があります。これは指定されたドメインをIPアドレスに変換するためのファイルです。ここでは、先に設定した名前(ドメイン)をローカル環境で使用できるよう、127.0.0.1(ループバック・アドレス)に変換するよう修正します。

hostsの修正は、ターミナルのviで編集する方法もありますが、「ターミナルはちょっと…」な方も多いと思うので、ここではGUIでの比較的楽な編集方法で進めます。

まず、Finderの「移動 > フォルダへ移動…」を選択します。

フォルダへ移動

パスの入力ダイアログが開くので、次のように入力します。

パスを入力

フォルダに移動したら、hostsファイルを探します。通常は編集できない状態なので、見つけたら右クリック 「情報を見る」を選択します。

情報を見る

hostsの情報ウインドウが表示されます。「共有とアクセス権」に変更を加えるため、右下の鍵アイコンをクリックします。

hostsの情報

パスワード入力画面が表示されるので、パスワードを入力します。

パスワードを入力

これで「共有とアクセス権」の編集が出来るようになります。左下の「+」ボタンをクリックします。

+ボタンをクリック

追加するユーザ、またはグループが表示されるので、追加したいユーザを選択します。

ユーザーを選択

「共有とアクセス権」に新たにユーザが追加されました。

ユーザが追加される

でもアクセス権は「読み出しのみ」のままなので、アクセス権を「読み/書き」に変更します。

アクセス権を変更する

これでhostsが編集できるようになりました。

次にhostsをテキストエディタなどで開きます。開くと次のようになっていると思います。(OSのバージョンにより違う場合もあります。)

##
# 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 
fe80::1%lo0	localhost

先にhttpd.confで設定した名前(ドメイン)をファイルの最後に次のように記述します。

127.0.0.1	hogehoge.local
127.0.0.1	fugafuga.local

記述したらMAMPを再起動します。表示テスト用に、適当なHTMLファイルを設定したディレクトリに設置し、表示されればOKです。

hostsファイルは編集が終わったら、追加したユーザーのアクセス権を「読み出しのみ」、もしくは削除しておくと安心です。

今回はドメインに任意の名前をつけてアクセスする方法を紹介しましたが、他にもアドレスにポート番号を割り当ててアクセスする方法もあります。興味のある方は次のサイトを参考にしてください。

外部PCから、設定したバーチャルホストにアクセスする。

これまではlocalhost、つまり自身のPCに構築された環境に接続するという前提で説明を進めました。なので当然このままでは外部のPCからのアクセスはできません。

ローカルアドレスを固定する。

外部のPCからアクセスするには、PCのローカルアドレスを固定し、hostsにそのアドレスを記述する必要があります。

まずは「システム環境設定 > ネットワーク」を開きます。

「ネットワーク」を開く

開いたら「IPv4の構成」を「手入力」にし、「IPv4アドレス」に任意のローカルIP(ここでは例として192.168.11.10とします)、「サブネットマスク」、「ルーター」は自分のネットワーク環境に合わせて入力します。

「ネットワーク」の設定

hostsを編集する。

ネットワークの設定が完了したらhostsを開き、バーチャルホストの設定時に編集した箇所のIPアドレスを、「IPv4アドレス」に入力したアドレスに変更します。

192.168.11.10	hogehoge.local
192.168.11.10	fugafuga.local

バーチャルホストの時と同様、外部のPCからアクセスして表示されればOKです。

PHPのエラーを出力する。

テスト環境ではPHPのエラー表示は非常に便利ですが、MAMPはデフォルトではエラーの内容が表示されません。まずはphpinfoで使用しているphpの情報を表示してみます。
「phpinfoって何?」っていう方はこちら↓

phpinfoの内容

「display_errors」という確認すると、「off」になっています。

エラーが出力されるようphp.iniというファイルを修正します。
/applications/MAMP/bin/php/に各バージョンごとにphpのフォルダがあるので、編集したいバージョンのphp.iniを開きます(※)。全部設定してもかまいません。

※/applications/MAMP/conf/にもバージョン毎のphp.iniがありますが、このファイルを修正しても設定に反映されません。ご注意下さい。

display_errors = Off

と記述されている箇所を探し、

display_errors = On

に変更します。MAMPのサーバーを再起動したら、変更されたかphpinfoで確認してみます。「display_errors」が「On」になっていればOKです。

phpinfoの内容

phpinfoとは?

phpinfoとは、php.iniに設定されている値を出力するためのphpの関数です。
値を確認するには、まずphpinfo関数を記述したファイルを用意します。

<?php phpinfo();?>

記述したファイルに適当な名前を付けて保存します。ここではphptest.phpとします。そしてファイルをドキュメントルートに設置します。

http://localhost/phptest.php
とブラウザに入力してアクセスし、次のように表示されれば、phpが正常に動作しています。

phpinfo

またphp.iniを修正した後も、値が正常に反映されているかが確認で来ます。

phpinfoを記述したファイルは、確認後外部から見られないよう、削除しておきましょう。特に公開サーバーの場合はサーバーの情報を見られることにもなるので必ず削除しましょう!

説明に戻る

以上、MAMPの便利な設定でしたが、ほとんどがApacheやPHPの設定なのでMAMPだけでなく、XAMPPや、その他Webサーバーの設定にも応用できるので、覚えておいて損はないです。

バーチャルホストを設定する

PHPのエラーを出力する