После нескольких часов попыток (а также попыток Бога и Bluepill) я решил задать свой вопрос здесь, потому что совершенно не знаю, как решить эту проблему.
У меня есть приложение Rails.Я хочу использовать Thin в качестве сервера приложений.Я хочу использовать Monit для мониторинга моих тонких экземпляров.Я использую RVM для управления своими версиями Ruby в качестве локального пользователя.
У меня настроен следующий файл monit, который предположительно будет делать то, что я хочу, но не:
check process thin-81
with pidfile /Users/Michael/Desktop/myapp/tmp/pids/thin.81.pid
start program = "/Users/Michael/.rvm/gems/ruby-1.9.2-p180/bin/thin start -c /Users/Michael/Desktop/myapp -e production -p 81 -d -P tmp/pids/thin.81.pid"
stop program = "/Users/Michael/.rvm/gems/ruby-1.9.2-p180/bin/thin stop -c /Users/Michael/Desktop/myapp -P tmp/pids/thin.81.pid"
if totalmem is greater than 150.0 MB for 2 cycles then restart
Если я просто скопирую / вставлю start program
в командную строку (за пределами Monit), это сработает.То же самое касается stop program
, чтобы потом остановить экземпляр Thin.Однако запуск его через Monit, похоже, не работает.
Запуск в режиме подробного -v
дает следующее:
monit: pidfile '/Users/Michael/Desktop/myapp/tmp/pids/thin.81.pid' does not exist
Что заставляет меня поверить, что Thin никогда не инициализируется.Монит работает как root
или как?Потому что, если это произойдет, то, очевидно, на нем не будут установлены правильные гемы, так как я использую RVM, а не "системный" Ruby.Я в настоящее время на OSX (но в конечном итоге будет развернут на Linux) - кто-нибудь знает, что может быть причиной этого?И если Monit запускается через root, как я могу заставить его использовать RVM независимо?Или я мог бы попросить Monit выполнить программы запуска / остановки как Michael:staff
(я полагаю, это будет в OSX?)
Любая помощь очень ценится!