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() 関数の詳細な使用方法

推薦する

Vue3の組み込みコンポーネントであるTeleportの使い方を詳しく説明します

目次1. テレポートの使用2. モーダルダイアログコンポーネントを完成させる3. コンポーネントのレ...

テーブルを開く際のMySQLスレッドの問題の解決方法

問題の説明最近、MySQL5.6.21サーバーがありました。アプリケーションがリリースされた後、同時...

Webリクエストと処理のTomcatソースコード分析

目次序文1. エンドポイント2. 接続ハンドラ3. コヨーテ4. コンテナ責任チェーンパターン序文T...

vue backtop コンポーネントを実装するための完全なコード

効果: コード: <テンプレート> <div class="back-t...

VueはWebSocketを使用してチャット機能をシミュレートします

この効果は、2つのブラウザが互いにシミュレートしていることを示しています 1. シミュレートされたノ...

Linux での MySQL データベースのアンインストール

Linux で MySQL データベースをアンインストールするにはどうすればいいですか? 以下では、...

HTMLポップアップ透明レイヤーインスタンスのサイズを設定でき、比例することができます

コードをコピーコードは次のとおりです。 <!DOCTYPE html PUBLIC "...

Linux 上で Python3.6 をコンパイルしてインストールするための詳細なチュートリアル

1. まず、公式ウェブサイト https://www.python.org/downloads/so...

jQueryはシンプルなコメントエリアを実装します

この記事では、参考までに、簡単なコメントエリアを実装するためのjQueryの具体的なコードを紹介しま...

ポートマッピング後に Docker コンテナが突然接続に失敗する問題のトラブルシューティング プロセス

1. 背景通常、外部サービスを提供する必要がある Docker コンテナの場合、起動時に -p コマ...

Docker デプロイメント RabbitMQ コンテナ実装プロセス分析

1. イメージをプルするまず、次のコマンドを実行して、イメージをローカル コンピューターにダウンロー...

Linux whatisコマンドの使い方

01. コマンドの概要whatis コマンドは、システム コマンドの簡単な説明を含むいくつかの特別な...

VMware15 の CentOS7 インストールの詳細なプロセスとよくある問題 (画像とテキスト)

1. インストールパッケージの準備VMware-player-15.0.4-12990004、非商...