RVM и тонкий, базируйтесь по сравнению с локальным пользователем

Таким образом, я пытаюсь стать худым для выполнения как услуга с RVM. После a thin install Я вручную обновил /etc/init.d/thin использовать su - user когда выполнение конфигурации управляет так, чтобы тонкий работал как локальный пользователь, вместо того, чтобы базироваться.Пока все хорошо.

Теперь, когда я пытаюсь sudo service thin start похоже, что это пытается использовать non-RVM версию Ruby (1.8.7, который был установлен на поле для запуска с) на самом деле выполнить команду. Я сделал a gem install thin на non-RVM версии, которая затем получает меня a uninitialized constant Bundler сообщение — Bundler только установлен в драгоценных камнях RVM, не системных драгоценных камнях. Похоже, что я не могу разбудить набор среды RVM (даже при том, что мой сценарий запуска RVM находится в ~/.bashrc, который затем включен в ~/.bash_profile).

Все, что я хочу сделать, выполняется тонкое как услуга использование среды RVM, не системной среды. Это даже возможно? Я должен просто сдаться и фиксировать окончательный грех выполнения всего как корень? Это очень заманчиво в этой точке.

Спасибо за любую справку!

26
задан Rob Cameron 12 July 2010 в 16:48
поделиться

1 ответ

RVM поставляется с удобным генератором оболочки, который создает промежуточный загрузчик для сценария init.d. Это позволяет загружать сервис, используя определенную версию Ruby и гемсет. Я использую его так (после установки тонкого драгоценного камня):

1 - создать запись init.d для тонкого

sudo thin install 

2 - установить некоторые значения по умолчанию

sudo /usr/sbin/update-rc.d -f thin defaults 

3 - создать конфигурацию загрузки для вашего приложения rails

sudo thin config -C /etc/thin/<appname>.yml -c /var/rails/<appdir> --servers 4 -e production

4 - сгенерировать сценарий оболочки rvm

rvm wrapper <rubyversion>@<gemset> bootup thin

5 - Если вы используете глобальный гемсет, вы можете просто использовать

rvm wrapper ruby-1.9.2-p125 bootup thin

6 - отредактировать тонкий init

sudo nano /etc/init.d/thin

7 - изменить исходный загрузчик

DAEMON=/usr/local/rvm/gems/ruby-<rubyversion>-<rubyrevision>@<gemset>/bin/thin

8 - чтобы указать на rvm вместо обертки

DAEMON=/usr/local/bin/bootup_thin

9 - запустить

sudo service thin start

Если вы запускаете несколько приложений, просто сгенерируйте yml-файл конфигурации загрузки для каждого из них; при загрузке thin все yml файлы в / etc / thin / анализируются. Дополнительная информация здесь:

http://wiki.rubyonrails.org/deployment/nginx-thin?rev=1233246014 Примечание: это ссылка на ревизию, самая последняя версия была отредактирована, чтобы быть пустой. Рассмотрите возможность просмотра ссылки без ? Rev = ... в URL-адресе, текущая версия может быть верной и потенциально более актуальной.

HTH

2013 BONUS EDIT

Хотя я больше не использую RVM в производственной среде, я по-прежнему предпочитаю тонкий рабочий сервер, и я все еще использую шаги 1–3, описанные выше, чтобы начать работу.Но в генерируемую им конфигурацию по умолчанию можно внести несколько изменений, вот некоторые из моих:

Установите пользователя и группу, которые должны работать в тонком режиме, как:

user: www-data
group: www-data

Удалите конфигурацию порта и вместо этого переключитесь на использование сокетов (немного быстрее) :

# port: 3000
socket: tmp/sockets/<appname>.sock

Укажите тонкому перезапуску экземпляров один за другим, вместо того, чтобы выключать их все перед повторным запуском (скользящий перезапуск):

onebyone: true

Дайте серверным процессам «тег», чтобы помочь их идентифицировать (в ps aux и т. Д.):

tag: <appname>
84
ответ дан 28 November 2019 в 06:03
поделиться
Другие вопросы по тегам:

Похожие вопросы: