nginx平滑升级,添加模块

nginx_ngx_cache_purge第三方模块下载地址,用于清除缓存:
编译安装参数:
--user=www \
--group=www \
--add-module=/usr/local/src/ngx_cache_purge-2.0 \
--prefix=/usr/local/nginx \
--with-http_stub_status_module \
--with-http_ssl_module

注意:--add-module是添加的第三方缓存模块解压后的目录

1、升级nginx和添加第三方模块一样。都要查看原先的nginx版本及编译参数:
[root@localhost src]# /usr/local/nginx/sbin/nginx -V
nginx version: nginx/1.12.2
built by gcc 4.4.7 20120313 (Red Hat 4.4.7-18) (GCC)
built with OpenSSL 1.0.1e-fips 11 Feb 2013
TLS SNI support enabled
configure arguments: --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module --with-http_gzip_static_module --with-pcre=/usr/local/src/pcre-8.39

2、备份nginx

rsync -avzP /usr/local/nginx /usr/local/nginx.bak --exclude=/usr/local/nginx/logs/*
--exclude 用来指定不备份的文件或者目录
执行命令的时候会提示如下,表示创建了一个/usr/local/nginx.bak 目录用于备份
sending incremental file list
created directory /usr/local/nginx.bak

3、下载nginx的第三方缓存模块(由于目前nginx已经是最新版本,所以没升级)

如果是升级nginx版本。就下载nginx的新版本的包,然后解压。最好也是和之前一样放在/usr/local/src下面。然后进入解压目录,运行上面所查询到的编译参数。添加第三方模块只是在编译的时候加上红色部分而已。如下:
[root@localhost nginx-1.12.2]# ./configure --prefix=/usr/local/nginx \
--with-http_stub_status_module \
--with-http_ssl_module \
--with-http_gzip_static_module \
--with-pcre=/usr/local/src/pcre-8.39 \
--add-module=/usr/local/src/ngx_cache_purge-2.3

用--add-module 指定需要添加的第三方模块

4、编译完成之后,再进行make 切记,千万不能make install
[root@localhost nginx-1.12.2]# make

5、make 编译完,在objs目录下有一个nginx执行文件

5.1、首先备份老的nginx的可执行文件
cp -a /usr/local/nginx/sbin/nginx{,.bak}

5.2、把objs下新的nginx可执行文件拷贝到/usr/local/nginx/sbin下

\cp objs/nginx /usr/local/nginx/sbin/ -f

5、测试一下查看是否有问题

[root@localhost nginx-1.12.2]# /usr/local/nginx/sbin/nginx -t
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful

这样表示没问题

6、使用make upgrade 替换老的nginx进程 进行平滑升级
[root@localhost nginx-1.12.2]# make upgrade
/usr/local/nginx/sbin/nginx -t
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful
kill -USR2 `cat /usr/local/nginx/logs/nginx.pid`
sleep 1
test -f /usr/local/nginx/logs/nginx.pid.oldbin
kill -QUIT `cat /usr/local/nginx/logs/nginx.pid.oldbin`

7、再次执行:/usr/local/nginx/sbin/nginx -V 将会显示新的nginx的版本及编译的参数

[root@localhost nginx-1.12.2]# /usr/local/nginx/sbin/nginx -V
nginx version: nginx/1.12.2
built by gcc 4.4.7 20120313 (Red Hat 4.4.7-18) (GCC)
built with OpenSSL 1.0.1e-fips 11 Feb 2013
TLS SNI support enabled
configure arguments: --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module --with-http_gzip_static_module --with-pcre=/usr/local/src/pcre-8.39 --add-module=/usr/local/src/ngx_cache_purge-master

至此,nginx平滑升级完成

如果出现 nginx: worker process is shutting down
那么说明可能老的nginx正在处理一些进程还没有处理结束,等一段时间结束了就行了
线上平滑升级nginx所有步骤记录:
首先将三个所需的包放到/usr/local/src下

cd /usr/local/src
tar zxf nginx-1.12.2.tar.gz
tar zxf ngx_cache_purge-2.3.tar.gz
tar zxf pcre-8.39.tar.gz
rsync -avz /usr/local/nginx /usr/local/nginx.bak --exclude=/usr/local/nginx/logs/*
cd /usr/local/src/nginx-1.12.2
./configure --prefix=/usr/local/nginx \
--with-http_stub_status_module \
--with-http_ssl_module \
--with-http_gzip_static_module \
--with-pcre=/usr/local/src/pcre-8.39 \
--add-module=/usr/local/src/ngx_cache_purge-2.3
make
cp -a /usr/local/nginx/sbin/nginx{,.bak}
\cp objs/nginx /usr/local/nginx/sbin/ -f
/usr/local/nginx/sbin/nginx -t
make upgrade
/usr/local/nginx/sbin/nginx -V

 

 

版权声明:
作者:allenjol
链接:https://www.ayunw.cn/archives/465
来源:爱生活,爱运维
文章版权归作者所有,未经允许请勿转载。

THE END
分享
二维码
< <上一篇
下一篇>>