我正在使用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?
感谢。
答案 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}}