Web サーバーとして広く使われる Nginx や Apache (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.pem
やprivkey.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. まとめ:確認手順の優先度
systemctl status
で状態を確認- ログ (
journalctl
/ エラーログ) を確認 - ポート競合 (
lsof
/ss
) を確認 - 設定ファイルの文法チェック (
nginx -t
/apachectl configtest
) - 証明書・モジュールの設定確認
- SELinux や firewalld の影響を確認


