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アプリケーションの起動前に環境変数をセットできる。
参考文献: