MAMP のインストールと初期設定(環境構築)

Mac で MAMP をダウンロードしてインストールする方法と初期設定や Apache の設定(バーチャルホスト)、httpd.conf の文法エラーをチェックする方法についての覚書です。

MAMPには MAMP(無料)と MAMP PRO(有料) がありますが、以下は無料版の MAMP についての説明で、MAMP のバージョンは 6.6 (Mac OS は Monterey)になります。

関連ページ:MAMP をアップデート(新しいバージョンをインストール)

作成日:2022年1月12日

MAMP のダウンロード

以下のMAMP のダウンロードページから環境(Intel または M1 プロセッサ)に合わせてインストーラーをダウンロードします。

https://www.mamp.info/en/downloads/

以下は MAMP&MAMP PRO 6.6(Intel) を選択した場合の例です。「保存」をクリックしてインストーラーを保存します。

過去のバージョンのダウンロード

古いバージョンの MAMP のダウンロードページ:Download MAMP & MAMP PRO Older versions

MAMP のインストール

ダウンロードしたパッケージ MAMP_MAMP_PRO_6.6-Intel-x86 を(ダブルクリックして)起動します。パッケージ名はバージョンなどにより異なります。

Chrome の場合は以下のように左下に表示されるパッケージをクリックすると起動します。

起動すると以下のような画面が表示されるので「続ける」をクリックします。

以下のような内容が表示されるので確認して「続ける」をクリックします。

大切な情報

このインストーラーは MAMP と MAMP PRO をアプリケーションディレクトリにインストールします。 MAMP フォルダを移動したり、名前を変更したりしないでください。

インストーラーが既存のインストールを検出した場合、/Applications/MAMP/htdocs および /Applications/MAMP/conf/ssl のデータを保持し、既存のデータベースを新しいインストールにコピーし、古いMAMPフォルダーの名前を変更します。

重要:MAMP PRO v1-5 ユーザーは次の点に注意してください:(省略)

使用許諾契約が表示されるので確認し、「Continue」をクリックします。

以下のような使用許諾契約に関する同意を求めらるので、インストールを続行するには「Agree」をクリックします。

以下のような画面が表示され、「インストール」をクリックすると確認画面が表示されるので「パスワード」を入力して「ソフトウェアをインストール」をクリックします。

ソフトウェアのインストールが開始されます。

以下の画面が表示されたらインストールは完了です。「閉じる」をクリックします。

以下のようなウィンドウが表示されます。問題なくインストールできていれば、インストーラは特に必要ないので「ゴミ箱に入れる」をクリックします。

MAMP PRO のアンインストール

標準のインストールを実行すると MAMP PRO も自動的に一緒にインストールされます。そのまま残しておいても問題ないと思いますが、アンインストールするには Uninstaller を使用します。

Finder でアプリケーションから MAMP PRO を見つけて右クリックから「パッケージの内容を表示」を選択します。

Contents フォルダが表示されるのでダブルクリックして、表示される「MacOS」フォルダを更にダブルクリックします。

MAMP PRO Uninstaller.app をダブルクリックします。

以下の画面が表示されるので、内容を確認してアンインストールを続行するには「Uninstall」をクリックします。

このアンインストーラーは、MAMP PRO の使用中に作成または変更された MySQL データベースを含む、MAMP PRO インストールに関連するすべてのフォルダーとファイルを削除します。MySQL データベースがまだ必要な場合は、バックアップを作成するかエクスポートする必要があります。

アンインストーラーは /etc/hostsファイルとMAMP PROによって変更された全てのpostfixファイルを復元します。

MAMP フォルダーは削除されません。 このフォルダを削除する場合は、ゴミ箱にドラッグしてください。

確認画面が表示されるので「パスワード」を入力して「OK」をクリックすると MAMP PRO がアンインストールされます。

以下が表示されればアンインストール完了です。

MAMP の初期設定

Launchpad から「MAMP」を起動します(または Finder の「アプリケーション」→「MAMP」フォルダから MAMP.app をダブルクリックして起動します)。

右上の「Start」をクリックします。パスワードを求められたら Mac のパスワードを入力します。

起動時に表示される広告が邪魔な場合は広告の左下の「Show this window when starting application」のチェックを外して閉じます。

デフォルトのブラウザで MAMP の WebStart ページが表示されます。

初期状態では Ports の設定がデフォルトの 8888 なので URL が「http://localhost:8888/MAMP/?language=English」になっています。

上部のリンクの「My Website」をクリックすると、問題なくインストールされていれば以下のような MAMP のインデックスページが表示されます。

サーバーが起動すると、以下のように WebStart のアイコンがアクティブになり、オン・オフのアイコンが緑色になって「Start」の表示が「Stop」になります。

上部メニューのアイコンをクリックすると以下の操作が可能です。

アイコン 操作
Preferences 設定項目(General, Ports, Server, Cloud)を表示します
WebStart WebStart ページ(起動時に表示されるスタートページ)を表示します
Stop サーバーを停止します

また、起動時の画面では以下の設定や確認が可能です。

項目 設定
Document root ドキュメントルートの場所(変更するには Preferences → Server)
Web server Web サーバーとして Apache または Nginx を選択できます
PHP version プルダウンから PHP のバージョンを選択できます。

その他の設定項目は左上の「Preferences」のアイコンをクリックするか、メニューで「MAMP」→「Preferences」をクリックします。

MAMP のドキュメント:MAMP (macOS) Documentation

General

「Preferences」のアイコンをクリックして General タブを選択すると MAMP の起動時と終了時の動作を設定することができます。

各項目のチェックを必要に応じて変更して「OK」をクリックして設定を保存します。

When starting MAMP: 起動時の動作を設定

  • Start servers: サーバーを起動
  • Check for updates:アップデートを確認
  • Open WebStart page:WebStart ページをブラウザで表示

When quiting MAMP: 終了時の動作を設定

  • Stop servers: サーバーを停止

Stop servers にチェックを入れておけば、MAMP を終了する際に、Apache(または Nginx)サーバーと MySQL サーバーは自動的に停止します。

PHP-Cache: PHP のキャッシュ拡張機能

以下を選択できます。キャッシュ拡張を有効にしても、必ずしも実行速度が向上するとは限りません。

  • off
  • APC
  • eAccelerator
  • XCache
  • OPCache

My favorite link: WebStart ページの My favorite link の設定

例えば、このフィールドに /subDirectory と入力すると、WebStart ページの My favorite link のリンク先は http://localhost:8888/subDirectory/ になり /Applications/MAMP/htdocs/subDirectory が表示されます。

以下は Start servers にチェックを入れて、MAMP 起動時にサーバーも起動させ、Open WebStart page のチェックを外して起動時に WebStart ページは表示しないようにしています(WebStart ページを表示するには右上の WebStart のアイコンをクリックします)。

また、My favorite link に webdesignleaves を指定しているので、WebStart ページの My favorite link をクリックすると、htdocs/webdesignleaves が開きます。

Ports

Ports タブを選択するとポートを設定することができます。MAMP のデフォルトは以下のようになっているので、一般的なポートの設定にするには「80 & 3306」をクリックします。

以下のように Apache と Nginx のポートが8888番から80番に、MySQL のポートが8889番から3306番に変わります。

この設定により、ローカル環境で MAMP の Apache にアクセスする URL が「http://localhost:8888/」 から「httt://localhost/」に変更されます。

macOS 標準の Apache が起動しているとエラーになると思います。

Server

Server タブでは MySQL のバージョンの確認と Document Root(Web ファイルの配置場所)を設定することができます。

「Opne in Finder」をクリックすると Finder でドキュメントルート を表示します。Document Root を変更するには「Choose」をクリックします。

以上で基本的な設定は完了です。

WebStart page

設定の General タブで「Open WebStart page」にチェックが入っている場合(デフォルト)、MAMP を起動すると WebStart page が開きます。

MAMP の画面の「WebStart」の上のアイコンをクリックしても WebStart page を開くことができます。

WebStart page の上部のリンクの「Tools」からは phpinfo ページや phpMyAdmin へアクセスすることができ、「Help」からは MAMP のドキュメントページなどへアクセスすることができます。

また、MySQL の基本的な情報(User や Password)や接続する際のパラメータなども確認することができます。

設定ファイル

設定に使う主なファイルやその配置場所など。

php.ini

php.ini は /Applications/MAMP/bin/php/php*.*.*/conf/ に配置されています。「*.*.*」の部分は使用している PHP のバージョンで PHP タブで確認できます。

MAMP
└── bin
    └── php
        └── php*.*.*(例 php7.4.21)
            └── conf
                └── php.ini

httpd.conf

Apache の httpd.conf は Applications/MAMP/conf/apache/ に配置されています。

MAMP
└── conf
    └── apache
        └── httpd.conf

httpd.conf は Apache の動作を設定するメインのファイルです。このファイルに Apache への命令「ディレクティブ」を記述します(コメントアウトされているディレクティブのコメントアウトを外して有効にします)。

また、全てのディレクティブを httpd.conf に記述してしまうと煩雑になるため、extra ディレクトリや other ディレクトリに機能ごとに個々の設定ファイルを用意して httpd.conf では必要に応じて Include ディレクティブ を使ってそれらのファイルを読み込むようになっています(バーチャルホストの設定など)。

httpd.conf や httpd.conf の読み込んでいるファイルを変更した場合は、その変更を反映させるには Apache を再起動させる必要があります。また、記述に誤りがあると Apache が起動しないので再起動の前に configtest などで誤りがないかを確認します。

httpd-vhosts.conf

httpd-vhosts.conf は Applications/MAMP/conf/apache/extra/ に配置されています。

MAMP
└── conf
    └── apache
        └── extra
            └── httpd-vhosts.conf

PHP エラーの表示

MAMP の場合、デフォルトでは PHP のエラーを表示(出力)しないようになってます。

ローカル環境(開発環境)の場合は、エラーがチェックできるようになっている方が良いのでエラーを表示するようにしておくと良いと思います。

※ 逆に本番(プロダクション)環境では、エラーが表示されてしまうとファイルのパスなどが表示されてしまい、セキュリティ上問題があるのでエラーを表示しないように設定し、ログに出力するようにするのが一般的です。

全ての php ファイルに適用するには php.ini を編集するのが簡単です。

php.ini の display_errors という「エラーをHTML出力の一部として画面に出力するかどうか」を定義する項目で設定することができます。以下のようにデフォルトでは Off になっています。設定項目の上にはコメントアウトされた説明書きがあります。

MAMP の php7.4.21 の php.ini の例
;; This directive controls whether or not and where PHP will output errors,
; notices and warnings too. Error output is very useful during development, but
; it could be very dangerous in production environments. Depending on the code
; which is triggering the error, sensitive information could potentially leak
; out of your application such as database usernames and passwords or worse.
; For production environments, we recommend logging errors rather than
; sending them to STDOUT.
; Possible Values:
;   Off = Do not display any errors
;   stderr = Display errors to STDERR (affects only CGI/CLI binaries!)
;   On or stdout = Display errors to STDOUT
; Default Value: On
; Development Value: On
; Production Value: Off
; http://php.net/display-errors
display_errors = Off   //デフォルトの設定(Off) 

以下に変更することで、全ての php ファイルに対してエラーを表示するようになります。

php.ini(開発環境の場合)
display_errors = On 

MAMP バージョン 6.9 の php8.1.13 や php8.2.0 の php.ini ではデフォルトで On になっています。

参考ページ:PHP マニュアル(実行時設定)

エラーレベルの設定

開発環境では全ての種類のエラーを表示するようにしておきます。MAMP の php7.4.21 では以下のようにデフォルトで全ての種類のエラーを表示するようになっていると思います。

php.ini (開発環境の場合)
error_reporting = E_ALL

以下はエラーレベルに設定できる値の例です(php.ini の上記設定項目の上に説明が記載されています)

  • E_ALL (全てのエラーと警告)
  • E_ALL & ~E_NOTICE (実行時注意を除く全てのエラー)
  • E_ALL & ~E_NOTICE & ~E_STRICT (実行時注意とコーディング標準警告を除く全てのエラー)
; 実行時注意(E_NOTICE)以外の全てのエラーを表示する場合
error_reporting = E_ALL & ~E_NOTICE
E_NOTICE
コードの中のバグの可能性について(例えば、代入されていない値を使用した場合など)警告を与えてくれます。また、好ましくないコードに対しても警告してくれるので、開発時には表示するようにします。
E_STRICT
非推奨であったり将来の互換性が保証されていなかったりするコードを書いたときに警告を与えてくれます。PHP 5.4.0 より前のバージョンの場合は E_ALL に E_STRICT が含まれないため、 PHP 5.4.0 未満では明示的にこのエラーレベルを設定する必要があります。

php.ini 以外で設定する方法

PHP のエラーの表示・非表示は個別の PHP ファイルで設定したり、.htaccess や httpd.conf で設定することもできます。

特定の PHP ファイル内でだけエラーの表示・非表示を設定するには、PHP ファイルの先頭に以下を記述します。

<?php
// エラー表示する場合
ini_set('display_errors', 1);

// エラー表示しない場合
ini_set('display_errors', 0);

?>

.htaccess または httpd.conf で設定する場合は、以下を追記します。

.htaccess または httpd.conf
#エラー表示する場合
php_flag display_errors On

#エラー表示しない場合
php_flag display_errors Off

バーチャルホストの設定

例えば、ローカル環境(MAMP や XAMPP)で htdocs に example と言うフォルダを配置してブラウザでアクセスする場合、通常 http://localhost/example/ と言う URL になります。

これを http://example.localhost/ や http://example.local/ などの URL でアクセスできるようにするにはバーチャルホストと言う機能を利用します。以下は MAMP の場合の例です。

Virtual hosts の有効化

バーチャルホストを利用するには httpd.conf ファイルを編集して Virtual hosts の機能を有効化する必要があります。(関連項目:文法エラーをチェック)  

MAMP の場合、/Applications/MAMP/conf/apache/httpd.conf にファイルがあるので httpd.conf をテキストエディターで開いて編集します。

デフォルトでは、おそらく以下のように Virtual hosts の次の行の Include ... がコメントアウトされているので、その場合はコメントアウトを外します。

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

以下のように変更(先頭の # を削除)して(httpd-vhosts.conf を読み込むようにして)保存します。

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

httpd-vhosts.conf の編集

上記で読み込みを有効にした httpd-vhosts.conf をテキストエディターで開いて編集します。

httpd-vhosts.conf は前述の httpd.conf の「# Virtual hosts」に記述されている /Applications/MAMP/conf/apache/extra/httpd-vhosts.conf にあります。

ファイルを開くと最後の方に以下のような2つのバーチャルホストの設定サンプルが記載されています。

httpd-vhosts.conf
#
# 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>

バーチャルホストの設定 <VirtualHost *:80>〜</VirtualHost> は複数設定することができます。

設定項目は、少なくとも DocumentRoot と ServerName は指定する必要があります。

  • DocumentRoot:サイトのディレクトリのパス
  • ServerName:ローカル環境でアクセスしたいホスト名(URL のホスト部分)

また、以下の例の場合 <VirtualHost *:80> としてあるので Ports の設定でポート 80 を指定してある必要があります。

以下は追加例です。

この場合、/Applications/MAMP/htdocs/example に配置したサイトに http://example.localhost/ でアクセスできるようにしています。

localhost の部分は local や test など任意の文字を指定できます。

<VirtualHost *:80>
    DocumentRoot "/Applications/MAMP/htdocs/example"
    ServerName example.localhost
</VirtualHost>

ドキュメントルートを変更している場合など環境によっては、<Directory> ディレクティブを使った以下のような記述の追加が必要かも知れません。

<Directory "/path/to/directory"> #上記と同じパス
  order deny,allow
  allow from ALL
</Directory>
例:/Applications/MAMP/htdocs/webdesignleaves に http://webdesignleaves.localhost/ でアクセス
<VirtualHost *:80>
    DocumentRoot "/Applications/MAMP/htdocs/webdesignleaves"
    ServerName webdesignleaves.localhost
</VirtualHost>
<Directory "/Applications/MAMP/htdocs/webdesignleaves">
    order deny,allow
    allow from ALL
</Directory>

以下は ServerAlias も指定して http://webdesignleaves.test/ と http://www.webdesignleaves.test/ でアクセスできるようにする例です。

※ www.webdesignleaves.test も次項の hosts に登録する必要があります。

<VirtualHost *:80>
    DocumentRoot "/Applications/MAMP/htdocs/webdesignleaves"
    ServerName webdesignleaves.test
    ServerAlias www.webdesignleaves.test
</VirtualHost>
<Directory "/Applications/MAMP/htdocs/webdesignleaves">
    order deny,allow
    allow from ALL
</Directory>

hosts ファイルの編集

hosts ファイルを編集してホスト名と IP アドレスをマッピングします。

hosts ファイルは隠しファイルになっているので、Shift + Command + . を押して表示させることができます。

ファイルの場所は /private/etc/hosts になります。

Macintosh HD
  └── private(隠しファイル)
          └── etc
              └── hosts

hosts ファイルを開くと初期状態ではおそらく以下のようになっていると思います。

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

このファイルにホストを追加します。

テキストエディタで編集

hosts ファイルはロックされているのでテキストエディタで編集するには、一度デスクトップなどにファイルをコピーして編集します。

IP アドレス(127.0.0.1)と任意のホスト名(httpd-vhosts.conf で ServerName に指定したホスト名)を追加します。

##
# 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	example.localhost
127.0.0.1	foo.localhost         #必要なだけ追加します
127.0.0.1	webdesignleaves.test
127.0.0.1	www.webdesignleaves.test

ファイルを元の位置に戻して上書きします。

ファイルを上書きする際には以下のようなメッセージが表示されるので「認証」をクリックします。

etc にあるファイルを上書きする際に表示される警告のスクリーンショット

続いて以下が表示されるので「置き換える」をクリックし、パスワードの入力を求められるので入力します。

hosts ファイルを上書きする際の警告のスクリーンショット

ターミナルで編集

ターミナルを起動して sudo vi /private/etc/hosts と入力して enter を押すとパスワードを求められるので入力すると hosts ファイルが開きます。

i を押して INSERT モードにして矢印キーを使ってカーソルを一番下の右端まで移動し、改行して IP アドレスとホスト名を追加します。

IP アドレスとホスト名の間は tab キーを押すと適当なスペースが入力されます。

hosts ファイルを上書きする際の警告のスクリーンショット

追加したら、esc キーを押して INSERT モードを終了し :wq と入力後 enter を押して保存します。

関連ページ:vim の基本的な使い方

サイト移転の際の動作確認

Wordpress などを使っているサイトの移転前の動作確認では、 hosts ファイルを編集して移転先の IP アドレスを指定して移転先のページにアクセスすることができます。

その場合、ホスト名を指定する際に、www. を使っているサイトではホスト名に www. も付けて記述します。Firefox や Safari では www. なしでも変更が反映されますが、Chorome では www. を付けないと変更が反映されないかもしれません。

関連記事:hosts ファイルの変更が Chrome で反映されない

Apache を再起動

Apache の設定ファイルを変更したら、Apache を再起動する必要があるので、MAMP を再起動(Stop → Start)します。設定した URL にアクセスできるようになっているかを確認します。

400 Bad Request error

Apache のローカル環境でホスト名に_(アンダースコア)が使われていると「400 Bad Request」になり、次のようなエラーが表示されます。

Bad Request

Your browser sent a request that this server could not understand.

Additionally, a 400 Bad Request error was encountered while trying to use an ErrorDocument to handle the request.

ホスト名にはアンダースコアは使えない

ホスト名(ドメインのラベル)には英字(A~Z)、数字(0~9)、及び記号のハイフン( - )が使えますが、アンダースコア(_)は使えません(バージョン 2.4.25 以前の古い Apache では使用できていたようです)。

参考サイト:ドメイン名の構成(JPNIC)

解決方法としては、アンダースコア(_)を使わないことですが、「一時的」にアンダースコア(_)を許容するには Apache の設定ファイル httpd.conf に次の行を追加します。

HttpProtocolOptions Unsafe

設定を反映するには Apache を再起動する必要があるので、MAMP を再起動(Stop Servers → Start Servers)します。

Apache のコマンド

MAMP の場合、Apache のコマンドは /Applications/MAMP/Library/bin/ に保存されています(MacOS の Apache のコマンドは /usr/sbin/ に保存されています)。

Applications
└── MAMP
    └── Library
        └── bin

例えば、Apache のバージョンは httpd コマンドに -v オプションを指定すると確認することができます。

-V をオプションを指定すると httpd.conf の場所などを含む compile settings が表示されます。

/Applications/MAMP/Library/bin/httpd -v   return //MAMP の Apache のバージョン
Server version: Apache/2.4.46 (Unix)
Server built:   Sep 30 2021 10:37:27

/Applications/MAMP/Library/bin/httpd -V   return  //compile settings
Server version: Apache/2.4.46 (Unix)
Server built:   Sep 30 2021 10:37:27
Servers Module Magic Number: 20120211:93
Server loaded:  APR 1.7.0, APR-UTIL 1.6.1
Compiled using: APR 1.7.0, APR-UTIL 1.6.1
Architecture:   64-bit
Server MPM:     prefork
  threaded:     no
    forked:     yes (variable process count)
Server compiled with....
 -D APR_HAS_SENDFILE
 -D APR_HAS_MMAP
 -D APR_HAVE_IPV6 (IPv4-mapped addresses enabled)
 -D APR_USE_SYSVSEM_SERIALIZE
 -D APR_USE_PTHREAD_SERIALIZE
 -D SINGLE_LISTEN_UNSERIALIZED_ACCEPT
 -D APR_HAS_OTHER_CHILD
 -D AP_HAVE_RELIABLE_PIPED_LOGS
 -D DYNAMIC_MODULE_LIMIT=256
 -D HTTPD_ROOT="/Applications/MAMP/Library"
 -D SUEXEC_BIN="/Applications/MAMP/Library/bin/suexec"
 -D DEFAULT_PIDLOG="logs/httpd.pid"
 -D DEFAULT_SCOREBOARD="logs/apache_runtime_status"
 -D DEFAULT_ERRORLOG="logs/error_log"
 -D AP_TYPES_CONFIG_FILE="/Applications/MAMP/conf/apache/mime.types"
 -D SERVER_CONFIG_FILE="/Applications/MAMP/conf/apache/httpd.conf"  //設定ファイル

MacOS の Apache のバージョンは以下で確認できます。

MacOS の Apache のコマンドの場合、/usr/sbin/ にはパスが通っているのでコマンド名(httpd)だけで実行できます(環境変数 PATH)。

httpd -v   return //MacOS の Apache のバージョン
Server version: Apache/2.4.51 (Unix)
Server built:   Nov 13 2021 01:41:12

httpd -V   return //MacOS Apache の compile settings
Server version: Apache/2.4.51 (Unix)
Server built:   Nov 13 2021 01:41:12
Servers Module Magic Number: 20120211:118
Server loaded:  APR 1.5.2, APR-UTIL 1.5.4
Compiled using: APR 1.5.2, APR-UTIL 1.5.4
Architecture:   64-bit
Server MPM:     prefork
  threaded:     no
    forked:     yes (variable process count)
Server compiled with....
 -D APR_HAS_SENDFILE
 -D APR_HAS_MMAP
 -D APR_HAVE_IPV6 (IPv4-mapped addresses enabled)
 -D APR_USE_FLOCK_SERIALIZE
 -D APR_USE_PTHREAD_SERIALIZE
 -D SINGLE_LISTEN_UNSERIALIZED_ACCEPT
 -D APR_HAS_OTHER_CHILD
 -D AP_HAVE_RELIABLE_PIPED_LOGS
 -D DYNAMIC_MODULE_LIMIT=256
 -D HTTPD_ROOT="/usr"
 -D SUEXEC_BIN="/usr/bin/suexec"
 -D DEFAULT_PIDLOG="/private/var/run/httpd.pid"
 -D DEFAULT_SCOREBOARD="logs/apache_runtime_status"
 -D DEFAULT_ERRORLOG="logs/error_log"
 -D AP_TYPES_CONFIG_FILE="/private/etc/apache2/mime.types"
 -D SERVER_CONFIG_FILE="/private/etc/apache2/httpd.conf" //MacOS の httpd.conf 

ロードされている(現在使用されている)モジュールは以下で確認することができます。

モジュールには、Apache 本体に組み込まれている静的モジュール(static)と必要に応じて読み込むことができる動的(DSO)モジュール(shared)に大別されます。

モジュールのロード

どのモジュールを読み込むかは httpd.conf で LoadModule ディレクティブによって設定します。LoadModule ディレクティブはデフォルトではコメントアウトされているものもあり、必要な機能はコメントを外して有効にすることができます(httpd.conf を変更したら Apache の再起動が必要です)。

以下は httpd.conf の一部抜粋です。動的モジュールのファイルの拡張子は「.so」になっています。

#
# Dynamic Shared Object (DSO) Support
#
# To be able to use the functionality of a module which was built as a DSO you
# have to place corresponding `LoadModule' lines at this location so the
# directives contained in it are actually available _before_ they are used.
# Statically compiled modules (those listed by `httpd -l') do not need
# to be loaded here.
#
# Example:
# LoadModule foo_module modules/mod_foo.so
#
LoadModule access_compat_module modules/mod_access_compat.so
LoadModule actions_module modules/mod_actions.so
LoadModule alias_module modules/mod_alias.so
LoadModule allowmethods_module modules/mod_allowmethods.so
LoadModule auth_basic_module modules/mod_auth_basic.so
LoadModule auth_digest_module modules/mod_auth_digest.so
LoadModule auth_form_module modules/mod_auth_form.so

・・・中略・・・
#
# Starting v5.7 ssl_module is statically compiled into Apache and
# doesn't need to be enabled / can not be disabled.
#
LoadModule status_module modules/mod_status.so
LoadModule substitute_module modules/mod_substitute.so
#LoadModule unique_id_module modules/mod_unique_id.so
LoadModule unixd_module modules/mod_unixd.so
LoadModule userdir_module modules/mod_userdir.so
LoadModule usertrack_module modules/mod_usertrack.so
LoadModule version_module modules/mod_version.so
LoadModule vhost_alias_module modules/mod_vhost_alias.so
LoadModule watchdog_module modules/mod_watchdog.so
LoadModule wsgi_module modules/mod_wsgi.so
LoadModule xsendfile_module modules/mod_xsendfile.so

LoadModule php7_module        /Applications/MAMP/bin/php/php7.4.21/modules/libphp7.so

・・・以下省略・・・

apachectl

コマンドラインから Apache を制御するには apachectl コマンドを使用します。

apachectl コマンドは以下のようにサブコマンドを指定することができます。

apachectl サブコマンド (MacOS)

/Applications/MAMP/Library/bin/apachectl サブコマンド (MAMP)

以下のサブコマンドを実行する際は、configtest を除きスーパーユーザの権限が必要なので sudo コマンド経由で実行します。

apachectl の主なサブコマンド
サブコマンド 説明
start Apache を開始
stop Apache を停止
restart Apache を再起動
graceful Apache の緩やかな再起動(実行中のリクエストの処理を中止させたくない場合)
configtest 設定ファイルの文法エラーをチェック

以下は MAMP の Apache を再起動する例です。

sudo /Applications/MAMP/Library/bin/apachectl restart  return
Password:  # パスワードを入力
configtest 文法エラーをチェック

設定ファイル httpd.conf に誤った記述があると、エラーが発生して Apache が起動しません。

configtest サブコマンド を使うと、httpd.conf の記述が正しいかをチェックすることができます。

「Syntax OK」と表示されれば、記述上の問題はないことになります。

/Applications/MAMP/Library/bin/apachectl configtest return
Syntax OK  # 記述が正しい場合

「apachectl configtest 」の代わりに「httpd -t」を実行しても同じです。

/Applications/MAMP/Library/bin/httpd -t return
Syntax OK

Warning

configtest サブコマンド を実行すると、以下のような Warning が表示される場合があります。

/Applications/MAMP/Library/bin/apachectl configtest return
Warning: DocumentRoot [/Applications/MAMP/Library/docs/dummy-host.example.com] does not exist
Warning: DocumentRoot [/Applications/MAMP/Library/docs/dummy-host2.example.com] does not exist
Syntax OK

この Warning はバーチャルホストを設定していて、httpd-vhosts.conf にサンプルとして記述されているバーチャルホストの設定(存在しない DocumentRoot)のためです。

そのため、この Warning は無視して問題ありませんが、Warning を出したくない場合は、httpd-vhosts.conf の該当箇所をコメントアウトするか削除(または変更)します。

httpd-vhosts.conf サンプル部分抜粋
# VirtualHost example: 以下の6行目と15行目が原因

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

また、configtest サブコマンド を実行すると、以下のような Warning が表示される場合があります。

/Applications/MAMP/Library/bin/apachectl configtest return
AH00548: NameVirtualHost has no effect and will be removed in the next release /Applications/MAMP/conf/apache/extra/httpd-vhosts.conf:20
Syntax OK

無視しても問題ありませんが、httpd-vhosts.conf の 20 行目に記述されている「NameVirtualHost *:80」が不要なのでコメントアウトするか削除すると Warning は消えます。

httpd-vhosts.conf 抜粋
#
# Use name-based virtual hosting.
#
#NameVirtualHost *:80  #コメントアウト

MAMP で Basic 認証

.htaccess ファイルと、ユーザ名(ID)とパスワードを記述する .htpasswd ファイルを作成して MAMP で Basic 認証を設定する例です。

.htaccess や .htpasswd を Mac で表示するには、shift + command + . を押します。

Basic 認証を設定するディレクトリに .htaccess を作成して配置します。

以下は.htaccess の記述例です。

.htaccess
AuthType Basic
AuthUserFile /Applications/MAMP/pwd/.htpasswd
AuthGroupFile /dev/null
AuthName "Login Password Required"
Require valid-user 

この例では MAMP ディレクトリの中に pwd というディレクトリ(/Applications/MAMP/pwd)を作成し、その中に .htpasswd というファイルを保存します。

.htpasswd ファイルには、ユーザー名(ID)とパスワード を「:(コロン)」で区切り記述します。その際、パスワードは暗号化(ハッシュ化)して保存します。

パスワードの暗号化は「パスワード暗号化(ハッシュ化)生成サンプル」で生成することができます。

以下は.htpasswd の記述例です。以下の場合、ユーザー名(ID)は usr1 で、パスワードは password を暗号化したものです。

.htpasswd
usr1:Y0TVVr8vSLApg

これで上記の .htaccess を配置したディレクトリにアクセスしようとすると以下のような認証のウィンドウが表示され、ユーザIDとパスワードを求められます。

ベーシック(Basic)認証の詳細は以下を御覧ください。

関連ページ:ベーシック(Basic)認証