2015-03-12

passengerを利用していてログにpassenger_native_support.soがどうのこのと書いてあったときのこと

このエントリーをブックマークに追加 このエントリーを含むはてなブックマーク
passenger4以上では、複数のバージョンのrubyを混在させて利用できるようになっています。

passengerでrubyバージョンを混在させる方法は、以下を参照してください。
http://y-ken.hatenablog.com/entry/how-to-use-multiple-ruby-version-in-one-apache-passenger

railsアプリをサブディレクトリ毎にいくつか配置していて、rbenvを利用してそのrailsアプリ毎にrubyのバージョンを変えて使っていたりしています。

で、apacheのerror_logに時折、以下のようなメッセージが表示されていました。

App 7405 stderr:  --> Compiling passenger_native_support.so for the 
current Ruby interpreter...
App 7405 stderr: 
App 7405 stderr:      (set PASSENGER_COMPILE_NATIVE_SUPPORT_BINARY=0 to 
disable)
App 7405 stderr: 
App 7405 stderr:  --> Downloading precompiled passenger_native_support.
so for the current Ruby interpreter...
App 7405 stderr: 
App 7405 stderr:      (set PASSENGER_DOWNLOAD_NATIVE_SUPPORT_BINARY=0 to 
disable)
App 7405 stderr: 
App 7405 stderr:      Could not download https://oss-binaries.phusionpassenger.com/binaries/passenger/by_release/4.0.59/rubyext-ruby-2.1.2-x86_64-linux.tar.gz: The requested URL returned error: 404
App 7405 stderr:      Trying next mirror...
App 7405 stderr:      Could not download https://s3.amazonaws.com/phusion-passenger/binaries/passenger/by_release/4.0.59/rubyext-ruby-2.1.2-x86_64-linux.tar.gz: The requested URL returned error: 403
App 7405 stderr:  --> Continuing without passenger_native_support.so.

別に普通に使えていたので、ほったらかしいたのですが、
ふと/tmpの下を見たら
passenger_native_support-1q5o6tj.log
というファイルができていて、その中身を見たら以下のような内容が出ていました。

# mkdir -p /usr/local/lib/ruby/gems/1.9.1/gems/passenger-4.0.59/buildout/ruby/ruby-2.1.2-x86_64-linux
Encountered permission error, trying a different directory...
-------------------------------
# mkdir -p /var/www/.passenger/native_support/4.0.59/ruby-2.1.2-x86_64-linux
Encountered permission error, but no more directories to try. Giving up.

私の環境では、apacheをapacheユーザで運用していたのですが、
/var/www/
のオーナーがrootになっていました。
そこで
mkdir /var/www/.passenger
chown apache:apache /var/www/.passenger
としてapacheを再起動したら、上記のメッセージが出なくなりました。

そして
/var/www/.passenger/native_support/4.0.59/ruby-2.1.2-x86_64-linux
の中に
passenger_native_support.so
が確かにできていました。

メッセージが出ているだけで、特に動きに支障はなかったのですが、気にはなっていたので解決できてよかったです。