アフィリエイト広告を利用しています

広告

posted by fanblog

Rails3 passenger install

rails2 から rails3 に環境構築してる際に passenger でつまずいたのでメモ。

rails3 で作成したアプリを本番環境で動かそうとした所、以下のエラーが出た。
/Library/Ruby/Site/1.8/rubygems/custom_require.rb 31 in `gem_original_require'
1 /Library/Ruby/Site/1.8/rubygems/custom_require.rb 31 in `require'
2 /Library/Ruby/Gems/1.8/gems/passenger-2.2.15/lib/phusion_passenger/utils.rb 221 in `setup_bundler_support'
3 /Library/Ruby/Gems/1.8/gems/passenger-2.2.15/lib/phusion_passenger/rack/application_spawner.rb 105 in `run'
4 /Library/Ruby/Gems/1.8/gems/passenger-2.2.15/lib/phusion_passenger/utils.rb 323 in `report_app_init_status'
5 /Library/Ruby/Gems/1.8/gems/passenger-2.2.15/lib/phusion_passenger/rack/application_spawner.rb 87 in `run'
6 /Library/Ruby/Gems/1.8/gems/passenger-2.2.15/lib/phusion_passenger/rack/application_spawner.rb 65 in `spawn_application'
7 /Library/Ruby/Gems/1.8/gems/passenger-2.2.15/lib/phusion_passenger/utils.rb 252 in `safe_fork'
8 /Library/Ruby/Gems/1.8/gems/passenger-2.2.15/lib/phusion_passenger/rack/application_spawner.rb 58 in `spawn_application'
9 /Library/Ruby/Gems/1.8/gems/passenger-2.2.15/lib/phusion_passenger/rack/application_spawner.rb 41 in `spawn_application'
10 /Library/Ruby/Gems/1.8/gems/passenger-2.2.15/lib/phusion_passenger/spawn_manager.rb 150 in `spawn_application'
11 /Library/Ruby/Gems/1.8/gems/passenger-2.2.15/lib/phusion_passenger/spawn_manager.rb 278 in `handle_spawn_application'
12 /Library/Ruby/Gems/1.8/gems/passenger-2.2.15/lib/phusion_passenger/abstract_server.rb 352 in `__send__'
13 /Library/Ruby/Gems/1.8/gems/passenger-2.2.15/lib/phusion_passenger/abstract_server.rb 352 in `main_loop'
14 /Library/Ruby/Gems/1.8/gems/passenger-2.2.15/lib/phusion_passenger/abstract_server.rb 196 in `start_synchronously'
15 /Library/Ruby/Gems/1.8/gems/passenger-2.2.15/bin/passenger-spawn-server 61


むむむ、gems がまだ 1.8 の環境で動いている?
ruby を 1.9系 にして rails も 3系 にして gem も ruby1.9系 で作り直しているのになぁと考えていたら passneger のケアをしていないことに気がついた。

httpd.conf を見てみると 1.8系のままである。
LoadModule passenger_module /Library/Ruby/Gems/1.8/gems/passenger-2.2.10/ext/apache2/mod_passenger.so
PassengerRoot /Library/Ruby/Gems/1.8/gems/passenger-2.2.10
PassengerRuby /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/bin/ruby

ということで、改めて gem で passenger を install する。
% sudo gem install passenger

インストーラーが入った模様。
passenger は、apache 用のインストールに、以下を実行しなければいけない。
passenger-install-apache2-module

で、これを実行するのだけれど passenger が gem1.8系としてインストールされる。
調べてみると自分の環境では、path が古い実行ファイルの方を優先していた。
以下の様に2つの実行ファイルが存在していたわけです。
/usr/bin/passenger-install-apache2-module
/opt/local/bin/passenger-install-apache2-module

で、この2つのファイルの違いは、以下の通り、version のみ。
% diff /usr/bin/passenger-install-apache2-module.bk /opt/local/bin/passenger-install-apache2-module
1c1
< #!/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/bin/ruby
---
> #!/opt/local/bin/ruby1.9

これじゃあ 1.9系 でインストールされないわけだということで絶対パスで再度インストール開始
% sudo /opt/local/bin/passenger-install-apache2-module

しかし、今度は途中で止まってしまう。
--------------------------------------------
Compiling and installing Apache 2 module...
cd /opt/local/lib/ruby1.9/gems/1.9.1/gems/passenger-2.2.15
/opt/local/bin/ruby1.9 -S /opt/local/bin/rake clean apache2
# /opt/local/bin/ruby1.9 -S /opt/local/bin/rake clean apache2
/opt/local/lib/ruby1.9/1.9.1/rubygems.rb:340:in `bin_path': can't find executable rake for rake-0.8.7 (Gem::Exception) from /opt/local/bin/rake:19:in `
'
--------------------------------------------

これは、rake.gemspec が邪魔していることが原因らしく以下の様に退避させたら解決した。
mv /opt/local/lib/ruby1.9/gems/1.9.1/specifications/rake.gemspec /opt/local/lib/ruby1.9/gems/1.9.1/specifications/rake.gemspec.bk

install が順調に進むと最後に以下の様なものが出力される。
--------------------------------------------
The Apache 2 module was successfully installed.

Please edit your Apache configuration file, and add these lines:

LoadModule passenger_module /opt/local/lib/ruby1.9/gems/1.9.1/gems/passenger-2.2.15/ext/apache2/mod_passenger.so
PassengerRoot /opt/local/lib/ruby1.9/gems/1.9.1/gems/passenger-2.2.15
PassengerRuby /opt/local/bin/ruby1.9

After you restart Apache, you are ready to deploy any number of Ruby on Rails
applications on Apache, without any further Ruby on Rails-specific
configuration!

Press ENTER to continue.


--------------------------------------------
Deploying a Ruby on Rails application: an example

Suppose you have a Rails application in /somewhere. Add a virtual host to your
Apache configuration file and set its DocumentRoot to /somewhere/public:


ServerName www.yourhost.com
DocumentRoot /somewhere/public # <-- be sure to point to 'public'!

AllowOverride all # <-- relax Apache security settings
Options -MultiViews # <-- MultiViews must be turned off



And that's it! You may also want to check the Users Guide for security and
optimization tips, troubleshooting and other useful information:

/opt/local/lib/ruby1.9/gems/1.9.1/gems/passenger-2.2.15/doc/Users guide Apache.html

Enjoy Phusion Passenger, a product of Phusion (www.phusion.nl) :-)
http://www.modrails.com/

Phusion Passenger is a trademark of Hongli Lai & Ninh Bui.


これを httpd.conf に反映して apache を再起動したら、本番環境アプリが動きました。
   
×

この広告は30日以上新しい記事の更新がないブログに表示されております。