Nginx バージョンのスムーズなアップグレードソリューションの詳細説明

Nginx バージョンのスムーズなアップグレードソリューションの詳細説明

背景:

負荷分散テストサーバーの nginx バージョンが低すぎてセキュリティ上の脆弱性があるため、関連する脆弱性修復情報を照会した後、脆弱性を修復するために nginx バージョンをアップグレードする必要があります。

Nginx スムーズ アップグレード ソリューション

1. このケースで使用したバージョンの紹介

古いバージョン nginx-1.12.2.tar.gz

新しいバージョン nginx-1.20.1.tar.gz

2. 現在実行中のバージョンはnginx-1.12.2です


ポート 8080 を設定し、ホームページの index.html を変更します。スムーズなアップグレード後も引き続きアクセスできます。

3. 新しいバージョンのnginx-1.20.1.tar.gzを解凍し、コンパイルして古いバージョンのnginx-1.12.2のディレクトリにインストールし、元のnginx.conf設定ファイルを実行して、次のように実行します。

./configure --prefix=/usr/local/nginx-1.12.2 --conf-path=/usr/local/nginx-1.12.2/nginx.conf --pid-path=/usr/local/nginx-1.12.2/nginx.pid --user=ngadm --group=ngadm --with-http_stub_status_module --without-http_rewrite_module 

作成 && インストール

4. 完了すると、バージョン 1.20.1 は元の sbin ディレクトリに新しい nginx バイナリ ファイルを自動的に生成し、古い nginx は自動的に nginx.old に置き換えられます。

5. スムーズなアップグレード

Nginx はプロセスに対して非常に強力な制御機能を備えており、シグナル命令を通じてプロセスを制御できます。よく使用される信号は次のとおりです。

  • -QUIT は、テーブルが現在の要求を処理した後、プロセスを閉じます。
  • -HUP は構成を再読み込みする、つまり元のプロセスを閉じて新しい作業プロセスを開始することを意味します。この操作によってユーザーのアクセス要求が中断されることはないため、このシグナルを通じて Nginx をスムーズに再起動できます。
  • -USR2、実行可能プログラムをスムーズにアップグレードするために使用されます。
  • -WINCH、ワーカー プロセスを正常にシャットダウンします。

nginx プロセス制御信号に従って、次のように実行します。

kill -USR2 38323 (古いプロセスのPIDは38323です)
ps -ef |grep nginx 

新しいマスター プロセスに切り替えて、古いワーカー プロセスを閉じます。古いマスター プロセスはまだ存在することに注意してください。次のように実行します。

kill –WINCH 38323 (古いプロセスのPIDは38323です)
ps -ef |grep nginx 

現在のバージョンを確認する

nginx を再起動する

アップグレードは正常に完了しました。

注意: この時点で、新しいバージョンの nginx のマスター PID は 41063 です。同時に、古いバージョンのマスター プロセス (古いプロセス PID は 38323) も存在します。ロールバックする必要がない場合は、次のようにして古いプロセスの終了操作を実行できます。

終了 –QUIT 38323

フォールバック手順

ロールバック操作には 2 種類あります。

1. 事前に古いバージョンの nginx をバックアップします。問題がある場合は、古いバージョンを /usr/local ディレクトリにコピーし、古いバージョンの nginx を再起動します。次のように実行します。

nginx をキルする
nginx-1.12.2 をコピーします。
/usr/local/nginx-1.12.2/sbin/nginx –c /usr/local/nginx-1.12.2/nginx.conf

nginx のステータスを確認する ps –ef |grep nginx

2. 新しいバージョンの nginx のマスター プロセスと古いバージョンのマスター プロセスが同時に存在する場合は、以下を実行します。

マスタープロセスの古いバージョンに戻す

kill -HUP 古いマスターPID 

新しいバージョンの nginx のマスター プロセスを閉じ、元の sbin ディレクトリにある nginx.old (古いバージョンの nginx バイナリ ファイル) を nginx に戻して、nginx を管理します。

kill -WINCH 新しいマスターPID
kill -QUIT 新しいマスターPID
cp /usr/local/nginx-1.12.2/sbin/nginx.old /usr/local/nginx-1.12.2/sbin/nginx 

nginxのバージョンが元のバージョンに戻ったことを再度確認します

nginx を再起動する

要約する

Nginx バージョンのスムーズなアップグレードソリューションに関するこの記事はこれで終わりです。Nginx バージョンのスムーズなアップグレードに関する関連コンテンツの詳細については、123WORDPRESS.COM の以前の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • nginx をアップグレードして HTTP2.0 をサポートする方法の例
  • 1 分で Nginx のバージョンをスムーズにアップグレードおよびロールバックする方法
  • nginx をアップグレードして http2 をサポートする方法
  • Nginx のパフォーマンスを向上させるための提案
  • Nginx サービスのインストールとソフトウェアのアップグレード

<<:  メタタグの詳しい説明(メタタグの役割)

>>:  MYSQL row_number() および over() 関数の詳細な使用方法

推薦する

docker compose の使い方の詳しい説明

目次Docker Compose の使用シナリオ基本的なデモ基本的な操作とメンテナンスdocker-...

XHTML+CSS Web ページ作成における美しいスタイルシートの適用

これはかなり前に書かれた記事です。今となっては、その中の考え方は学ぶ価値があるように思えます。jb5...

Vueはカードフリップ効果を実現します

この記事では、カードフリップ効果を実現するためのVueの具体的なコードを例として紹介します。具体的な...

Vueは画像のドラッグアンドドロップ機能を実装します

この記事の例では、画像のドラッグアンドドロップ機能を実現するためのVueの具体的なコードを参考までに...

MySQL ストアド プロシージャの作成と呼び出しの詳細な説明

目次序文ストアドプロシージャ: 1. ストアドプロシージャの作成と呼び出し1. ストアドプロシージャ...

カルーセル効果を作成するためのjs

カルーセルはフロントエンド開発において比較的重要なポイントだと思います。ネイティブjsの知識ポイント...

MySQL 8.0.24 のインストールと設定方法のグラフィックチュートリアル

この記事では、MySQL 8.0.24のインストールチュートリアルを参考までに紹介します。具体的な内...

MySQLは数百万のシミュレーションデータ操作コードを自動的に挿入します

私はデータベースツールとして Navicat を使用しています。他のものも同様です。 1. Navi...

MYSQL row_number() および over() 関数の詳細な使用方法

構文フォーマット: row_number() over(partition by grouping ...

CSS フィルターを使用してマウスオーバー効果を記述する例

CSSフィルターを使用してマウスオーバー効果を記述する <div class="fi...

WindowsX Hyper-V ベースの CentOS システムをインストールする

現在、Linux を使用するほとんどの人は、クラウド サーバーを使用するか、Windows 上に仮想...

MySQLクエリ最適化分析チュートリアルをステップバイステップで教えます

序文MySQL は、強力なクエリ機能、高いデータ一貫性、高いデータ セキュリティ、およびセカンダリ ...

mysql5.6.8 ソースコードのインストールプロセス

カーネル: [root@opop ~]# cat /etc/centos-release CentO...

vue 動的コンポーネント

目次1. コンポーネント2. キープアライブ2.1 問題点2.2 キープアライブを使って解決する2....

MySQL ロック関連知識のまとめ

MySQL のロックロックは、並行環境におけるリソースの競合を解決する手段です。その中でも、楽観的並...