nginxをロードしたままアップグレードする

cloudropさんの記事を参考にさせていただきました。

今後の私的備忘録の記事です。

サイトのリクエストを止めることなくアップグレードができる。モジュールの追加ができます。

※nginx -V でバージョンの確認と configure arguments: 〜以下 設定ファイルのディレクトリ等 確認する。

$ nginx -V
nginx version: nginx/1.8.1
configure arguments:  --with-openssl=/usr/share/nginx/openssl-1.0.2f --add-module=/usr/share/nginx/ngx_cache_purge-2.3

※–with-openssl –add-module が最新バージョンのnginxに対応したバージョンがリリースされていないか確認する。

$ cd /usr/share/nginx/
※user権限によっては root権限(sudo)を付けるかrootになる。
$ wget https://www.openssl.org/source/openssl-1.0.2f.tar.gz
$ tar -zxvf openssl-1.0.2f.tar.gz
$ wget http://labs.frickle.com/files/ngx_cache_purge-2.3.tar.gz
$ tar -zvf ngx_cache_purge-2.3.tar.gz

※最新バージョンのnginxとそれに対応したモジュールを設定してmakeする。

$ wget http://nginx.org/download/nginx-1.9.10.tar.gz
$ tar -zxvf nginx-1.9.10.tar.gz
$ cd nginx-1.9.10
※旧バージョンの nginx -V で確認した設定ファイルをコピペする。(ディレクトリ構造に気をつける)
$ ./configure --with-openssl=/usr/share/nginx/openssl-1.0.2f --add-module=/usr/share/nginx/ngx_cache_purge-2.3
$ make

※成功すると./objs 以下に新しいバイナリが出来るので確認。

$ ./objs/nginx -V
nginx version: nginx/1.9.10
built by gcc 4.8.5 20150623 (Red Hat 4.8.5-4) (GCC) 
built with OpenSSL 1.0.2f  28 Jan 2016
TLS SNI support enabled
configure arguments:

※設定ファイルにのディレクトリ構造 文法に問題がないか確認する

$ ./objs/nginx -t -c /etc/nginx/nginx.conf
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

※アップグレイド バイナリをコピー。

$ sudo make install

※プロセスを確認する。

$ ps aux |grep nginx
root      1058  0.0  0.0  56584  1632 ?        Ss   16:59   0:00 nginx: master process aaa/bbb/nginx -c ccc/ddd/nginx.conf
nginx     1067  0.0  0.0  59748  3684 ?        S    16:59   0:06 nginx: worker process
nginx     1068  0.0  0.0  59536  3408 ?        S    16:59   0:04 nginx: worker process
nginx     1069  0.0  0.0  58828  2016 ?        S    16:59   0:00 nginx: cache manager process

nginx.confにpidの設定があるので参照する。

$ cat /var/run/nginx.pid;
1058

pidは1058です。

※USR2シグナルで新しいバイナリの実行。

$ sudo kill -USR2 1058
$ ps aux |grep nginx

新旧バージョンプロセスが共存状態になる。

※WINCHシグナルで古いバージョンのワーカーを止める。

$ sudo kill -WINCH 1058
$ ps aux |grep nginx

※QUITシグナルで古いバージョンのマスタープロセスを止める。

$ sudo kill -QUIT 1058
$ ps aux |grep nginx

※phpバージョンの確認
サイトにphpinfo.phpをアップロードして確認する。もしくは、cmsサイトの管理メニューで確認する。

$ cd /var/www/html/
$ vim phpinfo.php

※以上で、nginxのバージョンアップ モジュールの追加がスムーズにできました。設定ファイルのディレクトリ構造を間違えないようにする。新旧設定ファイルが問題なく通るように気をつけるようにする事が注意点です。

シェアする

  • このエントリーをはてなブックマークに追加

フォローする