nginx版本平滑更新
实现目标
将nginx版本由1.18更新至1.19,且更新过程中不影响用户正常使用
实验步骤
cd nginx-1.19.1/ 对新版本重新编译
ls
./configure --prefix=/usr/local/nginx --with-http_ssl_module
make
cd /usr/local/nginx/
cd sbin/
ls
cp nginx nginx.old 备份旧版本,以防安装失败
ls
cd /root/nginx-1.19.1/
ls
cd objs/
ls
cp -f nginx /usr/local/nginx/sbin/nginx 把新编好的二进制程序放安装目录覆盖原来的文件
将原先在旧的配置下启动的worker杀死,然后使用新的配置创建新的worker:
ps -ef |grep nginx 查看nginx进程
kill -USR2 7717 旧版本停止接收请求,并开启新的master产生新的worker
kill -WINCH 7717 等待旧版本处理完关闭worker进程
此时查看版本,发现已经更新
版本回退
cp -f nginx.old nginx
ls
./nginx -v
./nginx.old -v
ps ax| grep nginx
kill -HUP 7717 启动旧版本的worker进程
kill -USR2 12568 新版本不再接收请求
kill -WINCH 12568 关闭新版本的worker进程
kill -QUIT 12568 闭新版本的masterr进程
ls
nginx -v
日志切割
背景
企业中,服务器一天接受的访问量巨大,若不及时更换访问日志会造成很大资源负担。
操作步骤
编写日志切割脚本:
#!/bin/bash
cd /usr/local/nginx/logs && mv access.log access_$(date +%F -d -1day).log
/usr/local/nginx/sbin/nginx -s reload
尝试运行脚本,发现新的访问日志已经出现
在主机对server2进行压测,发现旧日志已被切割,新的日志会继续导入access.log中