概要(短く)
- 標準 Apache
/usr/sbin/httpd- 設定:/etc/apache2/httpd.conf- デフォルト DocumentRoot:/Library/WebServer/Documents- ポート 80- Homebrew Apache
/opt/homebrew/opt/httpd/bin/httpd- 設定:/opt/homebrew/etc/httpd/httpd.conf- デフォルト DocumentRoot:/opt/homebrew/var/www- 通常ポート 8080- 重要
- 両者は別物。**同時起動でポート競合**するため、どちらか一方だけを使う運用を推奨します。
よく使うコマンド(標準 Apache)
標準 Apache を操作する基本コマンド:
sudo apachectl start sudo apachectl stop sudo apachectl restart sudo apachectl configtest # 設定構文チェック ps aux | grep httpd # プロセス確認 sudo lsof -i :80 # ポート 80 占有確認 sudo tail -f /var/log/apache2/error_log
Homebrew 版の確認/停止
brew services list brew services stop httpd sudo pkill -9 -f /opt/homebrew/opt/httpd/bin/httpd ps aux | grep /opt/homebrew/opt/httpd
Tip: Homebrew 版を使わないなら brew uninstall httpd で削除しておくと競合が発生しません。
設定ファイルと主要パス
- 標準 Apache 実行ファイル
/usr/sbin/httpd- 標準 httpd.conf
/etc/apache2/httpd.conf- 標準 DocumentRoot
/Library/WebServer/Documents- 標準 ログ
/var/log/apache2/error_logと/var/log/apache2/access_log- Homebrew 実行ファイル
/opt/homebrew/opt/httpd/bin/httpd- Homebrew 設定
/opt/homebrew/etc/httpd/httpd.conf(extra/ 配下も)- Homebrew DocumentRoot
/opt/homebrew/var/www
DocumentRoot とファイル配置
DocumentRoot 配下のディレクトリは URL パスにそのまま対応します。
/Library/WebServer/Documents/ ├─ Library.html → http://localhost/Library.html ├─ app/index.html → http://localhost/app/ └─ images/logo.png → http://localhost/images/logo.png
権限のポイント:
- Apache は通常
_wwwユーザーで動作します。DocumentRoot とファイルは_wwwが読み取れるようにする(例:chmod -R 755 /Library/WebServer/Documents)。 - ユーザーディレクトリ(/Users/you/...)を直接 DocumentRoot にすると権限エラーが発生しやすい。
運用方針:どちらを使うか決める(推奨)
目的別おすすめ:
- macOS に組み込みの簡単なテストやシステム統合 → 標準 Apache
- Homebrew 管理で複数バージョンやカスタムビルドを扱いたい → Homebrew Apache
プラン A:標準 Apache を使う(推奨・簡単)
# Homebrew版を止める brew services stop httpd sudo pkill -9 -f /opt/homebrew/opt/httpd/bin/httpd # 設定確認・起動 sudo apachectl configtest sudo apachectl start
プラン B:Homebrew Apache を使う(標準を停止)
# 標準apacheを停止して無効化 sudo apachectl stop sudo launchctl bootout system /System/Library/LaunchDaemons/org.apache.httpd.plist # Homebrew版を起動 brew services start httpd
トラブルシューティング(よくある問題と対処)
1) 起動時に出る警告: AH00558: Could not reliably determine the server's fully qualified domain name
→ 軽微な警告。/etc/apache2/httpd.confServerName localhost を追記して再起動すれば消えます。
2) 起動に失敗してログに AH00136: Server MUST relinquish startup privileges
→ mod_unixd が読み込まれていない か、別の httpd が介在していると発生します。
# 必要モジュールが有効か確認 # /etc/apache2/httpd.conf に次があるか: LoadModule unixd_module libexec/apache2/mod_unixd.so
3) ポート 80 が使えない / 接続拒否
sudo lsof -i :80 # /opt/homebrew/.../httpd が出ていたら Homebrew版がポートを占有している
→ Homebrew 側を停止してから標準 Apache を起動してください。
4) ファイルが見えない(403 / 404)
- DocumentRoot が期待場所になっているか確認(httpd.conf)
- パーミッション:
chmod -R 755 /path/to/docroot <Directory>のRequire all grantedを確認
5) apachectl status が lynx: command not found
→ 表示用の lynx が入っていないだけ。状態確認は ps aux | grep httpd と lsof で代替できます。
VirtualHost と複数サイト運用の基本
DocumentRoot をそのまま変えずに複数サイトをホストするには VirtualHost を使います(例: 開発用と静的サイトを分ける)。
<VirtualHost *:80>
ServerName local-app.test
DocumentRoot "/Users/you/projects/app/public"
<Directory "/Users/you/projects/app/public">
Require all granted
AllowOverride All
</Directory>
</VirtualHost>
ローカルで名前解決するには /etc/hosts にエントリを追加:
127.0.0.1 local-app.test
Django / PHP を Apache 下で動かす(概略)
Django(mod_wsgi)概略
- mod_wsgi をインストール(system または brew)
- VirtualHost に WSGIScriptAlias を設定して Django の wsgi.py を指す
# 例(簡易) WSGIDaemonProcess myapp python-path=/Users/you/projects/myapp:/Users/you/.venv/lib/pythonX.Y/site-packages WSGIScriptAlias / /Users/you/projects/myapp/myapp/wsgi.py <Directory /Users/you/projects/myapp> Require all granted </Directory>
PHP
- Homebrew 版や macOS の組み込み PHP モジュール(バージョン依存)を有効化
LoadModule php_module ...を httpd.conf に追加し、DirectoryIndex index.phpを設定
起動前チェックリスト(実行順)
brew services stop httpd(Homebrew版を使わない場合)sudo pkill -9 -f /opt/homebrew/opt/httpd/bin/httpd(残プロセスを排除)sudo apachectl configtest(Syntax OK を確認)sudo apachectl start(起動)sudo lsof -i :80またはps aux | grep httpdで確認- ブラウザで
http://localhost/を開く
FAQ(よくある質問)
Q: 両方の Apache を同時に起動できますか?
A: ポートを分ければ技術的には可能(例: Homebrew を 8080、標準を 80)。しかし設定混乱の原因になるため非推奨。
Q: ServerName の警告は無視できますか?
A: 基本的に動作には影響しません。ログ上の警告を消すには ServerName localhost を設定して再起動してください。
Q: 標準 Apache を完全に削除したい
A: macOS に組み込まれているため完全削除は非推奨です。代わりに標準を無効化して Homebrew版に切り替えてください(手順は本ページ上部の「プラン B」参照)。