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 是否升级成功
- FFmpeg菜鸡互啄#第5篇#视频帧格式转换
- tomcat请求处理分析(三) 绑定本地端口监听请求
- 利用FFmpeg对火眼一体摄像机的回调数据进行处理:YUV转H264,H264封装flv,所有输入都是在内存中。
- MySQL 传统复制中常见故障处理和结构优化案例分析
- sql带条件查找最小缺失编号
- activiti学习笔记(六) 监听器
- activiti学习笔记(五) 流程部署
- 打开文件open()函数的使用方法详解
- activiti学习笔记(四) 配置器
- WaitForMultipleObjects用法详解,一看就懂
- activiti学习笔记(三) 监听生命周期
- Assignment 2 | 斯坦福CS231n-深度学习与计算机视觉课程
- 五个值得深思的PHP面试题
- 5个值得深思的 PHP 面试问题
- 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 数组属性和方法
- 非常量的引用左值问题
- PAT (Basic Level) Practice (中文)1019 数字黑洞 (20 分)
- 从 12.9K 开源项目学到的新东西
- PAT (Basic Level) Practice (中文)1048 数字加密 (20 分)
- 一、类加载的双亲委托机制详解
- PAT (Basic Level) Practice (中文)1021 个位数统计 (15 分)
- PAT (Basic Level) Practice (中文)1049 数列的片段和 (20 分)
- PAT (Basic Level) Practice (中文)1022 D进制的A+B (20 分)
- [900]mysql字符串数字互转
- 技术分享 | Semi-join Materialization 子查询优化策略
- 前端性能和错误监控
- Network在单细胞转录组数据分析中的应用
- PAT (Basic Level) Practice (中文)1024 科学计数法 (20 分)
- PAT (Basic Level) Practice (中文)1053 住房空置率 (20 分)
- 解决vue+axios请求报错POST http: net::ERR_CONNECTION_REFUSED,在封装的请求中统一处理请求异常的问题