nginx平滑升级与添加模块

本文介绍了如何平滑升级nginx,包括查看当前版本、下载新版本、解压编译但不执行make install,而是将旧版nginx重命名为nginx.old,用新编译的nginx替换,确保不间断服务。此外,还讲述了如何添加未编译的模块,涉及查看已安装模块、下载源码、解压编译、make install和替换nginx二进制文件,确保新模块的动态加载。
摘要由CSDN通过智能技术生成

平滑升级

1.查看一下当前使用的版本

 /usr/local/nginx/sbin/nginx -V
nginx: nginx version: nginx/1.0.5
nginx: built by gcc 4.1.2 20080704 (Red Hat 4.1.2-50)
nginx: TLS SNI support disabled
nginx: configure arguments: --user=www --group=www --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module --with-http_flv_module --with-cc-opt=-O3 --with-cpu-opt=opteron --with-http_gzip_static_module

2.下载新版本:http://nginx.org/en/download.html

然后:解压 > 便以前的准备 > 编译

tar zxvf nginx-1.12.0.tar.gz
 cd nginx-1.12.0
./configure 
--user=www 
--group=www 
--prefix=/usr/local/nginx 
--with-http_stub_status_module 
--with-http_ssl_module 
--with-http_flv_module 
--with-cc-opt='-O3' 
--with-cpu-opt=opteron 
--with-http_gzip_static_module
 make
  1. 执行完后,这里不用在 make install 了,接下来重名/sbin/nginx为nginx.old
 mv /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx.old
  1. 复制编译后objs目录下的nginx文件到nginx的安装目录sbin/下
cp objs/nginx /usr/local/nginx/sbin/
  1. 测试一下新复制过来文件生效情况:
 /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
  1. 让nginx把nginx.pid文件修改成nginx.pid.oldbin,随即启动nginx,实现不间断服务运行
 kill -USR2 `cat /usr/local/nginx/nginx.pid`(发送平滑升级信号将旧的nginx.pid文件添加后缀nginx.pid.oldbin)
#kill  -WINCH(平缓停止worker process) `cat /usr/local/nginx/nginx.pid.oldbin
kill -QUIT `cat /usr/local/nginx/nginx.pid.oldbin`
  1. 升级完成了,最后在看一下升级后的版本
/usr/local/nginx/sbin/nginx -v
nginx: nginx version: nginx/1.12.0

添加未编译安装的模块

  1. 查看nginx版本号及已安装模块
[root@yh nginx]# nginx -V
nginx version: nginx/long       #隐藏版本号为1.2.9,通过nginx-1.2.9/src/core/nginx.h头文件隐藏。
built by gcc 4.8.5 20150623 (Red Hat 4.8.5-4) (GCC) 
TLS SNI support enabled
configure arguments: --prefix=/usr/local/app/nginx --user=nginx --group=nginx --with-http_sub_module --with-http_ssl_module --with-http_gzip_static_module --with-pcre=/usr/local/app/nginx/pcre-8.40 --with-zlib=/usr/local/app/nginx/zlib-1.2.11

2.下载对应版本的源码包

wget http://nginx.org/download/nginx-1.12.0.tar.gz

3.解压并重新编译

[root@yh nginx]# tar -zxf nginx-1.12.0.tar.gz -C /usr/local/app/nginx/
[root@yh nginx]# cd /usr/local/app/nginx/nginx-1.12.0/
[root@yh nginx-1.12.0]# ./configure --prefix=/usr/local/app/nginx --user=nginx --group=nginx --with-http_sub_module --with-http_ssl_module --with-http_gzip_static_module --with-pcre=/usr/local/app/nginx/pcre-8.40 --with-zlib=/usr/local/app/nginx/zlib-1.2.11 --with-http_stub_status_module
[root@yh nginx-1.12.0]# make

源码安装三部曲:./configure && make &&make install

./configure:用来检查当前的linux环境是否满足即将安装软件所需的依赖关系。
make:编译命令,可自动完成编译过程,且只对上次编译修改过的部分进行编译。从Makefile中读取指令执行
[root@yh nginx-1.12.0]# make
make -f objs/Makefile
make[1]: 进入目录“/usr/local/app/nginx/nginx-1.12.0”
make[1]: “objs/nginx”是最新的。
make[1]: 离开目录“/usr/local/app/nginx/nginx-1.12.0”
make -f objs/Makefile manpage
make[1]: 进入目录“/usr/local/app/nginx/nginx-1.12.0”
make[1]: 对“manpage”无需做任何事。
make[1]: 离开目录“/usr/local/app/nginx/nginx-1.12.0”

可以看出当没有修改时,是不进行重新编译的。

make install:安装,从Makefile中读取指令。

4.替换nginx二进制文件
通过编译之后,源码包里的objs目录里便有了新的nginx文件,替换原来的nginx二进制文件,重新加载配置文件即可完成平滑升级。

[root@yh nginx-1.12.0]# cp /usr/local/app/nginx/sbin/nginx /usr/local/app/nginx/sbin/nginx.bak 
[root@yh nginx-1.12.0]# cp objs/nginx /usr/local/app/nginx/sbin/nginx
[root@yh nginx-1.12.0]# ll /usr/local/sbin/nginx 
lrwxrwxrwx. 1 root root 31 6月  15 10:54 /usr/local/sbin/nginx -> /usr/local/app/nginx/sbin/nginx
[root@yh nginx-1.12.0]# nginx -t
nginx: the configuration file /usr/local/app/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/app/nginx/conf/nginx.conf test is successful
[root@yh nginx-1.12.0]# nginx -s reload
[root@yh nginx-1.12.0]# nginx -V
nginx version: nginx/long
built by gcc 4.8.5 20150623 (Red Hat 4.8.5-4) (GCC) 
TLS SNI support enabled
configure arguments: --prefix=/usr/local/app/nginx --user=nginx --group=nginx --with-http_sub_module --with-http_ssl_module --with-http_gzip_static_module --with-pcre=/usr/local/app/nginx/pcre-8.40 --with-zlib=/usr/local/app/nginx/zlib-1.2.11 --with-http_stub_status_module

可以看到,我们已经动态加载了–with-http_stub_status_module模块。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值