当前位置: 首页 > backend >正文

nginx-如何卸载和升级编译安装的版本

nginx-如何卸载和升级编译安装的版本

  • 一、如何卸载编译安装的nignx?
  • 二、如何升级编译安装的nginx?
    • 1. 冷升级
    • 2. 热升级


一、如何卸载编译安装的nignx?

以删除nginx2为例

  1. 删除安装目录

    rm -rf /usr/local/nginx2

  2. 修改PATH变量,删除包含/usr/local/nginx2/sbin路径
    临时修改

    PATH=/root/.local/bin:/root/bin:/usr/local/nginx3/sbin:/usr/local/nginx1/sbin:/usr/local/nginx3/sbin:/usr/local/nginx1/sbin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin

    永久修改
    修改以前配置过的PATH的环境变量的文件

     vim  /etc/bashrc PATH=/usr/local/nginx1/sbin:$PATH#PATH=/usr/local/nginx2/sbin:$PATHPATH=/usr/local/nginx3/sbin:$PATH
    
  3. 如何以前设置了开机启动,也要取消

    vim /etc/rc.local
    #/usr/local/nginx2/sbin/nginx


二、如何升级编译安装的nginx?

nginx1.28.0 -->nginx 1.29.1
1、重新下载新版本的nginx源代码,编译安装到一个新的目录下
1.28 -->安装的路径–》/usr/local/nginx1 --》old version 旧版本
1.29 -->安装的路径–》/usr/local/nginx2 --》new version 新版本
编译参数必须与旧版本完全一致

2.先停止运行旧版本的nginx
3.启动新版本的nginx

这个新旧替换的过程中,需要考虑哪些问题?或者有哪些弊端?
1.旧的配置需要拷贝到新的nginx目录下
2.html目录下的网页需要拷贝到新的nginx目录下
另外一个思路
3.也可以拷贝新的编译好的nginx二进制程序到旧的目录下,替换旧的nginx主程序
cp /usr/local/nginx8/sbin/nginx /usr/local/nginx1/sbin

1. 冷升级

短暂停止服务

先备份旧的nginx主程序

[root@nginx-1 sbin]# cp /usr/local/nginx1/sbin/nginx /root/

替换旧的主程序

[root@nginx-1 sbin]# cp /usr/local/nginx8/sbin/nginx /usr/local/nginx1/sbin/
cp:是否覆盖’/usr/local/nginx1/sbin/nginx’? y

停止nginx

[root@nginx-1 sbin]# nginx -s stop
[root@nginx-1 sbin]# which nginx
/usr/local/nginx8/sbin/nginx

再启动新的nginx

[root@nginx-1 sbin]# /usr/local/nginx1/sbin/nginx
[root@nginx-1 sbin]# /usr/local/nginx1/sbin/nginx -v
nginx version: nginx/1.29.1


2. 热升级

不中断业务,去升级nginx主程序

[root@nginx-1 sbin]# /usr/local/nginx1/sbin/nginx
[root@nginx-1 sbin]# /usr/local/nginx1/sbin/nginx -v
nginx version: nginx/1.28.0
[root@nginx-1 sbin]# ps aux|grep nginx
root 4772 0.0 0.0 12076 2304 ? Ss 15:38 0:00 nginx: master process /usr/local/nginx1/sbin/nginx
nobody 4773 0.0 0.1 16364 5376 ? S 15:38 0:00 nginx: worker process
root 4776 0.0 0.0 6636 2176 pts/0 S+ 15:38 0:00 grep --color=auto nginx

1.先将旧的nginx二进制程序改名

[root@nginx-1 sbin]# mv nginx nginx.old
[root@nginx-1 sbin]# ls
nginx.old

2.再将新的nginx二进制程序拷贝过来

[root@nginx-1 sbin]# cp /usr/local/nginx8/sbin/nginx .
[root@nginx-1 sbin]# ls
nginx nginx.old

3.启动新的nginx

会出现下面的场景,新的nginx和旧的nginx都在运行

给原来的nginx的master进程发送12类型的信号,会告诉原来的nginx的master进程去重新加载nginx二进制程序,再次启动nginx的maser和woker进程。
最后会出现2组nginx进程,一组是旧的nginx的master和worker,一组是新的带vts功能的nginx的master和worker进程。
新旧进程共存的现象

[root@nginx-1 sbin]# kill -12 4772

[root@nginx-1 sbin]# ps aux|grep nginx
root        4772  0.0  0.0  12076  2688 ?        Ss   15:38   0:00 nginx: master process /usr/local/nginx1/sbin/nginx
nobody      4773  0.0  0.1  16364  5376 ?        S    15:38   0:00 nginx: worker process
root        4783  0.0  0.1  12084  7296 ?        S    15:43   0:00 nginx: master process /usr/local/nginx1/sbin/nginx
scfeng      4784  0.0  0.1  16368  5504 ?        S    15:43   0:00 nginx: worker process
root        4786  0.0  0.0   6636  2176 pts/0    S+   15:43   0:00 grep --color=auto nginx

4.杀死旧的nginx进程,包括master和worker
3) SIGQUIT 信号 优雅地停止进程
Master 进程会先通知所有 worker 进程停止接收新请求
Worker 进程会处理完当前正在处理的请求后,再退出
所有 Worker 进程退出后,Master 进程也会退出,最终 Nginx 服务完全停止

[root@nginx-1 sbin]# kill -3 4772

[root@nginx-1 sbin]# ps aux|grep nginx
root        4783  0.0  0.1  12084  7296 ?        S    15:43   0:00 nginx: master process /usr/local/nginx1/sbin/nginx
scfeng      4784  0.0  0.1  16368  5632 ?        S    15:43   0:00 nginx: worker process
root        4789  0.0  0.0   6636  2176 pts/0    S+   15:45   0:00 grep --color=auto nginx
http://www.xdnf.cn/news/18386.html

相关文章:

  • 第4课:布局与样式
  • RabbitMQ 应用问题
  • 产教融合助企业:国际数字影像产业园办全媒体人才培育会
  • K8S管理实战指南
  • 如何实现H5页面拉起原生App?
  • 学习:uniapp全栈微信小程序vue3后台(3)
  • SprintBoot 2 源码阅读
  • Thunderbird 将推出在德国托管的加密电子邮件服务
  • 浏览器插件优化工具:bypass paywalls chrome
  • 力扣热题之贪心算法
  • Python 办公自动化实战:Excel 批量处理 + 自动发邮件
  • VsCode 上的Opencv(C++)环境配置(Linux)
  • 51单片机-中断系统
  • Ansys Motor-CAD:概述(EMag、THERM、LAB、MECH)
  • 171-基于Flask的笔记本电脑数据可视化分析系统
  • Linux数字列排序命令
  • Apache Ozone 介绍与部署使用(最新版2.0.0)
  • 大数据毕业设计推荐:基于Hadoop+Spark的手机信息分析系统完整方案
  • Matrix-Zero:昆仑万维发布的AI世界模型,支持单张图生成3D世界
  • 微信小程序,事件总线(Event Bus) 实现
  • 不同类型代理 IP 在爬虫场景下的表现对比
  • 05 ODS层(Operation Data Store)
  • 集成电路学习:什么是Camera Calibration相机标定
  • 【自用】JavaSE--网络通信
  • 电脑芯片其实更偏向MPU不是CPU,GPU CPU NPU MPU MCU的区别
  • 近端策略优化算法PPO的核心概念和PyTorch实现详解
  • ElasticSearch——常用命令
  • 数据结构-HashSet
  • Android auncher3实现简单的负一屏功能
  • 基于SpringBoot的宠物用品系统【2026最新】