Nginx命令行控制
在linux系统中,我们需要使用命令行来控制Nginx服务的启动和停止、重载配置文件、回滚日志文件与平滑升级等操作,本篇文章简单记录Nginx常用命令行的使用。
nginx默认安装在/usr/local/nginx/中,配置文件默认路径为/usr/local/nginx/conf/nginx.conf,以下记录是默认情况下的命令行,编译安装时自定义路径的,需要更改命令中的路径。
1.默认方式启动nginx
/usr/local/nginx/sbin/nginx
这时nginx会读取路径下的配置文件:/usr/local/nginx/conf/nginx.conf
如果你是源码安装而且使用configure命令执行时使用--conf-path=PATH指定了nginx.conf的话,默认方式启动的nginx会去读取指定的nginx.conf文件。
2.指定配置文件启动
/usr/local/nginx/sbin/nginx -c /tmp/nginx.conf
可以通过-c参数来指定nginx.conf配置文件
3.指定安装目录启动
/usr/local/nginx/sbin/nginx -p /usr/local/nginx/
可以通过-p参数来指定安装目录。
4.指定全局配置项启动
/usr/local/nginx/sbin/nginx -g "pid /var/nginx/test.pid;"
可以通过-g参数来指定一些全局配置项,以致指定的配置项生效。如上面就通过-g来指定pid参数的值为/var/nginx/test.pid。
⚠️:使用-g参数指定全局配置项的话,有俩点是需要特别注意的。其一,-g指定的参数值不能和nginx.conf文件中的配置项冲突,比如我使用-g指定了pid参数值为/var/nginx/test.pid,但是在nginx.conf文件中又写明pid参数值为/var/log/nginx.pid,这样会造成nginx无法正常启动。其二,你使用-g启动的nginx服务,在执行其它命令时也需要加上-g以及指定的配置项,不然的话可能会出现配置项不匹配的问题。比如我指定pid文件启动nginx,但是我暂停nginx服务时,不加上启动时的参数,会造成nginx找不到对应的pid文件,无法暂停nginx服务。
5.测试配置信息
/usr/local/nginx/sbin/nginx -t nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful
在不启动nginx的情况下,使用-t参数可以测试nginx的配置文件是否存在错误,执行结果会显示配置是否正确。
6.测试时不显示信息
/usr/local/nginx/sbin/nginx -t -q
在测试nginx配置时,可以添加-q选项,nginx不会将error等级以下的信息输出到屏幕上。
7.查看nginx版本
/usr/local/nginx/sbin/nginx -v
可以通过-v参数来查看nginx的版本信息。
8.查看编译参数
/usr/local/nginx/sbin/nginx -V
使用-V选项,不仅仅可以查看nginx的版本信息,还可以查看编译阶段的信息。如GCC编译器版本、操作系统版本、configure参数等等。
/usr/local/nginx/sbin/nginx -s stop
通过-s选项,给nginx发送信号量stop,可以强制停止nginx服务。
/usr/local/nginx/sbin/nginx -s quit
使用quit退出与stop退出的不同就在于,quit不是粗暴的直接kill掉nginx服务,而是先关闭监听接口,停止接收新的连接,然后把当前需要处理的连接全部都处理完,最后再优雅的退出服务。
/usr/local/nginx/sbin/nginx -s reload
该命令可以在nginx运行时重载nginx.conf配置文件。其实际实现是先检测新的配置是否正确,如果正确的话以优雅的方式停止服务,在重新启动nginx服务。
/usr/local/nginx/sbin/nginx -s reopen
使用reopen参数可以重新打开日志文件,这样可以将日志文件改名或者进行备份,在重新打开的时候就会生成新的日志文件。
一般情况应用的升级都是需要重启服务的,但是nginx支持不重启服务来完成新版本的平滑升级。
1.通过正在运行的nginx准备升级
kill -s SIGUSR2 <nginx master pid>
这时,运行中的nginx将会把pid文件重命名,使得新的nginx不会因为pid文件而无法启动。
2.启动新版本的nginx,启动命令看前文
3.kill掉旧的nginx进程,完成平滑升级
可以使用-h参数或者-?参数可以显示支持的所有命令行参数。