「nginx实践指南」命令备忘录

这是「nginx实践指南印刷top gear系列」的命令备忘录。
环境是CentOS7。

在systemctl中的操作

    • 開始

systemctl start nginx
nginxを開始します。

終了

systemctl stop nginx
nginxを停止します。

再起動

systemctl restart nginx
nginxを再起動します。一度nginxを停止させるため、リクエストを受け付けできない時間が一瞬発生します。

設定の再読み込み

systemctl reload nginx
設定を再度読み込みます。新たなworkerプロセスを新たな設定で起動してから、古い設定のworkerプロセスでリクエスト処理中でないものを順次終了させるため、リクエストを受け付けできない時間が発生しません。

バイナリ入れ替え

/sbin/service nginx upgrade
nginxを再起動します。これはバイナリ入れ替え時のためのコマンドで、新たなmaster/workerプロセスを、新たなバイナリを使って起動してから、古いmaster/workerプロセスでリクエスト処理中でないものを順次終了させるため、リクエストを受け付けできない時間は発生しません。
パッケージのアップデート時に自動的に実行されます。

状態表示

systemctl status nginx
nginxがコンソールに出力したログや起動状態を表示します。デフォルトでは長い行が省略されますが、-lオプションを付けると表示されます。

停止的动作种类

通常情况下,等待处理完成后再结束被称为“正常停机(graceful shutdown)”,等待处理完成后重新启动被称为“正常重启(graceful restart)”。相反地,不等待处理完成而直接结束被称为“快速关机(fast shutdown)”或“强制关机(force shutdown)”。

可以把「systemctl stop nginx」和「systemctl restart nginx」归类为快速关闭,因为它们会中断正在处理中的请求。
要进行优雅的关闭,需要使用后面提到的信号或nginx命令。

使用nginx命令进行操作

如果不指定任何选项,nginx的守护程序将会启动。

コマンド内容nginx -hnginxコマンドのオプションなどを説明したヘルプを表示するnginx -vバージョン情報を表示するnginx -t設定ファイルをテストし、エラーの内容を表示するnginx -T設定ファイルをテストし、設定ファイルの内容を表示する。includeされたファイルは展開され、1本の設定ファイルとして表示されるnginx -Vバージョン情報、コンパイラのバージョンやコンパイルフラグを表示する。コンパイルフラグを見ることで、組み込まれているモジュールも確認できるnginx -s stop実行中のnginxデーモンを停止する。fast shutdownnginx -s quit実行中のnginxデーモンを停止する。graceful shutdownnginx -s reopen実行中のnginxデーモンにログファイルを開き直させるnginx -s reload実行中のnginxデーモンに設定ファイルを再読み込みさせる

通过信号发送进行操作

通过systemctl和nginx命令对nginx守护程序进行控制实际上是通过发送信号来实现的。
nginx守护程序分为主进程和工作进程,每个进程可以处理的信号有所不同。

在主进程中处理信号

シグナル内容TERM/INTmasterおよぴworkerを終了する。fast shutdownQUITmasterおよびworkerを終了する。graceful shutdownHUP設定ファイルの再読み込み。新たなworkerを新たな設定で起動してから、古いworkerをgraceful shutdownさせる。タイムゾーンの変更にも対応しているUSR1ログファイルを開き直すUSR2新たな実行ファイルで再起動するWINCHworkerをgraceful shutdownさせる

在工作进程中处理信号

シグナル内容TERM/INT終了する。fast shutdown。workerに直接送られた場合は、masterが新たなworkerを立ち上げるQUIT終了する。graceful shutdownUSR1ログファイルを開き直すWINCH異常終了。デバッグのための機能

例如,systemctl stop nginx 会向主进程发送QUIT和TERM信号。
而nginx -s reopen 则会向主进程发送USR1信号。
然而,信号和处理过程并不一定直观地对应,所以可以说systemctl和nginx命令更直观易操作。

在信号处理中的示例方式。

# ps aux | grep nginx
root      3575  0.0  0.0  46364   964 ?        Ss   08:29   0:00 nginx: master process /usr/sbin/nginx -c /etc/nginx/nginx.conf
nginx     3576  0.0  0.1  46764  1924 ?        S    08:29   0:00 nginx: worker process
root      3584  0.0  0.0 112660   972 pts/1    R+   08:55   0:00 grep --color=auto nginx`
# kill -QUIT 3575
# ps aux | grep nginx
root      3589  0.0  0.0 112660   976 pts/1    S+   08:56   0:00 grep --color=auto nginx
bannerAds