如何使用共享Passenger Gem在Apache2上启动多个Rails应用程序?

我试图配置Apache V2以使用VirtualHost指令同时处理两个Rails(3.2.2)应用程序。我在本地笔记本电脑上做这个。 (Ubuntu,Ruby 1.9.2和Passenger 3.0.12。)如何使用共享Passenger Gem在Apache2上启动多个Rails应用程序?

使用“Agile Web Development .... Rails”,V4中的部署说明。第一个简单的应用程序启动无w/o问题。

然后,我创建了第二个具有非常相似特征的简单应用程序。用第二个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:无法打开共享目标文件:没有此类文件或目录

这两个应用程序都与Passenger捆绑在一起。 “找到mod_passenger.so”返回正确的位置。有一个更好的方法吗?

回答:

做文件

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

真的存在,它是可读的Apache?

回答:

这是我怎么设置多个virtualhosts客运:

[email protected]:# 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>

[email protected]:# 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

[email protected]:# 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>

[email protected]:# 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>

回答:

肯定。

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

在您指定的红宝石的全球宝石镶嵌中安装乘客宝石。做相同的宝石运行在服务器中安装apache-乘客国防部命令复制生成的MOD装载

再到之后,这将是用户通过多个应用程序(记住每一个宝石版本要求)

得到正确的宝石加载该文件添加到您的config文件夹

# 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!('[email protected]_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>

以上是 如何使用共享Passenger Gem在Apache2上启动多个Rails应用程序? 的全部内容, 来源链接: utcz.com/qa/263106.html

回到顶部