nginx版本的平滑升级(无坑)

好文分享~

查看当前Nginx版本信息

[root@web ~]# /usr/local/nginx/sbin/nginx -V
nginx version: nginx/1.10.2
built by gcc 4.8.5 20150623 (Red Hat 4.8.5-28) (GCC) 
built with OpenSSL 1.1.0e  16 Feb 2017
TLS SNI support enabled
configure arguments: --prefix=/usr/local/nginx --user=nginx --group=nginx --with-pcre --with-openssl=/tmp/openssl-1.1.0e --with-http_ssl_module --with-http_v2_module --with-http_realip_module --with-http_addition_module --with-http_sub_module --with-http_dav_module --with-http_flv_module --with-http_mp4_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_random_index_module --with-http_secure_link_module --with-http_stub_status_module --with-http_auth_request_module --with-http_image_filter_module --with-mail --with-threads --with-mail_ssl_module --with-stream_ssl_module
下载nginx-1.16.1版本到/usr/local/下,解压并进入解压后的目录

[root@nginx ~]# cd    /usr/local/
[root@nginx nginx-1.16.1]# wget http://nginx.org/download/nginx-1.16.1.tar.gz
[root@nginx nginx-1.16.1]# wget https://www.openssl.org/source/openssl-1.1.0e.tar.gz
[root@nginx nginx-1.16.1]# tar xf openssl-1.1.0e.tar.gz
[root@nginx nginx-1.16.1]# tar xf nginx-1.16.1.tar.gz
[root@nginx nginx-1.16.1]# cd nginx-1.16.1
查看nginx版本的时候,configure后面有一大串模块,这也是你第一次安装nginx时所指定的模块,升级的时候也要同时指定,也可以添加其他模块

[root@nginx nginx-1.16.1]# ./configure \(注意 \ 是向下连接符的意思,不要在这里就进行两次回车,继续写你需要的相关编译参数,小坑这里)
  --prefix=/usr/local/nginx \
  --user=nginx \
  --group=nginx \
  --with-pcre \
  --with-openssl=/tmp/openssl-1.1.0e \
  --with-http_ssl_module \
  --with-http_v2_module \
  --with-http_realip_module \
  --with-http_addition_module \
  --with-http_sub_module \
  --with-http_dav_module \
  --with-http_flv_module \
  --with-http_mp4_module \
  --with-http_gunzip_module \
  --with-http_gzip_static_module \
  --with-http_random_index_module \
  --with-http_secure_link_module \
  --with-http_stub_status_module \
  --with-http_auth_request_module \
  --with-http_image_filter_module \
  --with-mail \
  --with-threads \
  --with-mail_ssl_module \
  --with-stream_ssl_module \
 && make 

make完以后,不需要执行make install,否则会覆盖安装,nginx服务会出现各种问题

不中断nginx web服务器的正常运行称之为平滑升级,先重命名之前的nginx二进制文件

[root@nginx nginx-1.16.1]# mv /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx.bak
拷贝刚编译新生产的Nginx二进制文件到/usr/local/nginx/sbin/目录

[root@nginx nginx-1.16.1]# cp /usr/local/nginx-1.16.1/objs/nginx /usr/local/nginx/sbin/
开始执行升级命令

[root@web nginx-1.16.1]# 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`
 

查看nginx版本信息

[root@web nginx-1.16.1]# /usr/local/nginx/sbin/nginx -V
nginx version: nginx/1.16.1]
built by gcc 4.8.5 20150623 (Red Hat 4.8.5-28) (GCC) 
built with OpenSSL 1.1.0e  16 Feb 2017
TLS SNI support enabled
configure arguments: --prefix=/usr/local/nginx --user=nginx --group=nginx --with-pcre --with-openssl=/tmp/openssl-1.1.0e --with-http_ssl_module --with-http_v2_module --with-http_realip_module --with-http_addition_module --with-http_sub_module --with-http_dav_module --with-http_flv_module --with-http_mp4_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_random_index_module --with-http_secure_link_module --with-http_stub_status_module --with-http_auth_request_module --with-http_image_filter_module --with-mail --with-threads --with-mail_ssl_module --with-stream_ssl_module
已经成功升级到1.16.1
————————————————

原文链接:https://blog.youkuaiyun.com/tonglei111/article/details/103261154

### Nginx 1.27 版本平滑升级方法 对于Nginx 1.27版本而言,实现平滑升级的关键在于确保服务不间断的同时完成新旧版本之间的切换。具体操作涉及编译安装新的Nginx版本并调整现有配置以兼容新版特性。 #### 编译安装新版本 首先获取最新版源码包: ```bash wget -c http://nginx.org/download/nginx-1.27.0.tar.gz ``` 解压后按照官方文档说明进行编译安装[^1]。需要注意的是,在此过程中应保留原有配置文件路径不变,以便后续迁移设置更加简便。 #### 修改配置文件 找到当前使用的`nginx.conf`位置,并对其进行适当修改适应新版本需求: ```bash vi /usr/local/nginx-1.27.0/conf/nginx.conf ``` 特别注意取消某些特定指令前后的注释标记,比如用户权限设定部分: ```vim user nobody; ``` 这一步骤有助于确保所有工作进程能够正常启动运行[^3]。 #### 创建可执行文件快捷方式 为了简化命令调用流程,建议建立指向新安装目录下的Nginx二进制程序的符号链接: ```bash ln -s /usr/local/nginx/sbin/nginx /usr/bin/nginx ``` 此举可以避免因路径问题引发的各种错误提示信息[^4]。 #### 执行平滑重启过程 当一切准备就绪之后,可以通过发送信号给主控进程来触发无中断的服务更新动作。这里推荐采用SIGUSR2信号来进行热部署操作——它允许在不停止对外提供访问的前提下加载最新的二进制镜像以及应用层面上所做的任何改动。 ```bash kill -USR2 `cat /usr/local/nginx/logs/nginx.pid` ``` 此时系统内部将会逐步替换掉老的工作线程实例而不会影响到正在进行中的请求处理任务。待确认新版本已经稳定接管流量之后再手动终止遗留下来的旧版组件即可[^5]。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值