タイトル: ローカルのapache起動/停止/再起動
SEOタイトル: macOSでApacheを起動・停止・再起動する方法|apachectlとbrew services
macOSでApache(httpd)を起動・停止・再起動するには、OS標準のApacheなら sudo apachectl start/stop/restart を、Homebrewで導入したApacheなら brew services start httpd/stop httpd/restart httpd を実行するのが基本です。macOSには「OS標準のhttpd」と「Homebrew版httpd」という2つの系統が存在し得るため、どちらを操作しているかを意識することが安定運用のカギになります。
| この記事の要点 |
|---|
|
macOSにおけるApache(httpd)の事情
macOSには、長らくApache HTTP Server(httpd)がOSの一部としてプリインストールされてきました。ターミナルから apachectl コマンドが利用でき、追加インストールなしでWebサーバーを起動できるのが特徴です。一方で、より新しいバージョンや独自のモジュール構成を使いたい場合に備えて、パッケージ管理ツールのHomebrewからApacheを導入する方法も広く使われています。
このため、macOS上のApacheを操作する際は、まず「自分が触ろうとしているのはどちらのApacheか」を確認することが重要です。両者は実行ファイルの場所、設定ファイルの場所、起動・停止のコマンド、デフォルトの待ち受けポートが異なります。混在させると、片方を停止したつもりがもう片方が動いていた、という状況が起こりやすくなります。
なお、AppleはmacOSのアップデートに伴いプリインストールされる開発者向けコンポーネントの扱いを変更することがあり、OSのバージョンによって標準httpdの有無や挙動が異なる場合があります。お使いのmacOSで標準httpdが利用できるかは、後述の確認コマンドで実際に確かめることをおすすめします。
OS標準のApacheを起動・停止・再起動する
OS標準のApacheは apachectl(または httpd)コマンドで制御します。ポート80などの特権ポートを扱うため、基本的に管理者権限(sudo)が必要です。
|
# 起動 sudo apachectl start # 停止 sudo apachectl stop # 再起動 sudo apachectl restart |
各コマンドの意味は次のとおりです。
- start:Apacheを起動します。
- stop:Apacheを停止します。
- restart:いったん停止してから再起動します。設定変更を反映したいときに使います。
設定ファイルを書き換えた後で、稼働を維持したまま設定だけを反映させたい場合は、graceful を使う方法もあります。これは処理中のリクエストを中断せずに設定を読み直す動作で、運用中のサーバーへの影響を抑えたいときに用いられます。
|
# 設定ファイルの文法チェック sudo apachectl configtest # 処理中の接続を維持したまま設定を反映 sudo apachectl graceful |
再起動の前に configtest で設定ファイルの文法を確認しておくと、誤った設定でApacheが起動しなくなる事故を防ぎやすくなります。
Homebrew版のApacheを起動・停止・再起動する
Homebrewでhttpdを導入している場合は、Homebrewのサービス管理機能 brew services を使ってバックグラウンドサービスとして起動・停止・再起動するのが一般的です。フォーミュラ名は通常 httpd です。
|
# 起動(ログイン時に自動起動する設定として登録) brew services start httpd # 停止 brew services stop httpd # 再起動 brew services restart httpd # 現在のサービス状態を一覧表示 brew services list |
brew services start は、サービスを起動すると同時に自動起動の設定としても登録されることが多く、Macの再起動後も自動でApacheが立ち上がるようになります。1回だけ起動して自動起動は登録したくない場合は、brew services run httpd を使う方法があります。
Homebrew版のApacheは、デフォルトでは特権の不要なポート(一般的に8080)で待ち受けるよう設定されていることがあります。この場合は sudo なしで起動できますが、ポート80で待ち受けるよう設定を変更した場合は、管理者権限での起動が必要になります。実際の待ち受けポートは設定ファイル(後述)の Listen ディレクティブで確認してください。
Homebrewを使わず apachectl で直接Homebrew版httpdを起動・停止することも可能ですが、その場合は実行している apachectl がHomebrew版か標準版かを取り違えないよう、which apachectl などで実体のパスを確認しておくと安全です。
稼働しているか確認する
起動・停止の操作後は、実際にApacheが応答しているかを確認しましょう。最も手軽なのは curl でローカルホストにアクセスする方法です。
|
# ローカルのApacheにアクセスして応答を確認(標準ポート80) curl http://localhost/ # ポートを指定して確認する場合(例: 8080) curl http://localhost:8080/ # HTTPステータスだけを確認 curl -I http://localhost/ |
「It works!」のような既定ページや、設定したドキュメントルートの内容が返ってくれば、Apacheは稼働しています。ブラウザで http://localhost/ を開いて確認しても構いません。
プロセスや待ち受けポートから確認したい場合は、次のようなコマンドが役立ちます。
|
# httpdプロセスが動いているか確認 ps aux | grep httpd # 80番ポートを待ち受けているプロセスを確認 sudo lsof -nP -iTCP:80 -sTCP:LISTEN |
ps aux | grep httpd で複数のhttpdプロセスが見えるのは通常の挙動です(親プロセスと、リクエストを処理する子プロセスが存在するため)。一方で、想定外の系統のhttpdが動いていないかをチェックする目的でも、これらの確認は有効です。
設定ファイルの場所
設定ファイルの場所は、OS標準版とHomebrew版で異なります。代表的なパスは次のとおりですが、環境やバージョンによって変わることがあるため、実際のパスは実行中のApacheに合わせて確認してください。
- OS標準版:メイン設定ファイルは
/etc/apache2/httpd.conf。追加設定は/etc/apache2/other/や/etc/apache2/extra/に置かれることがあります。 - Homebrew版(Apple Silicon):Homebrewの導入先
/opt/homebrew配下、例として/opt/homebrew/etc/httpd/httpd.conf。 - Homebrew版(Intel):Homebrewの導入先
/usr/local配下、例として/usr/local/etc/httpd/httpd.conf。
実行中のApacheがどの設定ファイルを読み込んでいるかは、apachectl -V の出力に含まれる SERVER_CONFIG_FILE や HTTPD_ROOT から判断できます。
|
# 使用中のApacheのコンパイル設定・既定パスを表示 apachectl -V # 実行している apachectl の実体パスを確認 which -a apachectl |
標準版とHomebrew版の比較
2つの系統の違いを整理すると、おおむね次のようになります。実際の値は環境やバージョン、設定内容によって変わるため、目安として参照してください。
| 項目 | OS標準のApache | Homebrew版のApache |
|---|---|---|
| 起動・停止・再起動 | sudo apachectl start / stop / restart |
brew services start / stop / restart httpd |
| 主な待ち受けポート(既定) | 80(特権ポート) | 8080 など非特権ポートのことが多い(設定で変更可) |
| 設定ファイルの例 | /etc/apache2/httpd.conf |
/opt/homebrew/etc/httpd/httpd.conf(Apple Silicon)//usr/local/etc/httpd/httpd.conf(Intel) |
| 自動起動の管理 | launchd 経由(手動制御が中心) |
brew services で登録・解除 |
| バージョン更新 | OSのアップデートに依存 | brew upgrade httpd で個別に更新 |
つまずきやすいポイント
| 注意したい落とし穴 |
|---|
|
よくある質問
Q. macOSにApacheが標準で入っているか確認するには?
A. ターミナルで apachectl -v を実行し、バージョンが表示されればApacheの実行ファイルが存在しています。ただし、表示されたものが標準版かHomebrew版かは which -a apachectl でパスを確認して判断してください。OSのバージョンによっては標準httdが用意されていない、または利用方法が変わっている場合があります。
Q. sudo apachectl restart と brew services restart httpd はどちらを使えばよいですか?
A. 操作したいApacheがどちらの系統かによります。OS標準のhttpdを動かしているなら sudo apachectl restart、Homebrewで導入したhttpdを brew services で管理しているなら brew services restart httpd を使います。両系統を混在させず、運用する方に合わせてコマンドを統一するのがおすすめです。
Q. 設定を変更したのに反映されません。
A. 設定ファイルを保存しただけでは反映されないため、再起動(restart または graceful)が必要です。反映前に sudo apachectl configtest で文法エラーがないかを確認し、編集した設定ファイルが実際に読み込まれているファイル(apachectl -V で確認)かどうかも併せてチェックしてください。別系統の設定ファイルを編集していると、いくら再起動しても変化が見えません。