jan*_*jan 102 ubuntu command-line nginx
当我在Ubuntu服务器上的命令行上重新启动nginx服务时,当nginx配置文件出错时,服务崩溃.在多站点服务器上,这会放下所有站点,甚至是没有配置错误的站点.
为了防止这种情况,我首先运行nginx配置测试:
nginx -t
Run Code Online (Sandbox Code Playgroud)
测试成功后,我可以重启服务:
/etc/init.d/nginx restart
Run Code Online (Sandbox Code Playgroud)
或者只重新加载nignx站点配置而不重启:
nginx -s reload
Run Code Online (Sandbox Code Playgroud)
有没有办法将重启命令有条件的那两个命令组合到配置测试的结果中?
我在网上找不到这个,关于此的官方文档是相当基本的.我不太了解Linux,所以我不知道我正在寻找的是在我面前还是根本不可能.
我正在使用nginx v1.1.19.
Dan*_*scu 70
从nginx 1.8.0开始,正确的解决方案是
sudo nginx -t && sudo service nginx reload
Run Code Online (Sandbox Code Playgroud)
请注意,由于错误,即使配置文件有错误,也configtest始终返回零退出代码.
Moh*_*ady 45
实际上,据我所知,nginx会显示一条空消息,如果配置错误,它实际上不会重启.
搞砸它的唯一方法是做一个nginx停止然后重新开始.它会成功停止,但无法启动.
Mau*_*hez 38
仅当配置测试成功时,我才使用以下命令重新加载Nginx(版本1.5.9):
/etc/init.d/nginx configtest && sudo /etc/init.d/nginx reload
Run Code Online (Sandbox Code Playgroud)
如果您经常需要这样做,您可能想要使用别名.我使用以下内容:
alias n='/etc/init.d/nginx configtest && sudo /etc/init.d/nginx reload'
Run Code Online (Sandbox Code Playgroud)
这里的技巧是由"&&"完成的,如果第一个命令成功,它只执行第二个命令.您可以在此处看到有关"&&"运算符使用的更详细说明.
如果您真的想重新启动服务器,可以使用"restart"而不是"reload".
alias nginx.start='sudo nginx -c /etc/nginx/nginx.conf'
alias nginx.stop='sudo nginx -s stop'
alias nginx.reload='sudo nginx -s reload'
alias nginx.config='sudo nginx -t'
alias nginx.restart='nginx.config && nginx.stop && nginx.start'
alias nginx.errors='tail -250f /var/logs/nginx.error.log'
alias nginx.access='tail -250f /var/logs/nginx.access.log'
alias nginx.logs.default.access='tail -250f /var/logs/nginx.default.access.log'
alias nginx.logs.default-ssl.access='tail -250f /var/logs/nginx.default.ssl.log'
Run Code Online (Sandbox Code Playgroud)
然后使用命令"nginx.reload"等.
您可以使用/etc/init.d/nginx reload和重新加载sudo service nginx reload
如果nginx -t抛出一些错误,那么它不会重新加载
所以使用 && 同时运行两者
喜欢
nginx -t && /etc/init.d/nginx 重新加载