如何为具有不同Ruby版本的两个Rails应用程序创建服务器设置?

时间:2014-01-10 15:06:20

标签: ruby-on-rails ruby

我有一个很大的EC2实例。我有一个使用Rails 4.0和Ruby 2.0的应用程序,使用Unicorn运行。

我想在实例上使用Rails 4.0.1和Ruby 2.1部署另一个非常小的应用程序。

我可以在两个应用中使用Unicorn吗?如果没有,我可以使用Nginx + Unicorn吗?对此有什么合适的方法?

我想使用Nginx +乘客但不支持不同的Ruby版本。

这是一个示例Nginx配置,它不起作用,因为两个应用程序都需要不同的Ruby版本:

http {
  passenger_root /home/prasad/.rvm/gems/ruby-1.9.3-p286/gems/passenger-3.0.18;
  passenger_ruby /home/prasad/.rvm/wrappers/ruby-1.9.3-p286/ruby;
  ...
  server {
    listen       80;
    server_name  dev.app1; #uses ruby 1.9.3
    passenger_enabled on;
    root   /home/prasad/projects/app1/public;
    rails_env development;
  }

  server {
    listen       80;
    server_name  dev.app2; #uses ruby 2.0
    passenger_enabled on;
    root   /home/prasad/projects/app2/public;
    rails_env development;
  }
  ...

我正在寻找一种解决方案,我可以使用不同的堆栈运行多个应用程序。

1 个答案:

答案 0 :(得分:2)

解决方案是升级到V4或更高版本的Passenger,以便您可以为每个应用程序配置Ruby版本。

基本上,除了在您的示例中全局配置了“passenger_ruby”的HTTP块之外,您还可以为每个服务器指定一个单独的Ruby:

server {
  # This Rails web app will use Ruby 1.9.3, as installed by RVM
  passenger_ruby /usr/local/rvm/wrappers/ruby-1.9.3/ruby;
  ...
}

请参阅以下完整文档: http://www.modrails.com/documentation/Users%20guide%20Nginx.html#PassengerRuby