nginxの実際のケース - スムーズなアップグレードやバージョンのロールバック
1.スムーズなアップグレード
なぜそれをアップグレード滑らかでなければなりませんか?
私たちは、nginxの更新したいが、それはまた、更新に時間がかかる場合。スムーズなアップグレードは、それが顧客の使用には影響しないことを確認するために、アップグレードをオンラインで行うことができ、かつ、サーバ上のデータのアップグレード版はカバーしています。
STEP1必要nginxのインストールパッケージの2つの異なるバージョン:
这里我的是:nginx-1.14.2.tar.gz nginx-1.16.1.tar.gz
STEP2のnginxの下位バージョンをインストールします。
tar zxf nginx-1.14.2.tar.gz
yum install gcc openssl-devel pcre-devel -y
cd nginx-1.14.2
./configure --prefix=/usr/local/nginx
make && make install
STEP3オープンnginxの:
cd /usr/local/nginx/sbin/
./nginx
netstat -antlp | grep nginx #查看端口信息
/usr/local/nginx/sbin/nginx -v #查看版本信息
/usr/local/nginx/sbin/nginx -V #查看编译信息
STEP4は、バックアップスクリプトの前に開始します。
cp nginx nginx.old
別のインストールパッケージにSTEP5コンパイラのインストール:
tar zxf nginx-1.16.1.tar.gz
cd nginx-1.16.1
./configure --prefix=/usr/local/nginx #根据老版本的编译选项对新版本进行编译
make #make结束不要make install
古い起動スクリプトのSTEP6カバー:
cd /usr/local/nginx/sbin/
cp -f /root/nginx-1.16.1/objs/nginx . #覆盖老版本的启动脚本
STEP7は、nginxの、もはや新しい要求を受け入れ、オリジナルのマスター・プロセスに信号を送りません。
新しいnginxのワーカープログラムオープンなプロセス、および要求を受け始めました:
ps -ef | grep nginx | grep -v grep #查看进程
kill -USR2 4667 #4667为nginx老进程的pid
kill -WINCH 4667
注:この時点では、元のnginxのマスターが撃墜ませんでしたが、必要なときに、要求を受信していない、我々はそれを目を覚ますことができます
STEP8テスト:
/usr/local/nginx/sbin/nginx -v #升级成功
/usr/local/nginx/sbin/nginx -V
注意:
在编译新版本的时候configure make结束不要make install,这会覆盖原来的nginx
メイクの性質は、コマンドが対応するディレクトリにコンパイルされたファイルをコピーすることでインストールので、ここでのみコンパイル手順(メイク)は、(make installを)インストール手順を実行しないでください。私達はちょうどnginxのをアップグレードするために、古い設定ファイルの一部が上書きされないようにするために、ここでは省略し、インストールしてください、元の構成はそうファイルがで上書きされていないことを確認して、同じニーズをまま。不要制作软链接
この方法では前提があります:あなたはnginxのnginxの起動時に使用することは、その後のnginxを起動するコマンドラインから直接、そうでない場合は、絶対パスでnginxのサービスを開始するために入力する代わりに、「nginxの」道のバイナリファイルへの絶対パスですあなたは、更新プロセスnginxのに信号を送信するときに、nginxのプロセスが新しいバイナリを見つけられないことがあり
2.バージョンのロールバック
STEP1最初nginxのスクリプトを復元します:
cd /usr/local/nginx/sbin
cp -f nginx.old nginx
STEP2は、マスター・プロセスの古いバージョンを復活させる、それが要求を受信してみましょう:
ps -ef | grep nginx | grep -v grep
kill -HUP 4667
マスター・プロセスの新しいバージョンは、もはやワーカープロセスをクローズする要求を受信しているので、STEP3:
kill -USR2 7197
kill -WINCH 7197
注:これは、サブプロセスpidの新旧バージョンを削除しなければなりません
STEP4テスト:
ビューnginxのバージョンは、古いバージョンにフォールバックするには:
/usr/local/nginx/sbin/nginx -v
/usr/local/nginx/sbin/nginx -V