Help us understand the problem. What is going on with this article?

Mojaveでローカル環境でApacheを動かす

More than 1 year has passed since last update.

これは何?

macOSがVersionアップ時にほとんど起こるApacheの設定変更のメモです。

注意

  • Mojave向けなので、他のバージョンで以下の設定をして動作を保証するものではありません。
  • 設定時はsuper user権限で行うので、権限があるかどうか事前の確認を行ってください。
  • この設定は個人の開発環境用の設定で、一般公開用の設定ではありません。

方針

  • ウェブサーバをmacOSに同梱されているapacheで動作させる
  • ユーザディレクトリを有効化し、~/{user_name}/Sites/以下をユーザのDocumentRootとする
  • HTTP/2を有効にする
  • mod_rewriteを有効にする
  • 公開ディレクトリ内のディレクトリ表示、シンボリックリンク、Multiviewを有効にする
  • ミドルウェア動作の設定は行わない(例:PHP, Perl等)
  • VirtualHostの設定は行わない

設定を行う

/etc/apache2/httpd.confの修正

  • 以下を有効化
  • 有効化するには、行頭の#を削除する
LoadModule http2_module libexec/apache2/mod_http2.so
LoadModule userdir_module libexec/apache2/mod_userdir.so
LoadModule rewrite_module libexec/apache2/mod_rewrite.so
Include /private/etc/apache2/extra/httpd-userdir.conf

(↑ /etc/apache2/extra/httpd-userdir.confが読み込まれるようになる)

/etc/apache2/extra/httpd-userdir.confの修正

Include /private/etc/apache2/users/*.conf

(↑ /etc/apache2/users/{user_name}.confが読み込まれるようになる)

/etc/apache2/users/{user_name}.conf を修正

<Directory "/Users/{user_name}/Sites/">
  Options Indexes MultiViews FollowSymLinks
  Require all granted
</Directory>
  • {user_name}には/Users/に存在するユーザ名を使用する。
  • 一行目の<Directory "/Users/{user_name}/Sites/">内のSitesを変更することでDocumentRootを変更することが可能。

ディレクトリの作成

ユーザ名:{user_name} のユーザディレクトリを作成する。

$ mkdir -p /User/{user_name}/Sites

apacheを起動

$ sudo /usr/sbin/apachectl restart;

動作確認

以下の2点で動作確認
- ブラウザのアドレスバーに127.0.0.1と入力してIt works!と表示される
- ブラウザのアドレスバーに127.0.0.1/~{user_name}/と入力して/User/{user_name}/Sitesのファイル一覧が表示される

その他

設定できてるはずなのに動かない

正しい使い方であるかは調べていませんが、以下のようにオプションなしでコマンドを実行すると、エラー表示がされることがあります。

$sudo /usr/sbin/apachectl;

ログの確認

ログは以下の2つです。
- /var/log/apache2/error_log:エラーのログが書き込まれるファイル
- /var/log/apache2/access_log:アクセスのログが書き込まれるファイル

error_log

/etc/apache2/httpd.confの以下を書き換えることでファイル名の変更が可能です。

ErrorLog "/private/var/log/apache2/error_log"

access_log

error_logと同様に/etc/apache2/httpd.confの以下を書き換えることでファイル名の変更が可能です。

CustomLog "/private/var/log/apache2/access_log" common

Reference

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away