Nginx1.0.11がインストールされたUbuntu11.04i386サーバーがあります。また、私は this init.d script を使用しています。これは、いくつかの異なる場所で見つけた唯一のスクリプトです。サーバーは正常に起動しますが、停止/リセットすると表示されます
* Stopping Nginx Server... [fail]
もちろん、デーモンは停止せず、再起動時に構成が再ロードされません。
どうすればこれを修復できますか?
プロセスを強制終了できない可能性があります。
/etc/init.d/(または/etc/rc.d/)にあるnginx sysvinitスクリプトを開き、nginx.pidがどこにあると思われるかを見つけます。 「/var/run/nginx.pid」のようになります。
Pidファイルがない場合は、nginx.confを開いてpid設定を探します。不一致の場合-conf値を、スクリプトが本来あるべきと考える場所に設定します。
# pid of nginx process
pid /var/run/nginx.pid;
Sudo service nginx restart
は次のようなものを提供します:
Stopping nginx: [FAILED]
Starting nginx: nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
nginx: [emerg] still could not bind()
次に、ポートによってプロセスを手動で強制終了します。
Sudo fuser -k 80/tcp
(または使用しているポートを使用)
または、IDでプロセスを強制終了します。
ps -ef |grep nginx
kill <pid>
このコマンドを試してください:
Sudo fuser -k 80/tcp
私も同様の問題に直面していました。
通常、私はApache/apache2を使用します。
以下はあなたを助けるかもしれません:
Sudo nginx -s stop | ps -ef | grep nginx | awk {'print $2'} | xargs Sudo kill -9 | Sudo service Apache2 start
ドキュメントについては、これを参照してください Github Gist
これは、Ubuntu 11.04を含む多くのDebianベースのディストリビューションで動作する(古い 公式のinitスクリプト に基づいて)変更したnginxinitスクリプトです。
https://github.com/hulihanapplications/nginx-init-debian
これは私のubuntuサーバーでかなりうまく機能します。お役に立てれば。
nginx.conf
で定義されたファイルにpidが書き込まれます。service nginx stop
を実行すると、PIDが/usr/lib/systemd/system/nginx.service
に従って定義されているプロセスが停止します(パスが異なる場合があります)基本的に、ロケーションAでPIDを書き込み、ロケーションBから読み取ろうとしています。この不整合が、この明らかに一般的な問題の根本原因のようです。
読み取り位置と書き込み位置の両方が同じであることを確認する必要があります。
方法?:nginx.conf
とnginx.service
で定義されているpidファイルは同じである必要があります。
lsof -i | grep nginx
これはあなたにpidを与えるでしょう。私の場合、2つありました。
kill -9 pid1
kill -9 pid2
(必須ではない場合があります)これが私が変更したnginxinitスクリプトです(公式のinitスクリプトに基づいています)、スクリプトの変数を作成します
lockfile=$pidfile
と変数
pidfile="/var/run/nginx.pid"
次に、構成ファイルを変更しました(nginx.conf
)、変数を作成します
pid="/var/run/nginx.pid"
あまりにも。
最後に、すべてのnginxコマンドを正常に使用できます。