Pregunta

Estoy trabajando en un guión de Dios para monitorear mi unicornios. Empecé con la escritura ejemplos de GitHub y han modificado para que coincida con la configuración de mi servidor. Una vez que Dios se está ejecutando, comandos como god stop unicorn y el trabajo god restart unicorn bien.

Sin embargo, god start unicorn resulta en WARN: unicorn start command exited with non-zero code = 1. La parte extraña es que si copio el script de inicio directamente desde el archivo de configuración, se pone en marcha a la derecha como un nuevo Mustang.

Esta es mi comando de arranque:

/usr/local/bin/unicorn_rails -c /home/my-linux-user/my-rails-app/config/unicorn.rb -E production -D

Me han declarado todos los caminos como absoluta en el archivo de configuración. Alguna idea de lo podrían estar impidiendo que este script funcione?

¿Fue útil?

Solución

No he utilizado unicornio como un servidor de aplicaciones, pero he utilizado para el seguimiento de dios antes.

Si no recuerdo mal cuando se empieza a Dios y darle a su archivo de configuración, automáticamente se inicia lo que he dicho que a ver. Unicornio es probable que ya en funcionamiento, por lo que está lanzando el error.

comprobarlo ejecutando god status vez que haya comenzado a Dios. Si ese no es el caso, se puede comprobar en la línea de comandos lo que el código de salida del COMAND es:

/usr/local/bin/unicorn_rails -c /home/my-linux-user/my-rails-app/config/unicorn.rb -E production -D; echo $?;

eco que va a imprimir el estado de salida del último comando. Si es cero, el último comando informa de ningún error. Trate de comenzar unicornio dos veces en una fila, espero que la segunda vez que va a regresar 1, porque ya está en marcha.

EDIT:

incluyendo la solución real a partir de los comentarios, ya que esto parece ser una respuesta popular:

Se puede configurar una explícita del usuario y de grupo si su proceso requiere que se ejecute como un usuario específico.

God.watch do |w|
  w.uid = 'root'
  w.gid = 'root'

  # remainder of config
end

Otros consejos

Mi problema era que nunca he liado como root. Esto es lo que hice:

sudo bash
cd RAILS_ROOT
bundle

Aparece una advertencia que le indica que no hacer esto:

  

No ejecute Bündler como root. Bundler puede pedir sudo si es necesario,   y la instalación de su paquete como root se romperá esta aplicación para todos   los usuarios no root en esta máquina.

Pero era la única manera que podría conseguir resque o Unicorn para funcionar con Dios. Esto fue en una instancia EC2 si eso ayuda a nadie.

Añadir la opción de registro me ha ayudado mucho en la depuración.

God.watch do |w|
  w.log = "#{RAILS_ROOT}/log/god.log"

  # remainder of config
end

Al final, mi error resultó ser el start_script en Dios fue ejecutado en el entorno development. He arreglado esto añadiendo el RAILS_ENV a la secuencia de comandos de inicio.

start_script = "RAILS_ENV=#{ENV['RACK_ENV']} bundle exec sidekiq -P #{pid_file} -C #{config_file} -L #{log_file} -d"
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top