web-dev-qa-db-ja.com

Ubuntu 16.04にNginxをインストールする際のエラー

Nginxをインストールしようとすると、このエラーが発生し続けます。何回か再インストールしようとしましたが、このエラーが表示され続け、nginxを起動できません。

ヘルプを感謝します!

Job for nginx.service failed because the control process exited with error code. See "systemctl status nginx.service" and "journalctl -xe" for details.
invoke-rc.d: initscript nginx, action "start" failed.
● nginx.service - A high performance web server and a reverse proxy server
   Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled)
   Active: failed (Result: exit-code) since Mon 2017-03-27 21:38:51 PHT; 10ms ago
  Process: 28178 ExecStart=/usr/sbin/nginx -g daemon on; master_process on; (code=exited, status=1/FAILURE)
  Process: 28174 ExecStartPre=/usr/sbin/nginx -t -q -g daemon on; master_process on; (code=exited, status=0/SUCCESS)

Mar 27 21:38:49 nico-Aspire-E5-575G nginx[28178]: nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
Mar 27 21:38:49 nico-Aspire-E5-575G nginx[28178]: nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
Mar 27 21:38:50 nico-Aspire-E5-575G nginx[28178]: nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
Mar 27 21:38:50 nico-Aspire-E5-575G nginx[28178]: nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
Mar 27 21:38:51 nico-Aspire-E5-575G nginx[28178]: nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
Mar 27 21:38:51 nico-Aspire-E5-575G nginx[28178]: nginx: [emerg] still could not bind()
Mar 27 21:38:51 nico-Aspire-E5-575G systemd[1]: nginx.service: Control process exited, code=exited status=1
Mar 27 21:38:51 nico-Aspire-E5-575G systemd[1]: Failed to start A high performance web server and a reverse proxy server.
Mar 27 21:38:51 nico-Aspire-E5-575G systemd[1]: nginx.service: Unit entered failed state.
Mar 27 21:38:51 nico-Aspire-E5-575G systemd[1]: nginx.service: Failed with result 'exit-code'.
dpkg: error processing package nginx-core (--configure):
 subprocess installed post-installation script returned error exit status 1
dpkg: dependency problems prevent configuration of nginx:
 nginx depends on nginx-core (>= 1.10.0-0ubuntu0.16.04.4) | nginx-full (>= 1.10.0-0ubuntu0.16.04.4) | nginx-light (>= 1.10.0-0ubuntu0.16.04.4) | nginx-extras (>= 1.10.0-0ubuntu0.16.04.4); however:
  Package nginx-core is not configured yet.
  Package nginx-full is not installed.
  Package nginx-light is not installed.
  Package nginx-extras is not installed.
 nginx depends on nginx-core (<< 1.10.0-0ubuntu0.16.04.4.1~) | nginx-full (<< 1.10.0-0ubuntu0.16.04.4.1~) | nginx-light (<< 1.10.0-0ubuntu0.16.04.4.1~) | nginx-extras (<< 1.10.0-0ubuntu0.16.04.4.1~); however:
  Package nginx-core is not configured yet.
  Package nginx-full is not installed.
  Package nginx-light is not installed.
  Package nginx-extras is not installed.

dpkg: error processing package nginx (--configure):
 dependency problems - leaving unconfigured
No apport report written because the error message indicates its a followup error from a previous failure.
                                                                                                          Processing triggers for systemd (229-4ubuntu16) ...
Processing triggers for ureadahead (0.100.0-19) ...
Processing triggers for ufw (0.35-0ubuntu2) ...
Errors were encountered while processing:
 nginx-core
 nginx
E: Sub-process /usr/bin/dpkg returned an error code (1)
5
Karl Jamoralin

既にポート80で何かが実行されているため、nginxが起動してそのポートを取得しようとすると失敗します。ポート80で実行されているものを確認して停止します。次のコマンドでポート80を使用しているものを確認できます。

Sudo netstat -lnp | grep 0.0.0.0:80

ポートを使用しているものを見つけたら、systemctl stopを実行してポートを停止し、nginxを再度起動してください。 nginxが正常に機能するためには、他のサービスを永続的に無効にする必要があることに注意してください。

8
ddulic

私がこの同じ状況に陥った方法は、VirtualBoxでの仮想マシンのインストール中にDebian 9でデフォルトオプションを選択することでした。同様のことがOPで発生した可能性があります。

(...)
Choose software to install
[ ] Desktop environment
[*] Web Server
(...)

これにより、Apacheがインストールされ、サービスがすぐに有効化/開始されます。ディストリビューションがsystemdを使用している場合は、そうであるかどうかを確認できます。

Sudo systemctl list-units | grep Apache

どれを示しています:

Apache2.service
      loaded active running   The Apache HTTP Server

Apacheサービスを停止できます。

Sudo systemctl stop Apache2.service

また、de serviceを無効にして、次回の再起動時に自動的に再起動しないようにします。

Sudo systemctl disable Apache2.service

その後、nginxを再起動できます:

Sudo systemctl restart nginx

Lynxなどのコマンドラインブラウザーで動作していることを確認できます。

lynx 127.0.0.1

                                    Apache2 Debian Default Page: It works (p1 of 4)
   Debian Logo Apache2 Debian Default Page
   It works!

   This is the default welcome page used to test the correct operation of the
   Apache2 server after installation on Debian systems. (...)

また、Apacheのウェルカムページがnginxによってまだロードされているのは奇妙でわかりにくいかもしれません。これは、Apacheがデフォルトでnginxが指すhtmlファイルを作成したためです:/var/www/html/index.html。私の場合、デフォルトのnginx htmlウェルカムファイルは/var/www/html/index.nginx-debian.htmlでした。 nginxのデフォルトの構成ファイルを変更することで、ロードするデフォルトページを変更できます(そして、適切な権限で保存します)。

Sudo nano /etc/nginx/sites-available/default

(...)
# Default server configuration
#
server {
      (...)
      # original index directive:
      # index index.html index.htm index.nginx-debian.html;
      # modified index directive:
      index index.htm index.nginx-debian.html;
      (...)
}

indexディレクティブの引数からindex.htmlを除外することにより、次の候補ファイルが検索されます。私の場合、index.htmは存在しないため、index.nginx-debian.htmlが使用されます。この変更はnginxがリロードされるまで有効にならないため、リロード信号を送信できます。

Sudo nginx -s reload

そして、デフォルトのnginxウェルカムページを確認できます:

lynx 127.0.0.1

                                                                 Welcome to nginx!
                                 Welcome to nginx!

   If you see this page, the nginx web server is successfully installed and
   working. Further configuration is required.
   (...)
2
arthropod

NGINXと他のサーバーアプリの両方が、デフォルトのポートとしてポート80を使用するようにバインドしているようです。

簡単な解決策は、NGINXポートを別のポートに変更することです。これは、/etc/nginx/sites-available/default(または任意の構成ファイル)を編集して別のポートにバインドすることで実行できます。

次のような行を探します:

Listen 80;

80を空きポートに変更します(例:851):

Listen 851;

NGINXを再起動すると、問題なく再起動します。

実際にNGINXをWebホストとして使用する場合は、他のWebサーバーの設定を変更する必要があることに注意してください。

2
Brian

エラーメッセージに基づく:

  Package nginx-full is not installed.
  Package nginx-light is not installed.
  Package nginx-extras is not installed.

Sudo apt-get install nginx-full nginx-light nginx-extrasを実行することをお勧めします

0
Fábio