Nginx平滑升级
时间:2022-07-23
本文章向大家介绍Nginx平滑升级,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
Nginx 平滑升级
1、查看现有的 nginx 编译参数
[root@web ~]#/usr/local/nginx/sbin/nginx -V
按照原来的编译参数安装 nginx 的方法进行安装,只需要到 make,千万不要 make install
2、编译新的 nginx 源码包
编译新Nginx源码,安装路径需与旧版一致 (详细过程可参见:Nginx编译安装与配置使用)
[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不会停止服务)
[root@web ~]#mv /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx_$(date +%F)
4、复制新的nginx二进制文件,进入新的nginx源码包
[root@web ~]#cp /usr/local/nginx-1.14.0/objs/nginx /usr/local/nginx/sbin/
5、测试新版本的nginx是否正常
[root@web ~]#/usr/local/nginx/sbin/nginx -t
6、给nginx发送平滑迁移信号(若不清楚pid路径,请查看nginx配置文件)
[root@web ~]#kill -USR2 cat /var/run/nginx.pid
7、查看nginx pid,会出现一个nginx.pid.oldbin
[root@web ~]#ll /var/run/nginx.pid*
8、从容关闭旧的Nginx进程
[root@web ~]#kill -WINCH cat /var/run/nginx.pid.oldbin
9、此时不重载配置启动旧的工作进程
[root@web ~]#kill -HUP cat /var/run/nginx.pid.oldbin
10、结束工作进程,完成此次升级
[root@web ~]#kill -QUIT cat /var/run/nginx.pid.oldbin
11、验证Nginx是否升级成功
[root@web ~]#usr/local/nginx/sbin/nginx -V
升级实战
1、安装配置1.6版本的 nginx
[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 版本
[root@web nginx-1.6.0]# nginx -v
nginx version: nginx/1.6.0
3、查看 nginx 现有安装的模块
[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、访问验证
[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 模块
[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 是否升级成功
- 跟我学姿势:极客教你如何科学的看电影
- Discuz 5.x/6.x/7.x投票SQL注入分析
- 论如何高效的挖掘漏洞
- Rxjava + retrofit + dagger2 + mvp搭建Android框架
- 走进科学:如何正确的隐藏自己的行踪
- 比特儿(Bter.com) 比特币交易平台被盗事件全解析
- BitTorrent Bleep:无法被监控的聊天软件
- QQ蠕虫的行为检测方法
- 趋势OfficeScan系列产品漏洞分析
- [置顶] 浅谈我为什么选择用Retrofit作为我的网络请求框架
- 基于HTML5的Canvas指纹跟踪技术
- 有关 Android 应用桌面角标 (BadgeNumber) 实现的探讨
- XSS的原理分析与解剖
- Hold安全公司公布俄罗斯大型泄密事件细节
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Android Broadcast 和 BroadcastReceiver的权限限制方式
- [GO] 变参函数-GO中函数传递变长参数
- 基于Android-Skin-Loader实现换肤效果
- 通过 Nginx 实现最简单的Nas服务器(文件分享)
- 解决Android Studio xml 格式化不自动换行的问题
- GitHub代码仓库服务的那些事
- Android之自定义实现BaseAdapter(通用适配器三)
- Android实现音乐播放器锁屏页
- android studio3.3.1代码提示忽略大小写的设置
- Ascgen2可以把图片变成文字的小工具
- 解决android studio卡顿,提升studio运行速度的方法
- Android物理键盘事件解析
- AndroidQ(10)分区存储完美适配方法
- (全局快捷键工具)Power Keys彻底提升码字效率?
- android自定义view实现钟表效果