2009-01-10 9 views
18

Tengo una receta de implementación de capistrano que he estado usando durante algún tiempo para implementar mi aplicación web y luego reinicio apache/nginx usando el comando sudo. Recientemente, el despliegue de límite se bloquea cuando intento ejecutar estos comandos sudo. Veo el resultado: "[sudo] contraseña para" Con mi nombre de servidor y el inicio de sesión remoto, pero este no es un aviso de inicio de sesión seguro. El caparazón de tapa está colgando esperando más salida y no me permite ingresar mi contraseña para completar el comando remoto sudo.Capistrano se cuelga cuando solicita la contraseña de SUDO a un buzón de Ubuntu

¿Hay alguna manera de arreglar esto o un trabajo decente? No quería eliminar la solicitud de contraseña de sudo de mi usuario remoto para los comandos de reinicio web.

Respuesta

32

Esto parece suceder cuando se conecta a máquinas CentOS también. Agregue la siguiente línea en su archivo de despliegue Capistrano:

default_run_options[:pty] = true 

También asegúrese de usar el ayudante sudo en lugar de ejecutar en su sudo ejecutar comandos directamente. Por ejemplo:

# not 
run "sudo chown root:root /etc/my.cnf" 

# but 
sudo "chown root:root /etc/my.cnf" 
+13

'sudo' ahora es obsoleto, por lo que su lugar debe hacer' run "# {} sudo chown root: /etc/my.cnf raíz" '' – axsuul

+0

O utilice invoke_command' por ejemplo, 'invoke_command" chown root: root /etc/my.cnf ",: via => run_method'. Donde run_method define sudo (o no, dependiendo de tu 'set: use_sudo, true/false') –

2

El otro consejo puede ser bueno, pero encontré que una vez que actualicé a Capistrano 2.5.3 el problema desapareció. Tengo que asegurarme de dejar de ejecutar las versiones predeterminadas de las herramientas que vienen con mi O/S.

+0

' Tengo que asegurarme de dejar de ejecutar las versiones predeterminadas de las herramientas que vienen con mi O/S. Me detendría para usar esa pila de software inestable y comienza a usar las herramientas que viene con su sistema operativo – hek2mgl

2
# prevent sudo prompting for password 
set :sudo_prompt, "" 
+5

no solo oculta la solicitud de contraseña de sudo? http://rubydoc.info/github/capistrano/capistrano/master/Capistrano/Configuration/Actions/Invocation#sudo_prompt-instance_method –

Cuestiones relacionadas