Спасибо, Иван, как раз по этой статье, но на вашем блоге недавно собирал. Были ряд сложностей, так как nginx у меня уже был настроенный с php-fpm, и ruby 1.8.7 почему-то не дособрал нормально коннектор к libxml, но в целом всё решилось.
Кстати с Unicorn очень даже производительное решение выходит и удобное.
Волнует вот какой вопрос, к примеру запустил я unicorn от пользователя vasya:host значит и Ruby будет работать от него.
А вот если я команду на запуск прописал в /etc/rc.local от кого будет запуск? Извините за невежество :)
Насколько я знаю, rc.local запускается от рута.
Я бы в вашей ситуации написал bash скрипт, который проверяет запущен ли демон и если нет, то переходил в нужную директорию и запускал unicorn. И поставил бы его в кронтаб от нужного пользователя.
Таким образом убилось бы 2 зайца: запуск от нужного пользователя и мониторинг.
Мне кажется с кронтабом не очень кошерно. Вот пример как можно через init скрипт сделать. Они там создают не привилегированного юзера и используют su, что бы запустить под ним.
для запуска unicorn удобно использовать тулзу Runit. Запускать можно от любого юзера плюс Runit сам мониторит состояние процесса и перезапускает при необходимости
Насколько я знаю, rc.local запускается от рута.
Я бы в вашей ситуации написал bash скрипт, который проверяет запущен ли демон и если нет, то переходил в нужную директорию и запускал unicorn. И поставил бы его в кронтаб от нужного пользователя.
Таким образом убилось бы 2 зайца: запуск от нужного пользователя и мониторинг.
Эм и все равно не понятно. В топике представлено куча инструментов, и не думаю, что virtualenv их все реализует. Я всегда считал что virtualenv и RVM примерно равны по ф-ционалу.
У нас есть ТАКИЕ приборы, но мы вам про них не расскажем! (с) Манго-Манго :) Поделились бы, особенно если есть практический опыт и с тем и с тем. А то иначе, это еще скатиться к холивару Pyhton vs ruby, чего бы мне не хотелось.
И как бы не спорю, мне и правда интересно, чем virtualenv. Может проникнусь и каким нить костылем такой же ф-уионал в RVM приделаю.
спасибо за развернутый ответ. Теперь понятна ваша точка зрения. Но кроме
1) использовать pre/post workon/deactivate хуки.
2) 'make virtualenv portable',
и по духу и по умениям оба инструмента выглядят очень похожими. Мне в целом ясно. Если про 1) еще подробней расскажете (когда и для чего это полезно), то буду совсем рад :)
А через виртуализацию не проще ли такую задачу решить? Здесь достаточно виртуализации на уровне операционной системы (OpenVZ, jails, zones); «тяжелые» системы, подобные VMware, не потребуются.
Поднимаем на одном сервере несколько Ruby on Rails проектов под разными версиями ruby (Nginx + Unicorn)