nginx--平滑升级

失败了,等我拍好错继续更新

命令

选项说明

帮助: -? -h

使用指定的配置文件: -c

指定配置指令:-g

指定运行目录:-p

测试配置文件是否有语法错误:-t -T

打印nginx的版本信息、编译信息等:-v -V

发送信号: -s 示例: nginx -s reload

信号说明

立刻停止服务:stop,相当于信号SIGTERM,SIGINT

优雅的停止服务:quit,相当于信号SIGQUIT

平滑重启,重新加载配置文件: reload,相当于信号SIGHUP

重新开始记录日志文件:reopen,相当于信号SIGUSR1,在切割日志时用途较大

平滑升级可执行程序:发送信号SIGUSR2,在升级版本时使用

优雅的停止工作进程:发送信号SIGWINCH,在升级版本时使用

reload流程

平滑升级

下载最先版本

复制代码
wget http://nginx.org/download/nginx-1.24.0.tar.gz
tar -zxvf nginx-1.24.0.tar.gz
cd nginx-1.24.0

查看当前版本

复制代码
/apps/nginx/sbin/nginx -v

只编译不安装

复制代码
./configure --prefix=/apps/nginx \
--user=nginx \
--group=nginx \
--with-http_ssl_module \
--with-http_v2_module \
--with-http_realip_module \
--with-http_stub_status_module \
--with-http_gzip_static_module \
--with-pcre \
--with-stream \
--with-stream_ssl_module \
--with-stream_realip_module
复制代码
make
objs/nginx -v

查看两个版本

复制代码
mv /apps/nginx/sbin/nginx{,.bak} 
ll objs/nginx /apps/nginx/sbin/nginx.bak

备份旧命令

复制代码
mv /apps/nginx/sbin/nginx /usr/local/nginx/sbin/nginx.old

复制新版本的命令

复制代码
cd /usr/local/src/nginx-1.24.0
cp objs/nginx /apps/nginx/sbin
nginx -v
nginx -t

平滑升级

USR2 平滑升级可执行程序,将存储有旧版本主进程ID的文件重命名为nginx.pid.oldbin,跟着启动新的nginx

此时两个master的进程都在运行,只是旧的master不在监听,由新的master监听80

此时Nginx开启一个新的master进程,这个master进程会生成新的worker进程,这就是升级 后的Nginx进程,此时老的进程不会自动退出,但是当接收到新的请求不作处理而是交给新的进程处理。

复制代码
kill -USR2 `cat /apps/nginx/run/nginx.pid`
ps auxf|grep nginx
复制代码
lsof -i :80
相关推荐
zylyehuo10 小时前
Linux 彻底且安全地删除文件
linux
用户805533698031 天前
主线 U-Boot 上 RK3506:和闭源 rkbin 拔河的三个隐性契约
linux·嵌入式
用户034095297911 天前
linux fcitx 5 雾凇拼音 设置在中文输入法下仍然输入英文标点
linux
Web3探索者3 天前
可视化服务器管理和传统命令行区别是什么?新手教程:Linux 运维到底该用图形界面还是 SSH 命令行?
linux·ssh
zylyehuo3 天前
Linux系统中网线与USB网络共享冲突
linux
Avan_菜菜4 天前
FRP 内网穿透完整实战:从 HTTP 映射到 HTTPS 自签代理
运维·nginx·https
Sokach10154 天前
Linux Shell 脚本从零到能用:一个新手的一天学习总结
linux
AlfredZhao5 天前
Docker 容器时区不对,`timedatectl` 不存在怎么办?
linux·timezone
zzzzzz3106 天前
9K Star 炸裂开源!这个 C 语言写的代码知识图谱,把 Linux 内核索引压缩到了 3 分钟
linux·服务器·sql
XIAOHEZIcode6 天前
Linux系统鼠标偏移常见原因以及修复方案
linux·运维·游戏