同一服务器上不同Ruby版本上的多个Rails应用程序

时间:2014-12-19 09:01:22

标签: ruby-on-rails apache nginx passenger unicorn

在RubyMine中,我可以为项目选择目标Ruby版本并运行它。

现在关于制作。

我们有两种变体可以为Rails应用程序构建主机:

  • Apache + Phusion Passenger
  • Nginx + Unicorn

如何在每个配置上运行两个为不同Ruby版本构建的Rails应用程序?

要求:这两个应用程序应该在不同虚拟主机上的同一台服务器上运行。

已安装RVM。

1 个答案:

答案 0 :(得分:2)

在部署应用程序时选择不同Ruby版本的简单方法是使用Capistrano进行部署。在封顶您的应用程序之后,您可以在Capfile

添加一些行

您的Capfile应该看起来像这样

require 'capistrano/setup'

# Include default deployment tasks
require 'capistrano/deploy'
require 'capistrano/bundler'
require 'capistrano/rails/assets'
require 'capistrano/rails/migrations'
require 'capistrano/rvm'

这样您就可以将特殊的RVM选项加载到Capistrano中,以便指定要使用的ruby版本。

要指定要使用的特定Ruby版本,您可以为deploy.rb添加一行以用于系统范围的部署选项,或者为production.rbstaging.rb添加一行,如果您需要不同的ruby版本每台服务器。

通过添加以下行,您可以指定所需的Ruby版本:

set :rvm_ruby_version, '2.0.0-p247'

部署应用程序后,您仍然需要指定Passenger将使用的ruby版本。您可以通过编辑特定于您的站点或子域的apache配置文件来指定此项。编辑Apache配置文件时。

<VirtualHost *:80>
    PassengerRuby /home/someuser/.rvm/wrappers/<ruby-version-here>/ruby
    ******
</VirtualHost>

首先执行rvm use <ruby version>然后执行which ruby,您可以看到需要哪个ruby版本,这将为您提供输入VirtualHost文件的路径。

希望对你有用