我正在使用适用于Windows的Consul Template V0.19.0,用于渲染nginx负载平衡配置。它正在按预期工作。
现在我想要领事模板,在带有 args (-s 重新加载( 的文件夹中执行 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 Serversginx-1.12.0ginx.exe"来自"Template/template.ctmpl"=>"F:\IDE\Visual Studio Collection\Web Serversginx-1.12.0ginx-1.12.0\confginx.conf":child:exec:"F:IDEVisual":文件不存在"。
案例 2:-目前我已经通过将 nginx 作为服务(使用 nssm(并给出如下命令来实现这一点,
command = "powershell restart-service nginx"
而不是给出完整路径,后跟"-s 重新加载"。
但为此,必须使用nssm等应用程序将nginx作为服务。
我可以知道,有没有办法告诉领事模板配置中的命令属性,"像案例 1一样在文件夹中执行 nginx exe"?
谢谢。
试试这个
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"
}
如果这不起作用,请尝试以下选项也用于命令
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"
编辑-1
因此,根据讨论,您的nginx配置似乎具有基于相对文件夹的配置。当nginx从一个文件夹启动时,它也需要从同一个文件夹重新加载。因此,您需要更改为文件夹,然后执行重新加载命令。您应该尝试的两种格式是
command="cd '<NGINX FOLDER PATH>' && nginx -s reload"
或
command="cmd /k 'cd '<NGINX FOLDER PATH>' && nginx -s reload'"