Определите дополнительный `$ PATH` для Passenger или nginx

338
berkes

У меня есть сервер с nginx и Passenger, обслуживающий приложение Ruby on Rails. Он использует Bundler.

Где-то в этом стеке $PATHустанавливается значение /var/www/APPNAME/shared/bundle/ruby/1.8/bin/. Этот каталог действительно содержит исполняемые гемы.

Но мне нужно, чтобы моя заявка также была /usr/binдоступна $PATH. Более конкретно: мне нужно, чтобы он мог работать idendtify, convertи mogrify; команды imagemagick.

На данный момент, я символизировал эти двоичные файлы imagemagick из /var/www/APPNAME/shared/bundle/ruby/1.8/bin/:

ls /var/www/APPNAME/shared/bundle/ruby/1.8/bin/ -ahl #... lrwxrwxrwx 1 root root 16 May 8 16:22 convert -> /usr/bin/convert -rwxr-xr-x 1 ber root 379 Jan 11 08:58 erubis #... 

Это скорее быстрый взлом, чем реальное решение.

Как я могу назначить дополнительные каталоги $PATH? И где мне это сделать? Пассажир, nginx, приложение Rails?

1

1 ответ на вопрос

1
vgoff

The ruby options are a good way to do this. Specify that the $LOAD_PATH have /usr/bin.

-Idirectory specify $LOAD_PATH directory (may be used more than once) 

It is what it is there for, after all.

Another thing you can do is push the directory onto the $: global psuedo-variable.

$:.push("/usr/bin") 

This would fit wherever you have your environment customization in your application.

I would probably do this for the Rails Application itself, as that is where you are concerned about it. It is what you have control over.

Спасибо! У меня есть доступ ко всему стеку (как я сам его установил), хотя я больше всего знаком с приложением Ruby. Однако здесь запущено больше приложений, поэтому я бы предпочел настроить их как можно ниже в стеке: nginx или passenger. И не (как сейчас) взломали Bundle :). berkes 10 лет назад 0
Когда я сказал, что это то, что вы контролируете, я говорил о камнях, которые вы используете. Драгоценные камни обновляются и могут перезаписывать ваши настройки. Приложение, которое вы пишете, находится под вашим контролем, и изменения такого типа не будут перезаписаны. Это было то, что я имею в виду. vgoff 10 лет назад 0
Я бы, наверное, посмотрел на добавление пути к файлу .bashrc. vgoff 10 лет назад 0
.bashrc? У пользователя www-data нет оболочки, не так ли? Или я что-то упустил? berkes 10 лет назад 0
www-data: x: 33: 33: www-data: / var / www: / bin / sh в моей системе и имеет / bin / sh в качестве оболочки для выполнения своей работы ... vgoff 10 лет назад 1

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