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

推薦する

背景とリンクとして画像を書き込む方法(背景画像+リンク)

写真を背景にしてリンクを記載します。たとえば、ウェブサイトのロゴ画像などです。例: ポテトのロゴ画像...

テキストまたはJSONを返すようにnginxを設定する方法

特定のインターフェースをリクエストするときに、指定されたテキスト文字列または JSON 文字列を返す...

Node.js での組み込みモジュールとカスタムモジュールの実装

1. コモンズCommonjsはNode.jsのカスタムモジュールですCommonjs 仕様は、Ja...

Linux でパスワードを入力せずに sudo コマンドを実行する方法

sudo コマンドを使用すると、信頼できるユーザーは別のユーザー (デフォルトでは root ユーザ...

Bootstrap 3.0 学習ノート CSS関連補足

この記事の主な内容は次のとおりです。 1. ブラウザのサポート2. 画像3. レスポンシブツール4....

MySQLテーブル構造を変更するコマンドを表示する

簡単な説明エディターはデータベースのエンコードが間違っているために問題に遭遇することが多く、これは頭...

MySQLクエリ条件のnot inとinの違いと理由

まずSQLを書く SELECT DISTINCT from_id タラから cod.from_id ...

MySQLデータベースに他のIPアドレスからアクセスできない問題の解決策

序文先ほどのプロジェクトを参考にすると、環境は整いました。プロジェクトの準備と検証の段階で、問題が発...

CentOS8.1 で Gitlab サーバーを構築するための詳細なチュートリアル

Gitlab と Github の違いについては、あまり説明する必要はありません。一言でまとめると、...

JavaScript でドラッグ スライダー パズルの検証機能を実装します (html5、canvas)

導入:スライダー ドラッグ検証は現在、多くの場所で使用されています。週末に 1 つ作成しようと思い、...

jQueryは何に使われるのですか?jQueryは実際にはjsフレームワークです

jQuery 入門jQuery ライブラリは、簡単なマークアップ行を使用して Web ページに追加で...

HTML でよく使用されるエスケープ文字の概要

HTML でよく使用されるエスケープ文字をまとめると次のようになります。 &nbsp; 改行...

MySQL データベースは XA 仕様をどのように実装しますか?

MySQL 一貫性ログMySQL データベースの電源が切れた場合、コミットされていないトランザクシ...

XHTMLタグは適切に使用する必要があります

<br />123WORDPRESS.COM の以前のチュートリアルでは、Web ページ...

Cronジョブを使用してCpanelでPHPを定期的に実行する方法

cpanel 管理バックエンドを開き、「詳細」オプションの下に「Clock Guardian Job...