使用-s reload args Consul模板Windows在文件夹中执行nginx exe

时间:2017-08-15 05:59:32

标签: nginx consul consul-template

我正在使用Consul Template V0.19.0 for windows ,用于渲染nginx loadbalancing config。它正在按预期工作。

现在我想要consul模板,在args(-s reload)的文件夹中执行nginx exe,如下所示: -

案例1:

template {
source = "Template/template.ctmpl"
destination = "F:\\IDE\\Visual Studio Collection\\Web Servers\\nginx-
1.12.0\\nginx-1.12.0\\conf\\nginx.conf"
command = "F:\\IDE\\Visual Studio Collection\\Web Servers\\nginx-
1.12.0\\nginx-1.12.0\\nginx -s reload"
command_timeout = "60s"
}

但它会抛出错误,例如“无法执行命令”F:\ IDE \ Visual Studio Collection \ Web Servers \ nginx-1.12.0 \ nginx-1.12.0 \ nginx.exe“from”Template / template.ctmpl “=>”F:\ IDE \ Visual Studio Collection \ Web Servers \ nginx-1.12.0 \ nginx-1.12.0 \ conf \ nginx.conf“:child:exec:”F:IDEVisual“:文件不存在”

案例2: - 目前我已经通过将nginx作为服务(使用nssm)并给出了像

这样的命令来实现这一点
command = "powershell restart-service nginx" 

而不是给出完整路径后跟“-s reload”。

但为此,必须使用nssm等应用程序将nginx作为服务。

我可以知道,有没有办法告诉consul模板配置中的命令属性,“在案例1 ”中执行文件夹中的nginx exe?

感谢。

1 个答案:

答案 0 :(得分:0)

试试这个

command = "\"F:/IDE/Visual Studio Collection/Web Servers/nginx-
1.12.0/nginx-1.12.0/nginx\" -s reload"

如果这不起作用,请尝试下面的命令选项

command = "\"F:\\\\IDE\\\\Visual Studio Collection\\\\Web Servers\\\\nginx-
1.12.0\\\\nginx-1.12.0\\\\nginx\" -s reload"

command="cd '<NGINX FOLDER PATH>' && nginx -s reload"

修改-1

基于讨论,似乎你的nginx配置有一个基于相对文件夹的配置。从文件夹启动nginx时,还需要从同一文件夹重新加载。因此,您需要更改为该文件夹,然后执行reload命令。您应该尝试的两种格式是

command="cmd /k 'cd \'<NGINX FOLDER PATH>\' && nginx -s reload'"

{{1}}