前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Nginx平滑升级

Nginx平滑升级

作者头像
Cyylog
发布2020-08-19 10:31:32
1.2K0
发布2020-08-19 10:31:32
举报
文章被收录于专栏:Cyylog技术
Nginx 平滑升级
1、查看现有的 nginx 编译参数
代码语言:javascript
复制
[root@web ~]#/usr/local/nginx/sbin/nginx -V

按照原来的编译参数安装 nginx 的方法进行安装,只需要到 make,千万不要 make install

2、编译新的 nginx 源码包

编译新Nginx源码,安装路径需与旧版一致 (详细过程可参见:Nginx编译安装与配置使用)

代码语言:javascript
复制
[root@web ~]#./configure --prefix=/usr/local/nginx-1.14.0 --user=www --group=www --with-http_ssl_module --with-openssl=/path/to/openssl_src
[root@web ~]#make
3、备份原 nginx 二进制文件

备份二进制文件和 nginx 的配置文件(期间nginx不会停止服务)

代码语言:javascript
复制
[root@web ~]#mv /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx_$(date +%F)

4、复制新的nginx二进制文件,进入新的nginx源码包

代码语言:javascript
复制
[root@web ~]#cp /usr/local/nginx-1.14.0/objs/nginx /usr/local/nginx/sbin/

5、测试新版本的nginx是否正常

代码语言:javascript
复制
[root@web ~]#/usr/local/nginx/sbin/nginx -t

6、给nginx发送平滑迁移信号(若不清楚pid路径,请查看nginx配置文件)

代码语言:javascript
复制
[root@web ~]#kill -USR2 cat /var/run/nginx.pid

7、查看nginx pid,会出现一个nginx.pid.oldbin

代码语言:javascript
复制
[root@web ~]#ll /var/run/nginx.pid*

8、从容关闭旧的Nginx进程

代码语言:javascript
复制
[root@web ~]#kill -WINCH cat /var/run/nginx.pid.oldbin

9、此时不重载配置启动旧的工作进程

代码语言:javascript
复制
[root@web ~]#kill -HUP cat /var/run/nginx.pid.oldbin

10、结束工作进程,完成此次升级

代码语言:javascript
复制
[root@web ~]#kill -QUIT cat /var/run/nginx.pid.oldbin

11、验证Nginx是否升级成功

代码语言:javascript
复制
[root@web ~]#usr/local/nginx/sbin/nginx -V
升级实战
1、安装配置1.6版本的 nginx
代码语言:javascript
复制
[root@web ~]# yum install -y gcc gcc-c++ pcre-devel openssl-devel zlib-devel
[root@web ~]# tar zxvf nginx-1.6.0.tar.gz -C /usr/src/
[root@web ~]# cd /usr/src/nginx-1.6.0/
[root@web nginx-1.6.0]# ./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_stub_status_module
[root@web nginx-1.6.0]# make 
[root@web nginx-1.6.0]# make install
[root@web nginx-1.6.0]# ln -s /usr/local/nginx/sbin/* /usr/sbin/
[root@web nginx-1.6.0]# useradd -M -s /sbin/nologin nginx 
[root@web nginx-1.6.0]# nginx 
[root@web nginx-1.6.0]# netstat -anput | grep nginx 
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 19008/nginx: master
2、查看 nginx 版本
代码语言:javascript
复制
[root@web nginx-1.6.0]# nginx -v
nginx version: nginx/1.6.0
3、查看 nginx 现有安装的模块
代码语言:javascript
复制
[root@web nginx-1.6.0]# nginx -V
nginx version: nginx/1.6.0
built by gcc 4.8.5 20150623 (Red Hat 4.8.5-11) (GCC) 
configure arguments: --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_stub_status_module
4、访问验证
代码语言:javascript
复制
[root@web nginx-1.6.0]# echo "nginx1.6.0" > /usr/local/nginx/html/index.html
[root@web nginx-1.6.0]# elinks 192.168.20.167
5、升级 nginx

将 nginx 版本进行升级 并在不影响业务的情况下添加 SSL 和 pcre 模块

代码语言:javascript
复制
[root@web ~]# tar zxvf nginx-1.11.2.tar.gz -C /usr/src/

[root@web ~]# cd /usr/src/nginx-1.11.2/
[root@web nginx-1.11.2]# ./configure --prefix=/usr/local/nginx --user=nginx --group=ngiinx --with-http_stub_status_module --with-http_ssl_module --with-pcre

[root@web nginx-1.11.2]# make

[root@web nginx-1.11.2]# cd
[root@web ~]# mv /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx_old 
[root@web ~]# cp /usr/src/nginx-1.11.2/objs/nginx /usr/local/nginx/sbin/

[root@web ~]# mv /usr/local/nginx/conf/nginx.conf /usr/local/nginx/conf/nginx.conf.old
[root@Centos ~]# cp /usr/src/nginx-1.11.2/conf/nginx.conf /usr/local/nginx/conf/nginx.conf

[root@web ~]# kill -USR2 `cat /usr/local/nginx/logs/nginx.pid`
[root@web ~]# ls /usr/local/nginx/logs/
access.log error.log nginx.pid

[root@web ~]# ps aux | grep nginx 
root 19008 0.0 0.0 24324 944 ? Ss 14:07 0:00 nginx: master process nginx
nginx 19009 0.0 0.1 26832 1744 ? S 14:07 0:00 nginx: worker process
root 53194 0.0 0.0 112660 976 pts/0 R+ 14:36 0:00 grep --color=auto ngin
6、验证 nginx 是否升级成功
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019-04-27,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Nginx 平滑升级
    • 1、查看现有的 nginx 编译参数
      • 2、编译新的 nginx 源码包
        • 3、备份原 nginx 二进制文件
        • 升级实战
          • 1、安装配置1.6版本的 nginx
            • 2、查看 nginx 版本
              • 3、查看 nginx 现有安装的模块
                • 4、访问验证
                  • 5、升级 nginx
                    • 6、验证 nginx 是否升级成功
                    领券
                    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档