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)
既にポート80で何かが実行されているため、nginxが起動してそのポートを取得しようとすると失敗します。ポート80で実行されているものを確認して停止します。次のコマンドでポート80を使用しているものを確認できます。
Sudo netstat -lnp | grep 0.0.0.0:80
ポートを使用しているものを見つけたら、systemctl stop
を実行してポートを停止し、nginxを再度起動してください。 nginxが正常に機能するためには、他のサービスを永続的に無効にする必要があることに注意してください。
私がこの同じ状況に陥った方法は、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.
(...)
NGINXと他のサーバーアプリの両方が、デフォルトのポートとしてポート80を使用するようにバインドしているようです。
簡単な解決策は、NGINXポートを別のポートに変更することです。これは、/etc/nginx/sites-available/default
(または任意の構成ファイル)を編集して別のポートにバインドすることで実行できます。
次のような行を探します:
Listen 80;
80を空きポートに変更します(例:851):
Listen 851;
NGINXを再起動すると、問題なく再起動します。
実際にNGINXをWebホストとして使用する場合は、他のWebサーバーの設定を変更する必要があることに注意してください。
エラーメッセージに基づく:
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
を実行することをお勧めします