Nginxの基本操作:終了
さて、起動ができたら次は終了です。
起動中のNginxの操作は、Nginxに対してシグナルを送信することで行います。
nginxコマンドで送信することのできるシグナルは以下です。
シグナル | 動作 |
---|---|
stop | 即時終了 |
quit | 安全終了 |
reopen | ログの再オープン |
reload | 定義ファイルの再読込 |
終了が「stop」と「quit」の二つありますね。
Nginx起動中に立ち上がっているプロセルにはMaster Processとそれに紐づく複数のWorker Processがあります。
Worker Processがクライアントからのリクエストを処理しています。
「quit」はこのWorker Processが完了したのを確認してからプロセスを終了します。
処理中のプロセスがあるのにそれを無視して即時シャットダウンするのが「stop」です。
ですので、通常は「quit」シグナルで終了してあげましょう。
# nginx -s quit
尚、Linuxのkillコマンドを使って、直接プロセスにシグナルを行うことも可能です。
# kill -s QUIT XXXXX
XXXXXにはプロセスID(PID)が入ります。
プロセスIDは「ps」コマンドで確認できます。
# ps aux | grep nginx root 21521 0.0 0.1 6236 656 ? Ss 15:16 0:00 nginx: master process /usr/sbin/nginx -c /etc/nginx/nginx.conf nginx 21522 0.0 0.2 6392 1148 ? S 15:16 0:00 nginx: worker process root 21587 0.0 0.1 5116 784 pts/2 S+ 16:19 0:00 grep nginx
この場合、Master Processの「21521」をXXXXXにセットしましょう。
または、「/var/run/nginx.pid」ファイルの中にもMaster ProcessのプロセスIDは記載されています。
# cat /var/run/nginx.pid 21521
この方法で確認してもよいでしょう。
Nginxの基本操作:その他
残りのシグナル、reopen、reloadについても確認しておきます。
「reopen」はログの再オープンです。
ログを再オープンする際に、所有者をWorkerProcessの実行ユーザに割り当てます。
「reload」は定義ファイルの再読込です。
定義ファイルを変更した際に、Nginxを再起動することなく変更を適用することができます。
逆に言うと、定義ファイルを変更した際には、Nginxの再起動もしくは定義ファイルの再読込が必要になりますので、
忘れないように注意しましょう。
今回のまとめ
今回はNginxの基本操作について説明しました。起動、終了だけでもいくつもパターンがあってややこしいですが、Linuxの知識も併せて深まる大事なポイントですので、様々な方法を使えるようにしておきましょう。次回はNginxの定義ファイルを見ていきます。