ホームページ >運用・保守 >Nginx >nginx のバージョンをスムーズかつ安全にアップグレードする方法

nginx のバージョンをスムーズかつ安全にアップグレードする方法

王林
王林転載
2021-02-03 10:52:113259ブラウズ

nginx のバージョンをスムーズかつ安全にアップグレードする方法

まず、nginx でサポートされているいくつかのシグナルを紹介します。以下に、メイン プロセスが受信できるいくつかのシグナルを示します。

注: ワーカー プロセスもいくつかのシグナルを受信できますが、そのシグナル処理メカニズムはメイン プロセスとは多少異なり、メイン プロセスでサポートされるシグナルはワーカー プロセスではサポートされない場合があります。

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 プログラムになっています。

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 のバージョンをスムーズかつ安全にアップグレードする方法

新しいバージョンの 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 チュートリアル

以上がnginx のバージョンをスムーズかつ安全にアップグレードする方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はcnblogs.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。