2

Passenger、RVM、Apacheを1.9および1.8(ree)ルビーバージョンで使用するにはどうすればよいですか?本番環境で必要です。私はこれを試します:RVM PASSENGERですが、REEは機能しているだけです。1.9これを言う:

指定されたruby環境にはruby-1.9.2-p318が必要です(ree-1.8.7-2012.02に対して)(RVM :: IncompatibleRubyError)

1.9ルビーバージョンからの私のファイル:.rvmrc

environment_id="ruby-1.9.2-p318"

if [[ -d "${rvm_path:-$HOME/.rvm}/environments"
  && -s "${rvm_path:-$HOME/.rvm}/environments/$environment_id" ]]
then
  \. "${rvm_path:-$HOME/.rvm}/environments/$environment_id"
  [[ -s "${rvm_path:-$HOME/.rvm}/hooks/after_use" ]] &&
    \. "${rvm_path:-$HOME/.rvm}/hooks/after_use" || true
  if [[ $- == *i* ]] # check for interactive shells
  then echo "Using: $(tput setaf 2)$GEM_HOME$(tput sgr0)" 
  else echo "Using: $GEM_HOME" 
  fi
else
  rvm --create use  "$environment_id" || {
    echo "Failed to create RVM environment '${environment_id}'."
    return 1
  }
fi

setup_load_paths.rb

if ENV['MY_RUBY_HOME'] && ENV['MY_RUBY_HOME'].include?('rvm')
    begin
      rvm_path     = File.dirname(File.dirname(ENV['MY_RUBY_HOME']))
      rvm_lib_path = File.join(rvm_path, 'lib')
      require 'rvm'
      RVM.use_from_path! File.dirname(File.dirname(__FILE__))
    rescue LoadError
      # RVM is unavailable at this point.
      raise "RVM ruby lib is currently unavailable."
    end
  end

  ENV['BUNDLE_GEMFILE'] = File.expand_path('../Gemfile', File.dirname(__FILE__))
  require 'bundler/setup'

httpd.conf

...
LoadModule passenger_module /usr/local/rvm/gems/ree-1.8.7-2012.02/gems/passenger-3.0.12/ext/apache2/mod_passenger.so
   PassengerRoot /usr/local/rvm/gems/ree-1.8.7-2012.02/gems/passenger-3.0.12
   PassengerRuby /usr/local/rvm/wrappers/ree-1.8.7-2012.02/ruby

...
4

1 に答える 1

0

この素晴らしい記事をチェックしてみてください: Phusion Passenger & running multiple Ruby versions

基本的には、rvm とリバース プロキシを使用して実行できます。たとえば、1 つの Ruby バージョン (1.9 など) を通常どおりデプロイし、リバース プロキシを使用してもう 1 つのバージョンをセットアップできます。

  • rvm 使用 1.8
  • gem install パッセンジャー --pre
  • cd /path/to/your/app
  • 乗客の開始 -a 127.0.0.1 -p 3000 -d
  • Apache構成でリバースプロキシをセットアップします

    <VirtualHost *:80>
      ServerName www.hamburgers.com
      DocumentRoot /path/to/your/app/public
      PassengerEnabled off
      ProxyPass / http://127.0.0.1:3000
      ProxyPassReverse / http://127.0.0.1:3000
    </VirtualHost>
    

乗客の代わりにユニコーンを使用するか、Apache を ngix に置き換えることもできます。

于 2014-07-08T10:47:36.217 に答える