I am working on a God script to monitor my Unicorns. I started with GitHub's examples script and have been modifying it to match my server configuration. Once God is running, commands such as god stop unicorn
and god restart unicorn
work just fine.
However, god start unicorn
results in WARN: unicorn start command exited with non-zero code = 1
. The weird part is that if I copy the start script directly from the config file, it starts right up like a brand new mustang.
This is my start command:
/usr/local/bin/unicorn_rails -c /home/my-linux-user/my-rails-app/config/unicorn.rb -E production -D
I have declared all paths as absolute in the config file. Any ideas what might be preventing this script from working?
I haven't used unicorn as an app server, but I've used god for monitoring before.
If I remember rightly when you start god and give your config file, it automatically starts whatever you've told it to watch. Unicorn is probably already running, which is why it's throwing the error.
Check this by running
god status
once you've started god. If that's not the case you can check on the command line what the comand's exit status is:/usr/local/bin/unicorn_rails -c /home/my-linux-user/my-rails-app/config/unicorn.rb -E production -D;
echo $?;
that echo will print the exit status of the last command. If it's zero, the last command reported no errors. Try starting unicorn twice in a row, I expect the second time it'll return 1, because it's already running.
EDIT:
including the actual solution from comments, as this seems to be a popular response:
You can set an explicit user and group if your process requires to be run as a specific user.
Add the log option has helped me greatly in debugging.
In the end, my bug turned out to be the
start_script
in God was executed indevelopment
environment. I fixed this by appending theRAILS_ENV
to the start script.My problem was that I never bundled as root. Here is what I did:
You get a warning telling you to never do this:
But it was the only way I could get resque or unicorn to run with god. This was on an ec2 instance if that helps anyone.