まず、nginx でサポートされているいくつかのシグナルを紹介します。以下に、メイン プロセスが受信できるいくつかのシグナルを示します。
注: ワーカー プロセスもいくつかのシグナルを受信できますが、そのシグナル処理メカニズムはメイン プロセスとは多少異なり、メイン プロセスでサポートされるシグナルはワーカー プロセスではサポートされない場合があります。
正常な停止の動作は次のとおりです: (1) プロセスは新しいリクエストをリッスンせず、受け入れなくなります。(2) プロセスは処理中のリクエストの処理を続行しますが、処理完了後に破棄されます。
1. アップグレード
実行中の nginx インスタンスをアップグレードする場合、またはバージョンを再コンパイルしたために古いバージョンを置き換える場合は、安定化とアップグレードのために次の一連のプロセスに従うことを検討できます。安全に。もちろん、サービスを直接停止しても大きな影響はありませんが、nginx インスタンスの新しいバージョンを停止してから開始する方が便利で簡単です。
1. 古い nginx コマンドを新しいバージョンの nginx コマンド パスに置き換えます。
通常、コンパイルしてインストールされた nginx の場合は、ソフト リンクを使用する方が便利です。たとえば、古いバージョンのインストール パスが /usr/local/nginx-1.12.0 の場合は、ソフト リンク /usr/local/nginx を作成します。新しいバージョンがある場合は、/usr/local/nginx-1.12 になります。 .1 の場合、ソフト リンクを変更するだけで済みます。リンク /usr/local/nginx は /usr/local/nginx-1.12.1 を指します。このようにして、ソフト リンクが変更されると、/usr/local/nginx/sbin/nginx は新しい nginx プログラムを指すようになります。
2. USR2 シグナルを古い nginx インスタンスのメイン プロセスに送信します。
kill -USR2 `cat /var/run/nginx/nginx.pid`
このシグナルは、nginx の古いメイン プロセスをアップグレードし、新しい nginx プログラムを実行するように促します。たとえば、ステップ 1 では、古い nginx メイン プロセスは /usr/local/nginx/sbin/nginx ですが、/usr/local/nginx-1.12.0/sbin/nginx をポイントしています。シグナルを送信した後、/ はusr/local/nginx/sbin/nginx ですが、ソフトリンクターゲットが変更されているため、この時点で起動される nginx はすでに /usr/local/nginx-1.12.1/sbin/nginx プログラムになっています。
さらに、このシグナルを送信した後、pid ファイルが切り替わり、古い pid ファイルの名前が nginx.pid.oldbin に変更され、古い nginx メイン プロセスの pid が変更されます。新しい pid ファイルは nginx.pid で、新しく開始された nginx メイン プロセスの pid 値を記録します。
[root@xuexi ~]# ls /var/run/nginx* /var/run/nginx.pid /var/run/nginx.pid.oldbin
3.graceful 古いメインプロセス番号を停止します。 kill -QUIT `cat /var/run/nginx/nginx.pid.oldbin`
古いメイン プロセス番号に QUIT シグナルを送信します。これにより、メイン プロセスが正常にシャットダウンされます。やり方。これにより、古いメイン プロセスと古いワーカー プロセスは新しいリクエストを受け付けなくなりますが、処理中のリクエストの処理を完了した後、破棄されて終了します。
4. より信頼性の高い方法は、最初にワーカー プロセスを正常に停止し、新しいバージョンの nginx インスタンスが正常に動作する場合は短時間実行した後、古いメイン プロセスを正常に停止することです。
kill -WINCH `cat /var/run/nginx/nginx.pid.oldbin` # a period of time goes, graceful stop old master nginx kill -QUIT `cat /var/run/nginx/nginx.pid.oldbin`
WINCH シグナルを古いメイン プロセスに送信した後、古いワーカー プロセスは徐々に終了しますが、古いメイン プロセスは終了せずに残ります。
新しいバージョンの nginx インスタンスが満足できない場合は、古いメイン プロセス番号に HUP シグナルを直接送信して、古いメイン プロセスが構成ファイルを再読み取りしてフォークします。新しいワーカー プロセスは、新しいメイン プロセス番号を強制終了することで、古いバージョンの nginx インスタンスに復元できます (グレースフル ストップを使用できます)。
2. ダウングレード
上記のステップ 4 は、実際にはダウングレードする最も安全な方法です。つまり:
kill -HUP `cat /var/run/nginx/nginx.pid.oldbin` kill -QUIT `cat /var/run/nginx/nginx.pid`
ただし、古いメイン プロセス番号が強制終了され、現在 nginx インスタンスの新しいバージョンのみが実行されている場合は、同じアップグレード手順でそれをダウングレードするだけで済みます。つまり:
kill -USR2 `cat /var/run/nginx/nginx.pid` kill -QUIT `cat /var/run/nginx/nginx.pid.oldbin`
3. ワンクリック アップグレード スクリプト
以下はアップグレード スクリプトです。
関連する推奨事項: nginx チュートリアル
以上がnginx のバージョンをスムーズかつ安全にアップグレードする方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。