Включение библиотек ~ / opt / lib в приложение Passenger Rails - PullRequest
5 голосов
/ 30 октября 2008

У меня проблемы с получением приложения rails на Dreamhost's Passenger, чтобы увидеть скомпилированные библиотеки в моем каталоге ~ / opt / lib. Я должен поместить их здесь, потому что у меня нет доступа с правами root.

Я могу загрузить свое приложение в ./script/console, и он прекрасно видит их библиотеки, потому что я обновил переменную окружения .bash_profile LD_LIBRARY_PATH, добавив ~ / opt / lib.

Я пытался поместить ENV['LD_LIBRARY_PATH'] = '~/opt/lib' в свой файл environment.rb, но это не слишком помогает. Я получаю следующую ошибку от Пассажира при переходе на мой сайт: libodbcinst.so.1: невозможно открыть общий объектный файл: нет такого файла или каталога - /home/username/opt/lib/odbc.so

Кто-нибудь имеет опыт работы с этим?

Спасибо

Ответы [ 4 ]

2 голосов
/ 31 октября 2008

У меня была похожая проблема с пассажиром, которую я описал в http://blog.rayapps.com/2008/05/21/using-mod_rails-with-rails-applications-on-oracle/

Но в вашем случае это не работает, так как вы не сможете изменить файл Dreamhost httpd.conf.

Другая вещь, которую вы можете попробовать, - установить LD_LIBRARY_PATH в .bashrc - в соответствии с http://www.wavethenavel.com/jonathanpenn/2008/09/08/bootstrapping-a-dreamhost-account-for-rails-and-git/ это сработало в случае Dreamhost. Не проверено, что Пассажир выполнит .bashrc перед запуском ruby.

1 голос
/ 08 января 2009

Использование .bashrc не будет работать, так как путь к библиотеке, который использует Passenger, - это тот, который Apache загружает при загрузке. Нет никакого способа посмотреть каталог пользователя, так как это будет серьезной проблемой безопасности.

0 голосов
/ 16 октября 2011

Это старая ветка, но для полноты вот как можно достичь своей цели:

  1. Не устанавливайте LD_LIBRARY_PATH, если это возможно - это ужасно.
  2. Поскольку у вас нет контроля над средой, что Apache пользовательская среда, пытаясь установить переменную LD_LIBRARY_PATH en per описанные выше методы не будут работать в любом случае.
  3. Задайте переменную среды LDFLAGS с флагами пути и записи, установленными до компиляции файлов библиотеки, для установки правильных путей поиска - например,

    export LDFLAGS = "- L $ HOME / opt / lib -R $ HOME / opt / lib"

После компиляции файлы будут иметь правильные ссылки на соответствующие библиотеки. Вы можете проверить это с помощью инструмента командной строки ldd - например ::

ldd /$HOME/your/custom/complied/library/file.so
0 голосов
/ 10 января 2009

путь environment.rb звучит как путь, хотя вы можете добавить к LD_LIBRARY_PATH вместо этого. Также я на всякий случай должен использовать полный путь к этому каталогу.

В качестве альтернативы вы можете использовать директивы .htaccess, аналогичные описанным @ http://wiki.rubyonrails.org/rails/pages/HowToUseOracleWithFastCGI

...