Question

Je travaille sur un script Dieu pour surveiller mon licornes. J'ai commencé avec le script exemples de GitHub et ont modifié pour correspondre à ma configuration du serveur. Une fois que Dieu est en cours d'exécution, des commandes telles que god stop unicorn et le travail de god restart unicorn très bien.

Cependant, god start unicorn résulte WARN: unicorn start command exited with non-zero code = 1. La partie étrange est que si je copie le script de démarrage directement à partir du fichier de configuration, il commence juste comme une nouvelle marque mustang.

Ceci est mon ordre de démarrage:

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

J'ai déclaré que tous les chemins absolus dans le fichier de configuration. Toutes les idées que pourraient empêcher ce script de travail?

Était-ce utile?

La solution

Je n'ai pas utilisé licorne comme un serveur d'applications, mais je l'ai utilisé pour la surveillance de Dieu avant.

Si je me souviens bien quand vous commencez à Dieu et donnez votre fichier de configuration, automatiquement commence tout ce que vous avez dit à regarder. Unicorn est probablement déjà en cours d'exécution, ce qui est pourquoi il est jeter l'erreur.

Vérifier en exécutant god status une fois que vous avez commencé à Dieu. Si ce n'est pas le cas, vous pouvez vérifier sur la ligne de commande que l'état de sortie du COMAND est:

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

l'écho imprimera l'état de sortie de la dernière commande. S'il est égal à zéro, la dernière commande a signalé aucune erreur. Essayez de commencer licorne deux fois de suite, j'attends la deuxième fois que ça va revenir 1, car il est déjà en cours d'exécution.

EDIT:

y compris la solution réelle de commentaires, comme cela semble être une réponse populaire:

Vous pouvez définir un utilisateur explicite et le groupe si votre processus nécessite d'être exécuté en tant qu'utilisateur spécifique.

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

  # remainder of config
end

Autres conseils

Mon problème était que je n'empaqueté en tant que root. Voici ce que je faisais:

sudo bash
cd RAILS_ROOT
bundle

Vous obtenez un avertissement vous disant de ne jamais faire ceci:

  

Ne pas exécuter Bundler en tant que root. Bundler peut demander si elle est sudo nécessaire,   et l'installation de votre paquet en tant que root brisera cette application pour tous   les utilisateurs non root sur cette machine.

Mais ce fut la seule façon que je pouvais obtenir resque ou licorne courir avec Dieu. Ce fut sur une instance EC2 si cela aide tout le monde.

Ajoutez l'option de journal m'a beaucoup aidé dans le débogage.

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

  # remainder of config
end

En fin de compte, mon bug est avéré être le start_script en Dieu a été exécuté dans un environnement de development. Je fixe cela en ajoutant le RAILS_ENV au script de démarrage.

start_script = "RAILS_ENV=#{ENV['RACK_ENV']} bundle exec sidekiq -P #{pid_file} -C #{config_file} -L #{log_file} -d"
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top