簡體   English   中英

具有兩個Ruby版本的RVM和Passenger

[英]RVM and Passenger with two Ruby versions

如何在1.9和1.8(ree)ruby版本中使用Passenger,RVM和Apache? 我在生產環境中需要它。 我嘗試這樣: RVM PASSENGER但REE僅能正常工作。 1.9這樣說:

給定的ruby環境需要ruby-1.9.2-p318(相對ree-1.8.7-2012.02)(RVM :: IncompatibleRubyError)

我的1.9 ruby​​版本的文件:.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

...

您可以查看這篇很棒的文章: Phusion Passenger和運行多個Ruby版本

基本上,您可以使用rvm和反向代理來完成它。 例如,您可以照常部署一個紅寶石版本(如1.9),並使用反向代理來設置另一個版本:

  • rvm使用1.8
  • 寶石安裝乘客--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> 

您也可以嘗試使用獨角獸代替乘客,或用ngix代替apache。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM