nginx 启动、停止、关闭
使用3A服务器搭建的centos系统安装nginx
教程在我的往期博客中
1,nginx指定配置文件
/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
1
-c参数 指定了要加载的nginx配置文件路径
1,从容停止Nginx:
kill -QUIT主进程号
2,快速停止Nginx:
kill -TERM主进程号
3,强制停止Nginx:
kill -9主进程号
2,使用信号管理nginx的master、worker进程
立刻停止服务:
nginx -s stop或者
kill -SIGTERM $(cat /data/services/nginx/logs/nginx.pid)
优雅停止服务:
nginx -s quit或者
kill -QUIT $(cat /data/services/nginx/logs/nginx.pid)
重载配置文件(master不退出,重新加载worker进程):
nginx -s reload
kill -SIGHUP $(cat /data/services/nginx/logs/nginx.pid)
重新开始记录日志文件:
nginx -s reopen或者
kill -USR1 $(cat /data/services/nginx/logs/nginx.pid)
热升级nginx服务(主要是二进制nginx文件):
kill -USR2 old_master_process #将新的请求过度到新的master进程中去
kill -WINCH old_master_process #优雅关闭所有work进程
nginx reload流程
(1)向master进程发送HUP信号(reload命令)
(2)master进程校验配置文件语法是否正确
(3)master进程打开新的监听端口
(4)master进程用新配置启动新的worker子进程
(5)master进程向老worker子进程发送QUIT信号
(6)老worker进程关闭监听句柄,处理完当前连接后结束进程
nginx热升级流程
(1)将旧nginx文件换成新nginx文件
(2)向master进程发送USR2信号
(3)master进程修改pid文件名,加后缀.oldbin
(4)master进程用新nginx文件启动新master进程
(5)向老master进程发送WINCH信号,关闭老worker
(6)回滚:向老master发送HUP,向新master发送QUIT
3,当用systemctl启动服务时,报start-pre时,可以考虑下/var/tmp是否存在
nginx.service failed to run‘start-pre’
启动脚本:
cat >> nginx.service << EOF
[Unit]
Description=nginx web server
Documentation=http://nginx.org/en/docs/
After=network.target remote-fs.target nss-lookup.target
[Service]
Type=forking
User=root
Group=root
PIDFile=/usr/local/nginx/logs/nginx.pid
ExecStartPre=/usr/local/nginx/sbin/nginx -t -c /usr/local/nginx/conf/nginx.conf
ExecStartPre=/usr/local/nginx/sbin/nginx -t
ExecStart=/usr/local/nginx/sbin/nginx
ExecReload=/usr/local/nginx/sbin/nginx -s reload
KillSignal=SIGQUIT
PrivateTmp=true
[Install]
WantedBy=multi-user.target
EOF
