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 などで誤りがないかを確認します。
PHP エラーの表示
MAMP の場合、デフォルトでは PHP のエラーを表示(出力)しないようになってます。
ローカル環境(開発環境)の場合は、エラーがチェックできるようになっている方が良いのでエラーを表示するようにしておくと良いと思います。
※ 逆に本番(プロダクション)環境では、エラーが表示されてしまうとファイルのパスなどが表示されてしまい、セキュリティ上問題があるのでエラーを表示しないように設定し、ログに出力するようにするのが一般的です。
全ての php ファイルに適用するには php.ini を編集するのが簡単です。
php.ini の display_errors という「エラーをHTML出力の一部として画面に出力するかどうか」を定義する項目で設定することができます。以下のようにデフォルトでは Off になっています。設定項目の上にはコメントアウトされた説明書きがあります。
;; 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 ファイルに対してエラーを表示するようになります。
display_errors = On
MAMP バージョン 6.9 の php8.1.13 や php8.2.0 の php.ini ではデフォルトで On になっています。
参考ページ:PHP マニュアル(実行時設定)
エラーレベルの設定
開発環境では全ての種類のエラーを表示するようにしておきます。MAMP の php7.4.21 では以下のようにデフォルトで全ての種類のエラーを表示するようになっていると思います。
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 で設定する場合は、以下を追記します。
#エラー表示する場合 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 ... がコメントアウトされているので、その場合はコメントアウトを外します。
# 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つのバーチャルホストの設定サンプルが記載されています。
# # 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>
<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 ファイルを開くと初期状態ではおそらく以下のようになっていると思います。
## # 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
ファイルを元の位置に戻して上書きします。
ファイルを上書きする際には以下のようなメッセージが表示されるので「認証」をクリックします。
続いて以下が表示されるので「置き換える」をクリックし、パスワードの入力を求められるので入力します。
ターミナルで編集
ターミナルを起動して sudo vi /private/etc/hosts と入力して enter を押すとパスワードを求められるので入力すると hosts ファイルが開きます。
i を押して INSERT モードにして矢印キーを使ってカーソルを一番下の右端まで移動し、改行して IP アドレスとホスト名を追加します。
IP アドレスとホスト名の間は tab キーを押すと適当なスペースが入力されます。
追加したら、esc キーを押して INSERT モードを終了し :wq と入力後 enter を押して保存します。
関連ページ:vim の基本的な使い方
サイト移転の際の動作確認
Wordpress などを使っているサイトの移転前の動作確認では、 hosts ファイルを編集して移転先の IP アドレスを指定して移転先のページにアクセスすることができます。
その場合、ホスト名を指定する際に、www. を使っているサイトではホスト名に www. も付けて記述します。Firefox や Safari では www. なしでも変更が反映されますが、Chorome では www. を付けないと変更が反映されないかもしれません。
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 コマンド経由で実行します。
サブコマンド | 説明 |
---|---|
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 の該当箇所をコメントアウトするか削除(または変更)します。
# 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 は消えます。
# # Use name-based virtual hosting. # #NameVirtualHost *:80 #コメントアウト
MAMP で Basic 認証
.htaccess ファイルと、ユーザ名(ID)とパスワードを記述する .htpasswd ファイルを作成して MAMP で Basic 認証を設定する例です。
.htaccess や .htpasswd を Mac で表示するには、shift + command + . を押します。
Basic 認証を設定するディレクトリに .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 を暗号化したものです。
usr1:Y0TVVr8vSLApg
これで上記の .htaccess を配置したディレクトリにアクセスしようとすると以下のような認証のウィンドウが表示され、ユーザIDとパスワードを求められます。
ベーシック(Basic)認証の詳細は以下を御覧ください。
関連ページ:ベーシック(Basic)認証