質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
nginx

nginixは軽量で高性能なwebサーバーの1つです。BSD-likeライセンスのもとリリースされており、あわせてHTTPサーバ、リバースプロキシ、メールプロキシの機能も備えています。MacOSX、Windows、Linux、上で動作します。

Q&A

解決済

2回答

55701閲覧

nginxを起動したら、起動に失敗しました。

zigutabi

総合スコア57

nginx

nginixは軽量で高性能なwebサーバーの1つです。BSD-likeライセンスのもとリリースされており、あわせてHTTPサーバ、リバースプロキシ、メールプロキシの機能も備えています。MacOSX、Windows、Linux、上で動作します。

0グッド

1クリップ

投稿2016/09/24 18:55

nginxをインストールしたので、「systemctl start nginx.service」とコマンドを入力して起動させたら、
起動に失敗しましたとエラーが表示されました。
そこで、「systemctl status nginx.service」で確認をしたところ以下のような内容でした。

nginx.service - nginx - high performance web server
Loaded: loaded (/usr/lib/systemd/system/nginx.service; disabled)
Active: failed (Result: exit-code) since Sat 2016-09-24 19:40:49 BST; 17s ago
Docs: http://nginx.org/en/docs/
Process: 12709 ExecStart=/usr/sbin/nginx -c /etc/nginx/nginx.conf (code=exited, status=1/FAILURE)
Process: 12707 ExecStartPre=/usr/sbin/nginx -t -c /etc/nginx/nginx.conf (code=exited, status=0/SUCCESS)

Sep 24 19:40:47 localhost.localdomain nginx[12707]: nginx: configuration file /etc/nginx/nginx.conf...ful
Sep 24 19:40:47 localhost.localdomain nginx[12709]: nginx: [emerg] bind() to 0.0.0.0:80 failed (98:...se)
Sep 24 19:40:47 localhost.localdomain nginx[12709]: nginx: [emerg] bind() to 0.0.0.0:80 failed (98:...se)
Sep 24 19:40:48 localhost.localdomain nginx[12709]: nginx: [emerg] bind() to 0.0.0.0:80 failed (98:...se)
Sep 24 19:40:48 localhost.localdomain nginx[12709]: nginx: [emerg] bind() to 0.0.0.0:80 failed (98:...se)
Sep 24 19:40:49 localhost.localdomain nginx[12709]: nginx: [emerg] bind() to 0.0.0.0:80 failed (98:...se)
Sep 24 19:40:49 localhost.localdomain nginx[12709]: nginx: [emerg] still could not bind()
Sep 24 19:40:49 localhost.localdomain systemd[1]: nginx.service: control process exited, code=exite...s=1
Sep 24 19:40:49 localhost.localdomain systemd[1]: Failed to start nginx - high performance web server.
Sep 24 19:40:49 localhost.localdomain systemd[1]: Unit nginx.service entered failed state.
Hint: Some lines were ellipsized, use -l to show in full.

これを読むと、「Failed to start nginx - high performance web server」とあったので、
検索してみたのですが、該当する記事が見つからず、わかりませんでした。

何が原因で起きたのでしょうか?

なお、開発環境は以下の通りです。
OS:CentOS7.1(vagrant)
vagrant:1.8.4
nginx:1.11.4
nginxはパッケージからのインストールになります。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ログはめんどくさがらずによく読みましょう。nginx自体が吐き出しているログは下記になります。

nginx: configuration file /etc/nginx/nginx.conf...ful
nginx: [emerg] bind() to 0.0.0.0:80 failed (98:...se)
...(同じメッセージが複数)...
nginx: [emerg] still could not bind()

日本語にするだいたい下記になります。

nginx: 設定ファイル/etc/nginx/nginx.confを読み込みました。
nginx: [緊急] IPアドレス0.0.0.080番ポートのバインドに失敗しました。
...(同じメッセージが複数)...
nginx: [緊急] バインドができませんでした。

WebサーバのようなTCPを用いたサーバサービスのプロセスは何かしらのポートをバインドして、リッスンする必要があります。ポートのバインドというのは、そのポートをそのプロセス専用にすることです。クライアントがそのポートへ接続すると、バインドしたプロセスだけがその接続を受け取れるという仕組みです。アドレスやポートはそれぞれ独立していますが、同じアドレスの同じポートをバインドできる__プロセス__はそのサーバ上でたった一つです

「IPアドレス0.0.0.080番ポートのバインド」が何を意味するかです。0.0.0.0というのは特殊なアドレスで、IPv4のアドレス全てを意味します。この場合は、サーバが持つ全てのIPv4のIPアドレスについて、80番ポートをバインド、つまり、nginx専用に使用としていることを意味します。

さて、ログでは「バインドに失敗した」とあります。バインドできなければ、Webサーバとして動作できませんので、nginxは起動に失敗したというのがログの意味です。では、なぜ失敗したのかですが、次の原因が考えられます。

  1. 0.0.0.0:80をバインドする権限が無かった。
  2. すでに別のプロセスが0.0.0.0:80をバインドしていた。

1.になる原因としては、

  • root権限がなかった。

Linuxでは1024未満のポートをバインドする場合、root権限が必要です。sudo systemctl start nginx.serviceなどとroot権限で実行してみてください。

  • SELinuxでポートのバインドが制限されていた。

パッケージから入れた場合は、自動的に設定されるため通常問題は起きません。しかし、後から何かしら設定しているのであれば、SELinuxのルールが壊れている可能性もあります。一度SELinuxを無効にしてから、実行してみてください。

次の2.については、Apache HTTP Sererなどの他のWebサーバが動作している、テストでsystemctl経由では無く、単独でnginxを動かしてしまっているなどが考えられます(同じnginxであっても、80番ポートをバインドできるのは、たった一つのプロセスのみです)。次のコマンドで、80番ポートを使用しているプロセスが無いかを確認してください。

$ sudo netstat -lntp

80番ポートをすでにバインドしているプロセスが存在する場合、そのプロセスを停止してから、nginxの起動を試してみてください。

投稿2016/09/24 21:41

raccy

総合スコア21733

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

自己解決

サーバーを再起動したら動きました。

投稿2019/07/29 23:44

zigutabi

総合スコア57

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問