Last Updated 2010-10-24
gemでPassenger 3.0をインストールします
# gem install passenger
Passenger 3.0では前と変わったのか、上記でapache用モジュールがデフォルトでインストール されていませんでした。そのため、以下のドキュメントに沿ってapache2用モジュールの作成を行いました。
参照
現在の環境を確認
ruby は CentOS 5.5 64bit版の場合、yumでインストールするとバージョンが1.8.5なので、 最新の1.9.2をソースからコンパイルして、/usr/local/にインストールしています。 apacheはyumで標準インストールしています。
# which httpd /usr/sbin/httpd # httpd -version Server version: Apache/2.2.3 Server built: Aug 30 2010 12:28:40 # which apxs /usr/sbin/apxs # which ruby /usr/local/bin/ruby # ruby --version ruby 1.9.2p0 (2010-08-18 revision 29036) [x86_64-linux]
ドキュメントに沿ってapache2用のモジュールをインストールします。
# /usr/local/bin/passenger-install-apache2-module Welcome to the Phusion Passenger Apache 2 module installer, v3.0.0. This installer will guide you through the entire installation process. It shouldn't take more than 3 minutes in total. Here's what you can expect from the installation process: 1. The Apache 2 module will be installed for you. 2. You'll learn how to configure Apache. 3. You'll learn how to deploy a Ruby on Rails application. Don't worry if anything goes wrong. This installer will advise you on how to solve any problems. Press Enter to continue, or Ctrl-C to abort.Enterキーを押すとコンパイルが始まります。
・・・・・ ・・・・・ -------------------------------------------- The Apache 2 module was successfully installed. Please edit your Apache configuration file, and add these lines: LoadModule passenger_module /usr/local/lib/ruby/gems/1.9.1/gems/passenger-3.0.0/ext/apache2/mod_passenger.so PassengerRoot /usr/local/lib/ruby/gems/1.9.1/gems/passenger-3.0.0 PassengerRuby /usr/local/bin/ruby 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.Enterキーを押すと
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: <:VirtualHost *:80> ServerName www.yourhost.com DocumentRoot /somewhere/public # <:-- be sure to point to 'public'! <:Directory /somewhere/public> AllowOverride all # <:-- relax Apache security settings Options -MultiViews # <:-- MultiViews must be turned off <:/Directory> <:/VirtualHost> And that's it! You may also want to check the Users Guide for security and optimization tips, troubleshooting and other useful information: /usr/local/lib/ruby/gems/1.9.1/gems/passenger-3.0.0/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.
railsのプロジェクト「testnw」の実体が以下にあるとします。
/var/rails/testnw
CentOSではDocumentRootが /var/www/html/ なので、そこからリンクを張ります
# cd /var/www/html/ # ln -s /var/rails/testnw/public/ testnw # ls -al 合計 20 drwxr-xr-x 2 root root 4096 9月 19 02:01 . drwxr-xr-x 9 root root 4096 8月 31 01:32 .. lrwxrwxrwx 1 root root 18 9月 19 02:01 testnw -> /var/rails/testnw/public/
http.confにpassenger用の設定ファイルを追加します。 CentOSではconf.dの下に作成したconfファイルは自動で読み込まれるので、以下のようなrails.confファイルを追加します。
LoadModule passenger_module /usr/local/lib/ruby/gems/1.9.1/gems/passenger-3.0.0/ext/apache2/mod_passenger.so PassengerRoot /usr/local/lib/ruby/gems/1.9.1/gems/passenger-3.0.0 PassengerRuby /usr/local/bin/ruby RailsBaseURI /testnw
下記のようなURLでアクセスできるようにするため、railsのファイルを修正します。
http://[サーバーIP]/testnwプロジェクトのトップディレクトリに移動します。
# cd /var/rails/testnw/ # cd config/environments開発用はdevelopmentで実行し、apacheから動作はproductionで実行します。 apacheから実行するproductionのときのみサブディレクトリで動作させるので production.rbにのみ以下を追加します。
ENV['RAILS_RELATIVE_URL_ROOT'] = "/testnw"
Testnw::Application.configure do ENV['RAILS_RELATIVE_URL_ROOT'] = "/testnw" # Settings specified here will take precedence over those in config/environment.rb # The production environment is meant for finished, "live" apps. # Code is not reloaded between requests config.cache_classes = true # Full error reports are disabled and caching is turned on config.consider_all_requests_local = false config.action_controller.perform_caching = true # Specifies the header that your server uses for sending files config.action_dispatch.x_sendfile_header = "X-Sendfile" # For nginx: # config.action_dispatch.x_sendfile_header = 'X-Accel-Redirect' # If you have no front-end server that supports something like X-Sendfile, # just comment this out and Rails will serve the files # See everything in the log (default is :info) # config.log_level = :debug # Use a different logger for distributed setups # config.logger = SyslogLogger.new # Use a different cache store in production # config.cache_store = :mem_cache_store # Disable Rails's static asset server # In production, Apache or nginx will already do this config.serve_static_assets = false # Enable serving of images, stylesheets, and javascripts from an asset server # config.action_controller.asset_host = "http://assets.example.com" # Disable delivery errors, bad email addresses will be ignored # config.action_mailer.raise_delivery_errors = false # Enable threaded mode # config.threadsafe! # Enable locale fallbacks for I18n (makes lookups for any locale fall back to # the I18n.default_locale when a translation can not be found) config.i18n.fallbacks = true # Send deprecation notices to registered listeners config.active_support.deprecation = :notify end
以前のPassengerではサブディレクトで実行する場合、environment.rbに以下を追加していました。
config.action_controller.relative_url_root = "/[ディレクトリ名]"
しかし、Passenger 3.0ではrelative_url_rootは非推奨になったようで上記を設定するとエラーになります。
参照
かわりに以下で設定します。
ENV['RAILS_RELATIVE_URL_ROOT'] = "/[ディレクトリ名]"