web-dev-qa-db-ja.com

OS Xでnginxを再起動する方法

OS X 10.8でnginxを使用しています。新たにインストールされたnginxが、kill nginx_pid say kill 64116以外のnginxを再起動する方法を見つけることができません。 nginxを再起動するより良い方法があるかどうか疑問に思います。

GoogleとSOでいくつかのメソッドを見つけましたが、動作しませんでした:

nginx -s restart

Sudo fuser -k 80/tcp ; Sudo /etc/init.d/nginx restart

nginx -s restartのエラーメッセージは

nginx: [error] open() "/usr/local/var/run/nginx.pid" failed (2: No such file or directory)

時々このエラーメッセージも表示されます:

nginx: invalid option: "-s restart"
50
clwen

Nginx pidファイルの場所は何ですか?これは構成ファイルで指定され、デフォルトのパスは構成スクリプトでコンパイル時に指定されます。次のように検索できます。

find / -name nginx.pid 2>/dev/null(nginxの実行中に問題が発生する必要があります)

解決:

Sudo mkdir -p /usr/local/var/run/
ln -s /current/path/to/pid/file /usr/local/var/run/nginx.pid
17

Nginxを起動する前にSudo nginxを実行してみてください。

95

設定ファイルをリロードするには:

Sudo nginx -s reload

nginxを完全に再起動するには:

Sudo nginx -s quit
Sudo nginx

詳細

Nginxにはrestart信号はありません。ドキュメントから、マスタープロセスが受け入れる信号は次のとおりです。

SIGINT, SIGTERM  Shut down quickly.
SIGHUP           Reload configuration, start the new worker process with a new configuration, and gracefully shut down old worker processes.
SIGQUIT          Shut down gracefully.
SIGUSR1          Reopen log files.
SIGUSR2          Upgrade the nginx executable on the fly.
SIGWINCH         Shut down worker processes gracefully.

おそらくこれらのシグナルをプロセスIDに手動で送信できますが、nginxコマンドにはフラグnginx -s <signal>マスタープロセスにシグナルを送信します。オプションは次のとおりです。

stop    SIGTERM
quit    SIGQUIT
reopen  SIGUSR1
reload  SIGHUP

Pidを手動で変更する必要はありません。


編集:この情報の多くは、他の回答のコメントに既にあることに気付いた。とにかくこれを残して状況を要約します。

17
tobek

私はこのようにします:

最初に進捗を殺す

ps aux | grep nginx
kill -9 {pid}

次に、nginxを起動します

nginx

できます!

6
wangchi

将来のリソースとして、 http://wiki.nginx.org/CommandLine を参照できます

Nginxはおそらくルートとして実行されるので、それに影響を与えるために次のコマンドのバリアントを実行する必要があります。

Sudo nginx -s stop | reload | quit | reopen

通常、Nginxが必要とするようなApacheを再起動する理由はあまりありません。構成ファイルを変更した場合は、リロードオプションのみを使用できます。

2
anEffingChamp

これは単に、nginxが既に停止していることを意味する可能性があります-現時点では実行されていません。
まず、nginxが実行されているかどうかを確認し、次を実行します。

$ ps aux | grep nginx
1
ericn

これを試して:

Sudo nginx -s stop

続いて:

Sudo nginx

Nginxはその状態を追跡しているようで、2回停止すると文句を言います。しかし、上記は私のために働いた。

1

このディレクトリが存在するかどうかを確認します。

/usr/local/var/run

このエラーは、nginxが存在しないローカリゼーションでpidファイルを初期化しようとしたときに発生する可能性があります。

1
jkaluzka

私はあなたと同じエラーリンクを得ました、それを修正するために多くの方法を試しましたが、その後コマンドラインを実行するとうまくいきません:nginx -c /usr/local/etc/nginx/nginx.conf

ここから得た情報 https://blog.csdn.net/wn1245343496/article/details/77974756

1
css.cutter

ここにバグがあります。 Apacheの変更/再起動中および/またはnginx構成の変更中にnginxが実行されているかどうかによって、このファイル(本質的には単なるプロセスIDポインター)が破壊される可能性があります。

のような信号をnginxに送信しようとすると

nginx -s quit;
nginx -s stop;
nginx -s reload;

nginxはこのファイルを使用して、シグナルを送信する必要があるプロセスのIDを参照します。ファイルが存在しない場合、nginxのアクティブな実行中のプロセスとcliアプリの間のリンクは事実上壊れています。

実際、2つのnginxプロセスが同時に実行されている状態になったため、両方が終了しました。

これを回避するには、Activity Monitorを使用して既存のnginxプロセスを強制終了するか(nginxを実行し、cliアプリに新しいnginx.pidファイルを作成させます)、または本当にnginxを実行したままnginxを実行する必要がある場合- s reload-nginx.pidという名前の/ runパスにファイルを手動で作成し、現在実行中のnginxプロセス(Activity Monitorで取得)のPIDを挿入します。

1

カスタム設定ファイルをリロードするには

nginx -s reload -c /etc/nginx/conf.d/<config file>.conf
1
JRomio

停止またはリロードする1つの方法は、以下のコマンドを使用することです。

停止する場合:

Sudo /usr/local/nginx/sbin/nginx -s stop 

Nginxが実行されている場合にのみリロードを実行します。

Sudo /usr/local/nginx/sbin/nginx -s reload

上記のようにすることで、nginxを取得できなくなります:[error] open() "/usr/local/var/run/nginx.pid"この問題

0
santhosh