Хитрость процессов, которые запускаются в системе, состоит в том, чтобы убедиться, что части, о которых вы заботитесь, запускаются с теми же разрешениями и пользователем / группой, что и при первоначальной настройке.Предполагая систему Linux, процессы, которые запускаются при загрузке, запускаются в /etc/init/d/<script>
и запускаются пользователем root (по умолчанию) во время загрузки.Вы можете изменить свой сценарий на запуск, используя su
для запуска в качестве отдельного пользователя - на самом деле большинство серверных процессов в любом случае делают что-то подобное, поэтому они запускаются в защищенной пользовательской среде.
Между тем RVM предназначен для запуска какпроцесс для каждого пользователя.Несколько месяцев назад я пытался настроить сервер с RVM, работающим глобально, и я думаю, что это было своего рода противодействие RVM.Таким образом, в нашем случае мы убедились, что наш веб-сервер (в нашем случае Apache, но у Nginx такая же опция) запущен, чтобы его дочерние процессы - те, которые фактически обрабатывали веб-запросы, запускались как тот же пользователь, для которого был RVM.сконфигурировано.Альтернативой может быть предоставление групповой записи прав доступа пользователям Nginx и RVM, но это больше работы.
Другая проблема с RVM заключается в том, что его мир создается при запуске сценария оболочки - обычно этоСценарий ~ / .bash_profile и, следовательно, любой сервер, которому необходимо иметь ту же среду, может захотеть работать в этой оболочке.
Все это звучит очень сложно, но на практике для нас, по крайней мере, создание пользователяучетная запись, из-за которой запускались приложения, и установка RVM от имени этого пользователя с небольшой другой настройкой заставила все это «просто работать», особенно в тех случаях, когда вы используете rake, bundle, capistrano и другие вещи.
Извините, это немного более общее, чем я ожидал, но, может быть, это полезно ...