建设工程网站什么时候可以同步,512 做网站,成都低价做网站,网站备份怎么做文章目录 一、Nginx 平滑升级二、升级失败 回滚操作三、遇到问题 一、Nginx 平滑升级
一般有两种情况下需要升级 nginx#xff0c;一种是确实要升级 nginx 的版本#xff0c;另一种是要为 nginx 添加新的模块。
Nginx平滑升级其原理简单概括#xff1a;
#xff08;1一种是确实要升级 nginx 的版本另一种是要为 nginx 添加新的模块。
Nginx平滑升级其原理简单概括
1在不停掉老进程的情况下启动新进程。2老进程负责处理仍然没有处理完的请求但不再接受处理请求。3新进程接受新请求。4老进程处理完所有请求关闭所有连接后停止。
信号说明
信号nginx内置shell说明HUPnginx -s reload重载配置文件USR1nginx -s reopen重新打开日志文件配置mv用做日志切割USR2-热升级nginx程序WINCH-优雅的关闭相关的worker进程QUITnginx -s squit优雅的停止nginxTERM,INTnginx -s stop立即停止nginx
实践1.16 升级到 1.18
nginx -v
nginx version: nginx/1.16.1按照原来的编译参数安装 nginx 的方法进行安装只需要到 make千万不要 make install 。如果make install 会将原来的配置文件覆盖
wget http://nginx.org/download/nginx-1.18.0.tar.gz
tar zxvf nginx-1.18.0.tar.gz -C /usr/local/src
cd /usr/local/src/nginx-1.18.0./configure --prefix/usr/local/nginx --usernginx --with-http_ssl_module
make 备份替换nginx命令
mv /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx_$(date %F)
cp /usr/local/src/nginx-1.18.0/objs/nginx /usr/local/nginx/sbin/测试新版本
/usr/local/nginx/sbin/nginx -t
/usr/local/nginx/sbin/nginx -v查找nginx.pid文件位置
find / -name nginx.pid
/usr/local/nginx/logs/nginx.pid发送平滑迁移信号 USR2: 启动新的主进程实现热升级
kill -USR2 cat /usr/local/nginx/logs/nginx.pid发送WINCH信号给旧版主进程旧版主进程就开始从容关闭
kill -WINCH cat /usr/local/nginx/logs/nginx.pid.oldbin二、升级失败 回滚操作
1、替换原来的 nginx命令
cd /usr/local/nginx/sbin/
mv nginx_2022-03-21 nginx2、kill -HUP 旧版本的Master进程号
//不重载 配置文件下 启动旧的worker进程
kill -HUP cat /usr/local/nginx/logs/nginx.pid.oldbin3、kill -USR2 新版本的主进程号
kill -USR2 cat /usr/local/nginx/logs/nginx.pid4、kill -WINCH 新版本的主进程号
kill -WINCH cat /usr/local/nginx/logs/nginx.pid三、遇到问题
问题执行完成 “发送平滑迁移信号 USR2” 没有出现新的Master进程信息
查看日志 报错内容为 大致意思是 找不到 nginx 目录
execve() failed while executing new binary process nginx (2: No such file or directory)原因Nginx平滑升级是根据环境变量来进行的 找不到 nginx目录 是因为上次启动nginx不是 使用完全路径启动的 而环境变量中并没有 nginx这个目录 所以导致 这个问题
解决使用正确的启动方法
/usr/local/nginx/sbin/nginx