如何对nginx进行平滑升级
nginx平滑升级,不影响线上业务的运行
这里nginx的安装目录是:nginx
第一步:查看nginx版本号:
[root@localhost nginx-web]# nginx -v
nginx version: nginx/1.15.12
这里的版本号是1.10.3,对比下官网的版本号:
第二步:下载上传并解压nginx安装包
我这里下载的是1.21.4的版本号 nginx-1.21.4,下载下来后上传到服务器,
下载地址:nginx: download
解压命令
tar zxvf nginx-1.21.4.tar.gz
查看解压后的文件 ,
[root@localhost nginx_new]# ls -l
total 1048
drwxr-xr-x 9 vsftpd vsftpd 186 Dec 20 17:47 nginx-1.21.4
-rw-r--r-- 1 root root 1070260 Dec 20 17:05 nginx-1.21.4.tar.gz[root@localhost nginx_new]# cd nginx-1.21.4/
[root@localhost nginx-1.21.4]# ls
auto CHANGES CHANGES.ru conf configure contrib html LICENSE Makefile man objs README src
第三步:编译安装包
可以看到解压后的目录下有 configure
1、 ./configure 是配置相关参数
这里需要了解之前的安装配置
1、如果配置了nginx全局启动可以使用 nginx -V查看
2、如果没有设置全局启动,到nginx安装目录下 找到sbin文件夹,进入后 使用: ./nginx -V
-v 查看版本号
-V 查看安装细节
在"./configure"配置中,"--with"表示启用模块,也就是说这些模块在编译时不会自动构建"--without"表示禁用模块,也就是说这些模块在编译时会自动构建,若你想Nginx轻量级运行,可以去除一些不必要的模块。
这里可以看到的是 之前的安装配置比较复杂比较全,直接将 --prefix=一直到最后复制下来,然后使用./configure 执行
./configure --prefix=/usr/local/nginx-web --with-http_ssl_module --with-http_gzip_static_module
如果,配置错了需要重新配置编译,这里可以重复执行
2、使用make命令进行编译
这里是升级不要使用make install,只编译不安装
[root@localhost nginx-1.21.4]# make
看到这里说明编译成功,编译好的文件在 objs目录下
测试编译后的程序是否可行:
执行:objs/nginx -t -c /usr/local/nginx-web/conf/nginx.conf,结果如下图
第四步:替换原有的nginx启动程序
1、替换nginx的启动程序之前先做好备份
[root@localhost nginx-web]# mv /usr/local/nginx-web/sbin/nginx /usr/local/nginx-web/sbin/nginx.15.old
2、查看备份结果,备份成功,现在开始准备替换nginx
也可以把配置文件nginx.conf备份下
编译好的程序在objs目录下:
3、执行替换,使用cp复制到对应的目录下就好
这里替换命令报错,因为我们的nginx正处于启动状态
4、查看下 ps -ef | grep nginx,,这里看到进程是10441
第一种:直接kill 干掉进程,进行替换
第二种:发送USR2信号给旧版本主进程号,使nginx的旧版本停止接收请求,用nginx新版本接替,且老进程处理完所有请求,关闭所有连接后,停止后替换
执行命令 kill -USR2 `cat nginx.pid`
kill -USR2 `cat nginx.pid`
查看nginx pid目录,多了个nginx.pid.oldbin文件,存放了旧版本nginx的pid号
kill -WINCH `cat nginx.pid.oldbin`
从容关闭旧进程:kill -QUIT `cat nginx.pid.oldbin`
kill -QUIT `cat nginx.pid.oldbin`
[root@localhost logs]# kill -QUIT `cat nginx.pid.oldbin`
[root@localhost logs]# ls
access.log error.log nginx.pid
5、查看版本号 ./nginx -v
[root@localhost sbin]# ./nginx -v
nginx version: nginx/1.21.4
6、执行./nginx -s relaod
7、检查是否启动成功
[root@localhost logs]# ps -ef | grep nginx
nobody 3976 27438 0 11:18 ? 00:00:00 nginx: worker process
root 5224 12257 0 11:19 pts/1 00:00:00 grep --color=auto nginx
root 27438 1 0 10:36 ? 00:00:00 nginx: master process ./nginx
[root@localhost logs]# ll /proc/27438/exe
lrwxrwxrwx 1 root root 0 12月 21 10:41 /proc/27438/exe -> /usr/local/nginx-web/sbin/nginx.15.old
[root@localhost logs]# /usr/local/nginx-web/sbin/nginx.15.old -v
nginx version: nginx/1.15.12
可以看到的是这里依然使用的是旧程序。
可以执行以下命令:
[root@localhost logs]# kill -USR2 `cat nginx.pid`
[root@localhost logs]# ls
access.log error.log nginx.pid nginx.pid.oldbin
[root@localhost logs]# kill -WINCH `cat nginx.pid.oldbin`
查看结果:
kill -USR2 的作用: 新执行文件启动,生成新进程号,新旧的进程共存!
所以运行 kill -USER2之后,存在nginx.pid 和 nginx.pid.oldbin
kill -WINCH 的作用:新来的请求统统由新程序处理,老的连接还继续由老程序处理;上图的结果印证这一说法;
稍等一段时间后,感觉没有人使用旧程序了,这个时候,时机到了,彻底弃用旧程序;
这个时候再执行:kill -QUIT `cat nginx.pid.oldbin` ,干掉旧的程序
kill -QUIT `cat nginx.pid.oldbin`
这个时候查看的结果如下,说明已经转到新程序了
说明:如何查找nginx的目录
方法一:
如果找不到nginx安装目录,可以使用 nginx -V寻找nginx的目录 ,前提是服务器中的nginx是全局命令,可以这样查找
方法二:
也可以使用:whereis nginx
方法三 使用 ps -ef | grep nginx 和 ll /proc/{PID}/exe
希望能帮助到你,记得点赞!!!谢谢!!!
如何对nginx进行平滑升级相关推荐
- nginx的平滑升级方法:
最简单的nginx的平滑升级方法: 1 找到nginx的执行文件的路径 1 # ps auxf|grep nginx 记下nginx的master进程 pid(我这里是2752 ) 2 查看当前ng ...
- 源码安装nginx以及平滑升级
源码安装nginx以及平滑升级 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 欢迎加入:高级运维工程师之路 598432640 这个博客不方便上传软件包,我给大家把软件包放到百度云 ...
- nginx的平滑升级
前言 关于nginx,我们通常都会提到nginx的平滑升级.即在不影响业务的情况下,对正在使用的nginx的版本进行升级.而这个操作是只在有必要升级时才进行的. 关于nginx的平滑升级与nginx添 ...
- nginx进行平滑升级
文章目录 前言 一.准备工作 1.下载需要更新的nginx版本,解压 2.编译并make(不进行make install) 二.升级方法一 1.备份安装目录下的nginx 2.复制objs目录下的ng ...
- Nginx的平滑升级记录---适用于编译安装的Nginx
一.查看自己的Nginx的版本号 [root@localhost sbin]# cd /usr/local/nginx/sbin/ [root@localhost sbin]# ls nginx [r ...
- nginx版本平滑升级(超详细)
一.前期准备 二.开始实验 安装旧版本 安装新版本 三.可能遇到的问题 文章背景:护网期间,客户跟我说nginx有0day漏洞,需要版本升级,我寻思着我也不是运维啊,问我干嘛(你干嘛~ 哎呦~),我没 ...
- Nginx网站服务(安装nginx、平滑升级nginx、nginx各种访问配置)
文章目录 一.Nginx概述 1.什么是nginx? 2.Nginx应用场景 3.Nginx应用企业 4.nginx的HTTPD七层代理和四层代理 二.Nginx和Apache的区别 三.编译安装Ng ...
- WP+Nginx+Ubuntu平滑升级PHP版本
前言 无障碍升级/切换PHP版本,适用于Ubuntu环境 安装Ondřej Surý PPA 什么是Ondřej Surý PPA? Ondřej Surý PPA Ondřej Surý PPA ( ...
- Nginx 的启动、停止、平滑重启、信号控制和平滑升级
Nginx 的启动 假设 nginx 安装在 /usr/local/nginx 目录中,那么启动 nginx 的命令就是: [root@localhost ~]# /usr/loca ...
最新文章
- sqlsourcesafe mysql_mysql权限问题,看不到其它的库!
- python app服务器_Python应用02 Python服务器进化
- 【简便代码】1064 朋友数 (20分)_25行代码AC
- 安装Android studio打不开,提示the environment variable HAVA_HOME does not point to a val
- 又双叒叕是一个动态简历
- jdk Arrays类
- 开发工具总结(8)之图文并茂全面总结上百个AS好用的插件(下)
- php微信支付 mweb,前端H5调用微信支付
- android 开发闪屏动画,Android闪屏效果实现方法
- Tivoli Storage Manager安装配置
- 计算机专业需要物理力学,读经典物理学和量子力学所想到的计算机哲学
- Minecraft 1.19.2 Forge模组开发 12.自定义鞘翅
- JAVA衣依服装销售平台计算机毕业设计Mybatis+系统+数据库+调试部署
- Bi-Direction attention flow for machine reading(原理篇)
- 迅搜 php,关于 Xunsearch PHP-SDK
- Python基于OpenCV的智能交通灯系统(南北车流量比例)[源码&部署教程]
- Automation Anywhere进阶培训-1-AA简介
- input仅输入数字且不会偷偷带小尾巴(input里没有,等取值时发现多了一个最后点击的英文字母☺️)
- 21天养成良好习惯-20
- PMP考试结果查询网站
热门文章
- FFMPEG使用显卡编码视频 转码
- 2021年中国鸡尾酒杯市场趋势报告、技术动态创新及2027年市场预测
- 微小宝公众号排行榜_微小说免费阅读网公众号大全推荐资源网
- 「 Gazebo仿真 」地图创建、多模型显示、基本指令
- python中pd series_pd.Series的基本操作
- android zip格式的ndk,Android 使用NDK (JNI)容易解压7z压缩文件
- 001.flink内存分配机制
- git版本管理工具用法介绍
- LaTeX入门学习(8)(术语)
- JavaSE Lambda 表达式