Passenger: cannot open shared object file

Phusion Passenger で Rails アプリケーションを動かす際、RMagickが必要とする共有オブジェクトファイル(libMagickCore.so)をオープンできない、というエラーに遭遇。

このファイルは /usr/local/lib にあり、環境変数 LD_LIBRARY_PATH にこのパスをセットすればいいのだが、httpd.conf で環境変数をセットしても効かない。

こんな場合、ラッパースクリプトを作るのが定石なんだそうだ。

まず、/opt/ruby-enterprise-1.8.6-20090421/bin/ruby_wrapper を次のような内容で作る(パーミッションを755にするのを忘れないように!)。


!/bin/sh
export LD_LIBRARY_PATH=/usr/local/lib
"/opt/ruby-enterprise-1.8.6-20090421/bin/ruby" "$@"

そして、httpd.conf にこんな風に書く。


PassengerRuby /opt/ruby-enterprise-1.8.6-20090421/bin/ruby_wrapper

このようにすれば、Railsアプリケーションの起動前に環境変数をセットできる。

参考文献: