我有一个很大的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;
}
...
我正在寻找一种解决方案,我可以使用不同的堆栈运行多个应用程序。
答案 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