Nginx命令行控制
在Linux中,需要使用命令行来控制Nginx服务器的启动与停止、重载配置文件、回滚日志文件、平滑升级等行为。默认情况下,Nginx被安装在目录usrlocal/nginx/中,其二进制文件路径为usrlocal/nginc/sbin/nginx,配置文件路径为usrlocal/nginx/conf/nginx.conf。当然,在configure执行时是可以指定把它们安装在不同目录的。为了简单起见,本节只说明默认安装情况下的命令行的使用情况,如果读者安装的目录发生了变化,那么替换一下即可。
(1)默认方式启动
直接执行Nginx二进制程序。例如:
usrlocal/nginx/sbin/nginx
这时,会读取默认路径下的配置文件:usrlocal/nginx/conf/nginx.conf。
实际上,在没有显式指定nginx.conf配置文件路径时,将打开在configure命令执行时使用--conf-path=PATH指定的nginx.conf文件。
(2)另行指定配置文件的启动方式
使用-c参数指定配置文件。例如:
usrlocal/nginx/sbin/nginx -c tmpnginx.conf
这时,会读取-c参数后指定的nginx.conf配置文件来启动Nginx。
(3)另行指定安装目录的启动方式
使用-p参数指定Nginx的安装目录。例如:
usrlocal/nginx/sbin/nginx -p usrlocal/nginx/
(4)另行指定全局配置项的启动方式
可以通过-g参数临时指定一些全局配置项,以使新的配置项生效。例如:
usrlocal/nginx/sbin/nginx -g "pid varnginx/test.pid;"
上面这行命令意味着会把pid文件写到varnginx/test.pid中。
-g参数的约束条件是指定的配置项不能与默认路径下的nginx.conf中的配置项相冲突,否则无法启动。就像上例那样,类似这样的配置项:pid logs/nginx.pid,是不能存在于默认的nginx.conf中的。
另一个约束条件是,以-g方式启动的Nginx服务执行其他命令行时,需要把-g参数也带上,否则可能出现配置项不匹配的情形。例如,如果要停止Nginx服务,那么需要执行下面代码:
usrlocal/nginx/sbin/nginx -g "pid varnginx/test.pid;" -s stop
如果不带上-g"pidvarnginx/test.pid;",那么找不到pid文件,也会出现无法停止服务的情况。
(5)测试配置信息是否有错误
在不启动Nginx的情况下,使用-t参数仅测试配置文件是否有错误。例如:
usrlocal/nginx/sbin/nginx -t
执行结果中显示配置是否正确。
(6)在测试配置阶段不输出信息
测试配置选项时,使用-q参数可以不把error级别以下的信息输出到屏幕。例如:
usrlocal/nginx/sbin/nginx -t –q
(7)显示版本信息
使用-v参数显示Nginx的版本信息。例如:
usrlocal/nginx/sbin/nginx –v
(8)显示编译阶段的参数
使用-V参数除了可以显示Nginx的版本信息外,还可以显示配置编译阶段的信息,如GCC编译器的版本、操作系统的版本、执行configure时的参数等。例如:
usrlocal/nginx/sbin/nginx –V
(9)快速地停止服务
使用-s stop可以强制停止Nginx服务。-s参数其实是告诉Nginx程序向正在运行的Nginx服务发送信号量,Nginx程序通过nginx.pid文件中得到master进程的进程ID,再向运行中的master进程发送TERM信号来快速地关闭Nginx服务。例如:
usrlocal/nginx/sbin/nginx -s stop
实际上,如果通过kill命令直接向nginx master进程发送TERM或者INT信号,效果是一样的。例如,先通过ps命令来查看nginx master的进程ID:
:ahf5wapi001:root > ps -ef | grep nginx
root 10800 1 0 02:27 ? 00:00:00 nginx: master process ./nginx
root 10801 10800 0 02:27 ? 00:00:00 nginx: worker process
接下来直接通过kill命令来发送信号:
kill -s SIGTERM 10800
或者:
kill -s SIGINT 10800
上述两条命令的效果与执行usrlocal/nginx/sbin/nginx-s stop是完全一样的。
(10)“优雅”地停止服务
如果希望Nginx服务可以正常地处理完当前所有请求再停止服务,那么可以使用-s quit参数来停止服务。例如:
usrlocal/nginx/sbin/nginx -s quit
该命令与快速停止Nginx服务是有区别的。当快速停止服务时,worker进程与master进程在收到信号后会立刻跳出循环,退出进程。而“优雅”地停止服务时,首先会关闭监听端口,停止接收新的连接,然后把当前正在处理的连接全部处理完,最后再退出进程。
与快速停止服务相似,可以直接发送QUIT信号给master进程来停止服务,其效果与执行-s quit命令是一样的。例如:
kill -s SIGQUIT <nginx master pid>
如果希望“优雅”地停止某个worker进程,那么可以通过向该进程发送WINCH信号来停止服务。例如:
kill -s SIGWINCH <nginx worker pid>
(11)使运行中的Nginx重读配置项并生效
使用-s reload参数可以使运行中的Nginx服务重新加载nginx.conf文件。例如:
usrlocal/nginx/sbin/nginx -s reload
事实上,Nginx会先检查新的配置项是否有误,如果全部正确就以“优雅”的方式关闭,再重新启动Nginx来实现这个目的。类似的,-s是发送信号,仍然可以用kill命令发送HUP信号来达到相同的效果。
kill -s SIGHUP <nginx master pid>
(12)日志文件回滚
使用-s reopen参数可以重新打开日志文件,这样可以先把当前日志文件改名或转移到其他目录中进行备份,再重新打开时就会生成新的日志文件。这个功能使得日志文件不至于过大。例如:
usrlocal/nginx/sbin/nginx -s reopen
当然,这与使用kill命令发送USR1信号效果相同。
kill -s SIGUSR1 <nginx master pid>
(13)平滑升级Nginx
当Nginx服务升级到新的版本时,必须要将旧的二进制文件Nginx替换掉,通常情况下这是需要重启服务的,但Nginx支持不重启服务来完成新版本的平滑升级。
升级时包括以下步骤:
1)通知正在运行的旧版本Nginx准备升级。通过向master进程发送USR2信号可达到目的。例如:
kill -s SIGUSR2 <nginx master pid>
这时,运行中的Nginx会将pid文件重命名,如将usrlocal/nginx/logs/nginx.pid重命名为usrlocal/nginx/logs/nginx.pid.oldbin,这样新的Nginx才有可能启动成功。
2)启动新版本的Nginx,可以使用以上介绍过的任意一种启动方法。这时通过ps命令可以发现新旧版本的Nginx在同时运行。
3)通过kill命令向旧版本的master进程发送SIGQUIT信号,以“优雅”的方式关闭旧版本的Nginx。随后将只有新版本的Nginx服务运行,此时平滑升级完毕。
(14)显示命令行帮助
使用-h或者-?参数会显示支持的所有命令行参数。
参考书籍:《深入理解Nginx模块开发与架构解析》
Nginx命令行控制的更多相关文章
- nginx命令行参数和信号
nginx命令行参数 [user@host dir]$ /usr/local/nginx/sbin/nginx -hnginx version: nginx/1.8.0Usage: nginx [-? ...
- nginx命令行参数
通过控制台进入nginx目录后 1. 启动nginx start nginx 或 nginx.exe 2. 重启nginx nginx -s reload 3. 停止nginx nginx -s st ...
- 转载:Nginx的命令行控制(1.6)《深入理解Nginx》(陶辉)
原文:https://book.2cto.com/201304/19621.html 在Linux中,需要使用命令行来控制Nginx服务器的启动与停止.重载配置文件.回滚日志文件.平滑升级等行为.默认 ...
- 运行和控制Nginx——命令行参数和信号
参考资料: Nginx中文文档: http://www.nginx.cn/nginxchscommandline Nginx的启动.停止.平滑重启.信号控制和平滑升级:http://zachary-g ...
- ADB命令行控制界面开关
以下命令需要root权限: svc命令 这个脚本在/system/bin目录下,这个命令可以用来控制电源管理,wifi开关,数据开关(就是上网流量) svc power stayon [t ...
- nginx命令行及演示:重载、热部署、日志切割
重载配置文件 nginx -s reload 热部署(升级nginx) 首先备份二进制文件 cp nginx nginx.old 拷贝新版本的nginx替换以前的nginx二进制文件 cp ngi ...
- nginx 命令行参数 启动 重启 重载 停止
今天和大家分享关于 nginx 的一些参数使用 首先,你应该安装了nginx CentOS 安装 nginx 这是很早之前的一篇博客,可以参考. 之前,我们如何去操作 nginx ##简单粗暴法 pk ...
- MAC OSX通过Terminal命令行控制蓝牙状态开关
defaults write /Library/Preferences/com.apple.Bluetooth.plist ControllerPowerState 0 #关闭蓝牙服务 default ...
- 可以用命令行控制eclipse断点增加删除、远程调试创建与启动的插件
java # 创建断点(支持条件断点) curl -X PUT -H "Content-Type:application/json" --data '{"language ...
随机推荐
- 利用Python查看微信共同好友
思路 首先通过itchat这个微信个人号接口扫码登录个人微信网页版,获取可以识别好友身份的数据.这里是需要分别登录两人微信的,拿到两人各自的好友信息存到列表中. 这样一来,查共同好友就转化成了查两个列 ...
- Flex弹性布局以及box-sizing
(本篇内容代表本人理解,如有错误请指出!) box-sizing box-sizing 属性用于更改用于计算元素宽度和高度的默认的 CSS 盒子模型.可以使用此属性来模拟不正确支持CSS盒子模型规范的 ...
- python3 重写、重用、重载
重用重用是用于在对象的概念中,实现代码的重用性 在继承角度,在子类继承父类之后,重新使用父类属性方法即是代码的重用 在组合角度,在一个类中以另外一个类的对象作为数据属性,提高代码的重用性 重用的方式: ...
- 本部jdk切换的坑!!!
https://www.cnblogs.com/ll409546297/p/6593173.html 如果你参考其他博主没有解决,可以来参考下这个. 1.我们打开注册表,然后找到这个路径: HKEY_ ...
- Luogu4495 [HAOI2018] 奇怪的背包 【扩展欧几里得算法】
题目分析: 首先打个暴力求一下$10^9$以内因子最多的数的因子个数,发现只有$1344$个. 由于有$ax+by=k*(a,b)$和2017年noip的结论,所以我们可以发现对于任意多个数$a_1, ...
- webpack中跨域请求proxy代理(vue与react脚手架不同设置方法)
因为浏览器有同源策略的限制,导致我们在本地开发的时候,请求不同域名的接口会存在跨域的问题 解决跨域的问题有很多方式,这里主要整理下代理模式来解决跨域的问题 代理方式能够实现的机制大体: 本地服务器 - ...
- HDU - 3247 Resource Archiver (AC自动机,状压dp)
\(\quad\)Great! Your new software is almost finished! The only thing left to do is archiving all you ...
- M-BM-
今天拷贝了一段代码 struct Test { Test( int ) {} Test() {} ...
- react 16 ssr的重构踩坑
ssr 服务端不能识别前端的window.特别是首屏渲染的数据需要用到window对象(比如href += location.search); 服务端不能加载图片,css文件. require.ext ...
- I/O模型系列之五:IO多路复用 select、poll、epoll
IO多路复用之select.poll.epoll IO多路复用:通过一种机制,一个进程可以监视多个描述符,一旦某个描述符就绪(一般是读就绪或者写就绪),能够通知程序进行相应的读写操作. 应用:适用于针 ...