2010年09月17日
Rails3 passenger install
rails2 から rails3 に環境構築してる際に passenger でつまずいたのでメモ。
rails3 で作成したアプリを本番環境で動かそうとした所、以下のエラーが出た。
むむむ、gems がまだ 1.8 の環境で動いている?
ruby を 1.9系 にして rails も 3系 にして gem も ruby1.9系 で作り直しているのになぁと考えていたら passneger のケアをしていないことに気がついた。
httpd.conf を見てみると 1.8系のままである。
ということで、改めて gem で passenger を install する。
インストーラーが入った模様。
passenger は、apache 用のインストールに、以下を実行しなければいけない。
で、これを実行するのだけれど passenger が gem1.8系としてインストールされる。
調べてみると自分の環境では、path が古い実行ファイルの方を優先していた。
以下の様に2つの実行ファイルが存在していたわけです。
で、この2つのファイルの違いは、以下の通り、version のみ。
これじゃあ 1.9系 でインストールされないわけだということで絶対パスで再度インストール開始
しかし、今度は途中で止まってしまう。
これは、rake.gemspec が邪魔していることが原因らしく以下の様に退避させたら解決した。
install が順調に進むと最後に以下の様なものが出力される。
これを httpd.conf に反映して apache を再起動したら、本番環境アプリが動きました。
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
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
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
/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
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 `'
--------------------------------------------
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.
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 を再起動したら、本番環境アプリが動きました。
【(カテゴリなし)の最新記事】
投稿者:tech|00:27