Ruby on rails 3 如何在Apache2上使用共享的乘客gem启动多个Rails应用程序?

Ruby on rails 3 如何在Apache2上使用共享的乘客gem启动多个Rails应用程序?,ruby-on-rails-3,apache,passenger,Ruby On Rails 3,Apache,Passenger,我正在尝试使用VirtualHost指令将Apache V2配置为同时处理两个Rails 3.2.2应用程序。我在本地的笔记本电脑上做这个。Ubuntu、Ruby 1.9.2和Passenger 3.0.12 在敏捷Web开发中使用了部署说明。。。。Rails,V4。第一个简单的应用程序启动时没有问题 然后,我创建了第二个具有非常相似特征的简单应用程序。使用第二个VirtualHost指令编辑/etc/apache2/apache2.conf,并编辑/etc/hosts以将第二个命名URL映射到

我正在尝试使用VirtualHost指令将Apache V2配置为同时处理两个Rails 3.2.2应用程序。我在本地的笔记本电脑上做这个。Ubuntu、Ruby 1.9.2和Passenger 3.0.12

在敏捷Web开发中使用了部署说明。。。。Rails,V4。第一个简单的应用程序启动时没有问题

然后,我创建了第二个具有非常相似特征的简单应用程序。使用第二个VirtualHost指令编辑/etc/apache2/apache2.conf,并编辑/etc/hosts以将第二个命名URL映射到同一127.0.0.1地址

重新启动Apache时出现如下所示:

apache2:etc/apache2/apache2.conf第240行语法错误:无法加载/home/bubby/.rvm/gems/ruby-1.9.2-p180/gems/passenger-3.0.12/ext/apache2/mod_passenger.so到服务器:/home/bubby/.rvm/gems/ruby-1.9.2-p180/gems/passenger 3.0.12/ext/apache2/mod_passenger.so:无法打开共享对象文件:没有这样的文件或目录

DocumentRoot /var/www/app/public
  <Directory /var/www/app/public>
这两款应用程序都与Passenger捆绑在一起。找到mod_passenger.so返回正确的位置。有更好的方法吗?

文件

/home/bubby/.rvm/gems/ruby-1.9.2-p180/gems/passenger-3.0.12/ext/apache2/mod_passenger.so

是否真的存在并且apache可读?

这就是我如何使用passenger设置多个VirtualHost的方法:

user@debian:# cat /etc/apache2/mods-enabled/passenger.conf 
<IfModule mod_passenger.c>
  PassengerRoot /usr/local/rvm/gems/ruby-1.9.3-p125/gems/passenger-3.0.11
  PassengerRuby /usr/local/rvm/wrappers/ruby-1.9.3-p125/ruby
</IfModule>

user@debian:# cat /etc/apache2/mods-enabled/passenger.load 
LoadModule passenger_module /usr/local/rvm/gems/ruby-1.9.3-p125/gems/passenger-3.0.11/ext/apache2/mod_passenger.so


user@debian:# cat /etc/apache2/sites-enabled/site1
<VirtualHost *:80>
  ServerName site1
  RailsEnv development

  DocumentRoot /var/www/site1/public
  <Directory /var/www/site1/public>
    Options None
    AllowOverride None

    Order deny,allow
    Allow from all
  </Directory>
</VirtualHost>


user@debian:# cat /etc/apache2/sites-enabled/site2
<VirtualHost *:80>
  ServerName site2
  RailsEnv development

  DocumentRoot /var/www/site2/public
  <Directory /var/www/site2/public>
    Options None
    AllowOverride None

    Order deny,allow
    Allow from all
  </Directory>
</VirtualHost>
当然

对于生产,通过在install命令中添加sudo,以系统范围模式而不是用户模式安装rvm。在开发中,您可以保持用户模式

在指定ruby的全局gems集中安装乘客gem。对于将由多个应用程序使用的gem,请记住每个gem的版本要求

在服务器中运行install apache passenger mod命令后,复制生成的mod加载

然后,要获得要加载的正确gemset,请将此文件添加到配置文件夹中

# setup_load_path.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')
    $LOAD_PATH.unshift rvm_lib_path
    require 'rvm'
    # RVM.use_from_path! File.dirname(File.dirname(__FILE__))
    # edit this line according to you ruby version
    RVM.use!('1.9.2@YOUR_GEMSET')
  rescue LoadError
    # RVM is unavailable at this point.
   raise "RVM ruby lib is currently unavailable."
 end
end

# Select the correct item for which you use below.
# If you're not using bundler, remove it completely.
#
# # If we're using a Bundler 1.0 beta
ENV['BUNDLE_GEMFILE'] = File.expand_path('../Gemfile', File.dirname(__FILE__))
require 'bundler/setup'
#
# # Or Bundler 0.9...
# if File.exist?(".bundle/environment.rb")
#   require '.bundle/environment'
# else
#   require 'rubygems'
#   require 'bundler'
#   Bundler.setup
# end
然后,让apache指向正确的公共目录

DocumentRoot /var/www/app/public
  <Directory /var/www/app/public>

那么apache2.conf的相关it是什么样子的呢?Hmmm-no.rvm目录。