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

推薦する

GZIP 圧縮 Tomcat と Web パフォーマンスの改善プロセス図

1. はじめに最近、あるプロジェクトに取り組んでいたのですが、サーバーからクライアントに返される J...

Nginx/Httpd リバース プロキシ Tomcat 設定チュートリアル

以前のブログでは、Tomcatのサーバーの各コンポーネントの使用について学びました。 Tomcatは...

docker の run/cmd/entrypoint の違いの詳細な説明

Dockerfile では、run、cmd、entrypoint はすべてコマンドを実行するために使...

HTML テーブル データを Json 形式に変換するサンプル コード

<table>テーブルデータをJSON形式に変換するJavaScript関数は次のとおり...

Nginx+Tomcat 負荷分散クラスタの実装例

目次導入1. 事例の概要2. 環境の展開3. Nginxホストのインストール4. Tomcatのイン...

知らないかもしれない奇妙で興味深いDockerコマンド

はじめに使えるかもしれないが、あまり使われていない、シンプルで実用的なDockerコマンドをいくつか...

Linux システムに docker をインストールし、ssh 経由で docker コンテナにログインする方法

注: 私はCentosを使ってdockerをインストールしていますステップ1: Dockerをインス...

Mysql通信プロトコルの詳細な説明

1.Mysql接続方法MySQL 通信プロトコルを理解するには、まず MySQL サーバーへの接続に...

Windows 7 で Python 3.4 を使って MySQL データベースを使用する

Python 3.4でMySQLデータベースを使用する詳細なプロセスは次のとおりです。 Window...

Linux でユーザーを完全に削除する 2 つの方法

Linux 操作実験環境: Centos7 仮想マシンまず、共通ユーザーgubeiqingを作成しま...

MySQL XA で分散トランザクションを実装する方法

目次序文XA プロトコルMySQL XA で分散トランザクションを実装する方法序文MySQL が単一...

mysqlのkey_lenの計算方法についての簡単な説明

MySQL の explain コマンドは SQL のパフォーマンスを分析できます。その 1 つが ...

JS ES6 変数分割代入の詳細な説明

目次1. 脱構築とは何か? 2. 配列の分割3. 配列モードと代入モードの統一4. デフォルト値の構...

Typescriptの基本構文13個を共有する

目次1. Tsとは何か2. 基本的な文法1. プリミティブデータ型を宣言する2. オブジェクト型を宣...

Linux でファイアウォールがオフになっているかどうかを確認する方法

1. サービス方法ファイアウォールのステータスを確認します。 [root@centos6 ~]# サ...