5.

macOSでApacheを起動・停止・再起動する方法|apachectlとbrew services

編集

macOSでApache(httpd)を起動・停止・再起動するには、OS標準のApacheなら sudo apachectl startstoprestart を、Homebrewで導入したApacheなら brew services start httpdstop httpdrestart httpd を実行するのが基本です。macOSには「OS標準のhttpd」と「Homebrew版httpd」という2つの系統が存在し得るため、どちらを操作しているかを意識することが安定運用のカギになります。

この記事の要点
  • macOSのApacheには「OS標準(プリインストール)のhttpd」と「Homebrewで入れたhttpd」の2系統があり、起動・停止・再起動のコマンドが異なります。
  • OS標準のApacheは sudo apachectl start / stop / restart で操作します(管理者権限が必要)。
  • Homebrew版は brew services start httpd / stop httpd / restart httpd でサービスとして管理するのが一般的です。
  • 稼働確認は curl http://localhost/ やプロセス確認(ps)、待ち受けポートの確認で行えます。
  • 標準httpdとHomebrew版が同じポート(80など)を同時に使うと競合します。どちらか一方に統一するのが安全です。

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_FILEHTTPD_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 で個別に更新

 

つまずきやすいポイント

注意したい落とし穴
  • 2系統の混在によるポート競合:標準httpdとHomebrew版httpdが同じポート(例: 80)を同時に使おうとすると、後から起動した側が「Address already in use」などで起動に失敗します。どちらか一方に統一するか、ポートを分けて運用してください。
  • ポート80には管理者権限が必要:1024未満の特権ポートで待ち受ける場合、sudo が必要です。権限不足だと起動に失敗したり、待ち受けが行われなかったりします。
  • 標準httpdの設定はOS更新で初期化されることがある:OS標準のApacheの設定ファイルは、macOSのアップデートによって既定状態に戻ったり、変更が上書きされたりする場合があります。重要な設定は別途バックアップを取り、更新後に再確認すると安全です。
  • どちらの apachectl を実行しているか不明になりやすい:PATHの設定次第で、apachectl が標準版とHomebrew版のどちらを指すかが変わります。which -a apachectlapachectl -V で実体を確認してから操作しましょう。
  • 停止したつもりが残っている:片方の系統だけを停止しても、もう一方が動いていれば curl localhost は応答します。停止の確認はプロセスやポート(lsof)でも行うと確実です。

 

よくある質問

Q. macOSにApacheが標準で入っているか確認するには?

A. ターミナルで apachectl -v を実行し、バージョンが表示されればApacheの実行ファイルが存在しています。ただし、表示されたものが標準版かHomebrew版かは which -a apachectl でパスを確認して判断してください。OSのバージョンによっては標準httdが用意されていない、または利用方法が変わっている場合があります。

Q. sudo apachectl restartbrew 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 で確認)かどうかも併せてチェックしてください。別系統の設定ファイルを編集していると、いくら再起動しても変化が見えません。

編集
Post Share
子ページ

子ページはありません

同階層のページ
  1. スクリーンショットの撮り方
  2. 便利ショートカット一覧
  3. ブラウザの種類を切り替える方法
  4. バージョンの確認
  5. ローカルのapache起動/停止/再起動
  6. 印刷関連

最近更新/作成されたページ