信号
kill -l 看信号大全
nginx -h 中可以看到的信号较少
s signal : send signal to a master process: stop, quit, reopen, reload可以使用man手册来查看详细的信号 如果没安装,去源码包里找到man文件
man 路径/nginx.8 不加路径打不开man帮助
stop SIGTERM 直接停止
quit SIGQUIT 优雅的退出:有人在访问不会结束进程
reopen SIGUSR1 分割日志
reload SIGHUP 重新加载配置文件
SIGHUP Reload configuration, start the new worker process with a new configuration, and gracefully shut down old worker processes.
SIGQUIT Shut down gracefully. 优雅的关闭:有人在访问不会结束进程
SIGUSR1 Reopen log files. 重新分割日志
SIGUSR2 Upgrade the nginx executable on the fly. 运行中升级
SIGWINCH Shut down worker processes gracefully. 优雅的关闭worker进程,work进程负责处理请求,还有请求不会关闭
帮助: -? -h
使用指定的配置文件: -c
指定配置指令:-g
指定运行目录:-p
测试配置文件是否有语法错误:-t -T
打印nginx的版本信息、编译信息等:-v -V
发送信号: -s 示例: nginx -s reload
nginx -v 显示版本
nginx -V
显示编译详细情况 模块等信息
分割日志
编译安装的日志文件在 /apps/nginx/logs/下
cd /apps/nginx/logs/
access.log 为成功日志 error.log 为失败日志
将access.log重命名为,access.log.bak
nginx -s reopen 重新生成日志 也可以使用 kill -USR1 进程号 使用主进程号
错误日志同理
可以编写分割日志脚本,加入计划任务,定时执行,实在不会,找chatGPT。
nginx平滑升级
先下载升级所用的安装包,我这边使用的1.20.2的安装包
wget https://nginx.org/download/nginx-1.20.2.tar.gz
解压压缩包
进入 nginx.1.20.2
cd nginx1.20.2
########################################################################
这时需要重新编译安装 ./configure 安装参数基本一致 这时可以使用 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 ###########注意不要执行 make install
cd 到objs
cd objs
mv /apps/nginx/sbin/nginx /apps/nginx/sbin/nginx.bak
将低版本的nginx主程序改名 备份
cp objs/nginx /apps/nginx/sbin/
将新版本 拷入进去
kill -USR2 主进程号
在看一下进程号
优雅的退出老进程
kill -WINCH `cat /apps/nginx/logs/nginx.pid.oldbin`
查看版本号
第一个进程号是老进程,等没有人访问的时候优雅的退出
kill -quit 老进程号
也可以先留着老进程
如果新的有问题,进行回滚
kill -HUP `cat /apps/nginx/logs/nginx.pid.oldbin`
#唤起老的进程
或者 直接停掉服务
在重启服务,就回退到1.18了