| この記事の要点 |
|
macOS の Apache
macOS には標準で Apache HTTP Server(httpd)が同梱されており、開発用 Web サーバとして使えます。本ページでは macOS で Apache を起動・停止・再起動する基本コマンドと、よく使う運用コマンドをまとめます。
基本コマンド一覧
| 操作 | コマンド |
|---|---|
| 起動 | sudo apachectl start |
| 停止 | sudo apachectl stop |
| 再起動(プロセス停止 → 起動) | sudo apachectl restart |
| 設定再読み込み(無停止 graceful) | sudo apachectl graceful |
| graceful 停止(処理中リクエスト完了後) | sudo apachectl graceful-stop |
| 設定ファイル構文チェック | sudo apachectl configtest / apachectl -t |
| 状態確認 | sudo apachectl status |
| バージョン確認 | httpd -v |
| ロードされているモジュール | apachectl -M |
起動
sudo apachectl start
起動後、ブラウザで http://localhost/ にアクセスすると Apache のデフォルトページ(または /Library/WebServer/Documents/index.html の内容)が表示されます。
停止
sudo apachectl stop
再起動
sudo apachectl restart
restart はプロセスを停止してから起動します。本番運用や開発中の接続を切りたくない場合は graceful を使います。
graceful(無停止リロード)
sudo apachectl graceful # 設定を再読み込み(既存接続は維持)
sudo apachectl graceful-stop # 既存接続完了後に停止
設定ファイル(httpd.conf)を編集した後、接続を切らずに反映したい場合は graceful が安全です。
configtest(構文チェック)
設定変更後は必ず構文チェックしてから restart / graceful するのが鉄則です。誤った設定で再起動すると、Apache が立ち上がらなくなることがあります。
sudo apachectl configtest
# Syntax OK ← この表示が出れば OK
# 同じ意味
sudo apachectl -t
標準同梱 Apache と Homebrew 版の違い
macOS には標準同梱の Apacheと、別途 Homebrew でインストールできる httpd があります。両者は完全に別物で、パスと設定ファイルが異なります。混在すると混乱の元なので、用途を決めて使い分けます。
| 項目 | 標準同梱 | Homebrew 版 |
|---|---|---|
| 実行ファイル | /usr/sbin/httpd | /opt/homebrew/bin/httpd(Apple Silicon)/usr/local/bin/httpd(Intel) |
| apachectl | /usr/sbin/apachectl | /opt/homebrew/bin/apachectl |
| 設定ファイル | /etc/apache2/httpd.conf | /opt/homebrew/etc/httpd/httpd.conf |
| ドキュメントルート | /Library/WebServer/Documents | /opt/homebrew/var/www |
| ログ | /private/var/log/apache2/ | /opt/homebrew/var/log/httpd/ |
| デフォルトポート | 80 | 8080(インストール直後) |
| 起動方法 | sudo apachectl start | brew services start httpd |
Homebrew 版の起動・停止
brew install httpd
brew services start httpd # 起動 + 自動起動登録
brew services stop httpd # 停止 + 自動起動解除
brew services restart httpd # 再起動
brew services list # 状態確認
自動起動の制御(launchctl)
macOS は launchd でサービスを管理しています。OS 再起動時に自動で Apache を立ち上げたい場合は launchctl を使います。
# 自動起動を有効化(macOS の plist は既に同梱)
sudo launchctl load -w /System/Library/LaunchDaemons/org.apache.httpd.plist
# 自動起動を無効化
sudo launchctl unload -w /System/Library/LaunchDaemons/org.apache.httpd.plist
macOS Catalina 以降は /System/Library が読み取り専用となり、上記コマンドが動作しないバージョンもあります。その場合は Homebrew 版 + brew services の方が確実です。
状態確認とトラブルシュート
プロセス確認
ps aux | grep httpd
# httpd プロセスが複数立ち上がっていれば動作中
sudo lsof -i :80
# 80 番ポートを listen しているプロセスを確認
ログ確認
# 標準同梱版
sudo tail -f /private/var/log/apache2/error_log
sudo tail -f /private/var/log/apache2/access_log
# Homebrew 版
tail -f /opt/homebrew/var/log/httpd/error_log
tail -f /opt/homebrew/var/log/httpd/access_log
よくあるエラー
| 症状 | 原因 | 対処 |
|---|---|---|
| Address already in use: AH00072 | 80 番が他プロセス(nginx 等)に占有 | sudo lsof -i :80 で犯人特定、停止 |
| (13)Permission denied | 1024 未満のポートに非 root で bind しようとした | sudo を付ける、または 8080 等を使う |
| Syntax error on line N of /etc/apache2/httpd.conf | 設定ファイル誤り | sudo apachectl configtest でエラー位置を確認 |
| 403 Forbidden | ドキュメントルートのパーミッション | chmod -R 755 で読み取り権付与 |
| localhost につながらない | Apache が止まっている / ファイアウォール | sudo apachectl start、システム設定 → ファイアウォール |
FAQ
Q: macOS のどのバージョンから Apache の標準同梱は無くなった?
A: macOS Monterey (12)・Ventura (13)・Sonoma (14) まで /usr/sbin/httpd は同梱されています。将来的には削除される可能性があり、Apple は公式に「開発用」と位置付けています。本格運用は Homebrew 版か Docker 推奨。
Q: 80 番ポートを使うと毎回 sudo が必要
A: macOS では 1024 未満のポートに bind するには root 権限が必要です。開発用に 8080 / 8000 などを使えば sudo 不要にできます。
Q: graceful と restart の違いは?
A: restart は親プロセスごと再起動し既存接続も切れます。graceful は子プロセスを順次入れ替え、既存接続は完了まで維持します。本番では graceful が推奨。
関連
- コマンド一覧 — 親カテゴリ
- macOS — 上位カテゴリ
- Apache(httpd) — サーバ本体
- httpd.conf / launchctl / brew services
子ページはありません
- 起動・停止(Linux)
- 起動・停止
人気ページ
- 1 Eclipseで「サーバーに追加または除去できるリソースがありません。」の原因と対処法
- 2 tomcat の起動 / 停止ログと catalina.log・catalina.out の違い
- 3 JavaScript で base URL を取得する方法|window.location.origin
- 4 YouTube Data API v3 エラー一覧|403・400・404 の原因と対処
- 5 Laravel エラー一覧|500/Blade/DB 接続/ルーティングの代表エラー
- 6 3Dグラフィックスとは|モデリング/レンダリング/主要ソフトウェア (Blender / Maya)
- 7 Spring Frameworkのアノテーション一覧
- 8 【Spring】@Valueアノテーションとは
- 9 CATALINA_HOME の確認方法 (Linux / Mac)
- 10 【Spring】@Autowiredアノテーションとは
最近更新/作成されたページ
- Git pushした変更の取消し|revert・履歴変更と保護の注意点 2026-10-15 23:49:01
- Gitでローカルを戻す前に|reset・restoreの違いと退避範囲 2026-10-15 23:49:01
- Git rebaseの使い方|対象範囲・競合解決・pushの判断 2026-10-15 22:50:59
- Git pullの使い方|取込み先・ff-only・競合とstashの注意点 2026-10-15 22:50:59
- Git pushの使い方|送信先・タグ・force-with-leaseの条件 2026-10-15 22:12:47
- Git remoteの設定・確認・削除|SSH URLとfetch/pushの違い 2026-10-15 22:12:47
- Gitリモートリポジトリの作成|初回push・既存履歴・mirrorの注意 2026-10-15 15:48:16
- Gitのuser.name・user.email設定|local/global・確認と過去履歴の注意 2026-10-15 15:30:07
- LinuxにGitをインストール|配布元・初期設定・TLSと認証の確認 2026-10-15 15:30:06
- Git導入と初回push|Linuxサーバー・Windows/macOS・SSH設定 2026-10-15 14:51:54
- Db2のCREATE INDEX|索引定義・INCLUDEと実行計画の確認 2026-10-15 14:10:22
- Db2の自動採番|IDENTITY・ID取得とRESTARTの注意点 2026-10-15 14:10:22
- 【DB2】特定スキーマの全テーブルの全カラム情報を取得する方法 2026-10-15 13:53:15
- Db2のシーケンスとIDENTITYの違い|採番とカタログの確認SQL 2026-10-15 13:53:15
- Db2で複数カラムをUPDATEする方法|SET・WHEREと更新前の値 2026-10-15 13:53:15