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

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


一、如何卸载编译安装的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的环境变量的文件

    bash 复制代码
     vim  /etc/bashrc 
    
     PATH=/usr/local/nginx1/sbin:$PATH
     #PATH=/usr/local/nginx2/sbin:$PATH
     PATH=/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`

bash 复制代码
[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`

bash 复制代码
[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