/ / Ejecute nginx exe en la carpeta con -s reload args Consul template Windows - nginx, consul, consul-template

Ejecute nginx exe en la carpeta con -s reload args Consul template Windows - nginx, consul, consul-template

Estoy usando Consul Template V0.19.0 para ventanas, para renderizar nginx loadbalancing config. Funciona como se esperaba.

Ahora quiero que la plantilla de cónsul ejecute el nginx exe en una carpeta con args (-s reload) como se muestra a continuación:

Caso 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"
}

Pero arroja un error como "no se pudo ejecutarcomando "F: IDEVisual Studio CollectionWeb Serversnginx-1.12.0nginx-1.12.0nginx.exe" desde "Template / template.ctmpl" => "F: IDEVisual Studio CollectionWeb Serversnginx-1.12.0nginx-1.12.0confnginx.conf": niño: exec: "F: IDEVisual": el archivo no existe ".

Caso 2: - Actualmente lo he logrado haciendo el nginx como servicio (usando nssm) y le di el comando como,

command = "powershell restart-service nginx"

en lugar de dar la ruta completa seguida de "-s reload".

Pero para esto, tengo que hacer el nginx como un servicio usando aplicaciones como nssm.

Puedo saber, ¿hay alguna forma de decirle al atributo del comando en la configuración de la plantilla del cónsul que "ejecute el nginx exe en la carpeta como en el Caso 1"?

Gracias.

Respuestas

0 para la respuesta № 1

Prueba esto

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"
}

Si eso no funciona, pruebe las siguientes opciones también para el comando

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

o

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

Edit-1

Entonces, según la discusión, parece que sunginx config tiene una configuración relativa basada en carpetas. Cuando nginx se inicia desde una carpeta, también debe volver a cargarse desde la misma carpeta. Por lo tanto, debe cambiar a la carpeta y luego ejecutar el comando de recarga. Dos formatos que debes probar son

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

o

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