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

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.dtcms.com/a/344135.html

相关文章:

  • 深入理解 hash -r:解决 Linux 命令缓存难题的关键密钥
  • 线性回归计算
  • 华为云物联网产品架构解析:资源空间、群组、产品、标签、网关、设备与子设备的关系梳理与设置指南
  • AI重构智慧展馆
  • 【数据分享】中国371个城市的坡度矢量数据和excel数据
  • [react] class Component and function Component
  • Android音频学习(十四)——加载音频设备
  • Mysql InnoDB 底层架构设计、功能、原理、源码系列合集【四、事务引擎核心 - MVCC与锁机制】
  • prompt提示词2
  • 【思考】什么是服务器?什么是服务?什么是部署?
  • MongoDB 完整指南
  • 机器人爆发、汽车换代,速腾聚创开始讲新故事
  • 线性规划在数学建模中的应用
  • MyCAT高可用
  • Go语言实战案例-使用SQLite实现本地存储
  • Codeforces1043 A至F 题解
  • 【基础-判断】合理的动效可以帮助引导、取悦用户,减少等待时间,更能增加产品识别度,让用户舒适的的使用产品
  • 【序列晋升】12 Spring Boot 约定优于配置
  • 基于 Docker 的高可用 WordPress 集群部署:分布式 Nginx + Keepalived、MySQL 主从复制与 ProxySQL 读写分离
  • 行缓存(line buffer)在图像卷积中的工作方式
  • 【iOS】YYModel第三方库源码
  • 飞机起落架减震筒的深孔检测方法探究 - 激光频率梳 3D 轮廓检测
  • 用户登录Token缓存Redis实践:提升SpringBoot应用性能
  • Flutter学习笔记(七)---主题
  • 嵌入式学习day34-网络-tcp/udp
  • 如何判断是否应该为了一个小功能而引入一个大体积的库
  • 配电网重构优化:以减小网损为目标的智能算法实现
  • GitLab CI :深入剖析 gl-sbom-report.cdx.json 解码“数字身份证”
  • 云蝠智能 VoiceAgent:重构售后服务场景
  • 岭回归算法拉索回归