Nginx/Apache が起動できないときの確認手順

  • URLをコピーしました!

Web サーバーとして広く使われる NginxApache (httpd) は、設定変更や環境の影響で起動に失敗することがあります。
「起動コマンドを実行してもエラーが出る」「サービスがすぐに落ちる」といったトラブルに直面したとき、やみくもに調べるのではなく、順序立てて確認することが重要です。

本記事では、Nginx / Apache が起動できないときの代表的な原因と確認手順を解説します。

目次

1. サービスのステータス確認

まずは systemd を使ってサービスの状態を確認します。

sudo systemctl status nginx
sudo systemctl status httpd

出力に「failed」や「error」が含まれていれば、詳細はログを確認する必要があります。

2. ログの確認

起動失敗の詳細はログに出力されます。

  • Nginx sudo journalctl -u nginx sudo tail -n 50 /var/log/nginx/error.log
  • Apache sudo journalctl -u httpd sudo tail -n 50 /var/log/httpd/error_log

エラーメッセージを必ず確認し、原因を切り分けましょう。

3. ポート競合の確認

Web サーバーは通常 80番 (HTTP)443番 (HTTPS) を利用します。
他のプロセスがすでに同じポートを使用していると、起動できません。

使用中ポートの確認

sudo lsof -i :80
sudo lsof -i :443

あるいは

sudo ss -ltnp | grep ':80'

出力に別プロセスが表示されれば、ポート競合が原因です。
競合するサービスを停止するか、Nginx/Apache の設定で別ポートに変更しましょう。

4. 設定ファイルの文法チェック

設定ファイルの誤記やタイプミスもよくある原因です。

  • Nginx sudo nginx -t
  • Apache sudo apachectl configtest # または sudo httpd -t

syntax is ok / test is successful と出れば問題なし
❌ エラーが出た場合 → 指定された行を修正する必要あり

5. 証明書・モジュールの不備

HTTPS を有効化している場合、証明書ファイルのパスや権限が誤っていると起動できません。

  • 証明書パスが正しいか
  • fullchain.pemprivkey.pem にアクセス権限があるか
  • Apache の場合は必要なモジュール(ssl_module など)が読み込まれているか

を確認しましょう。

6. SELinux / ファイアウォールの影響

起動自体ではなくアクセスできないケースですが、SELinux がブロックすることもあります。

getenforce

Enforcing の場合、ポリシーが原因かもしれません。audit.log を確認し、必要に応じて semanage でポートを許可しましょう。

また、firewalld の設定忘れもあわせて確認してください。

7. サービス再起動と有効化

問題を修正したらサービスを再起動します。

sudo systemctl restart nginx
sudo systemctl restart httpd

サーバー再起動後も自動で立ち上がるようにするには以下も実行します。

sudo systemctl enable nginx
sudo systemctl enable httpd

8. まとめ:確認手順の優先度

  1. systemctl status で状態を確認
  2. ログ (journalctl / エラーログ) を確認
  3. ポート競合 (lsof / ss) を確認
  4. 設定ファイルの文法チェック (nginx -t / apachectl configtest)
  5. 証明書・モジュールの設定確認
  6. SELinux や firewalld の影響を確認
目次