我怎样才能 运行 两个 运行 两个 passenger 服务器在一个 apache 实例后面?
How can I run two run two passenger servers behind one apache instance?
为了运行 passenger behind apache,需要这两个指令:
PassengerRoot
PassengerDefaultRuby
根据文档 here,这两个具有 'server config' 上下文。这意味着 Apache 只能为整个服务器实例设置一个 ruby 版本和一个 passenger root。因为,我有两个 ruby 版本 运行ning 使用 RVM,每个 Rails 实例在其自己的虚拟主机上下文中 运行ning,有没有办法设置 PassengerRoot 和 PassengerDefaultRuby每个虚拟主机 ?
PS: Hack-ish 解决方案也是可以接受的。
不确定为什么需要设置不同的 PassengerRoot。你不应该需要这样做,Passenger root 可以在任何 ruby 版本上,而且它会正常工作。你应该只需要在虚拟主机中设置 PassengerRuby.
我们通过 RVM 为每个项目设置了 Rails 多个 Ruby versions/gemsets 设置,我们只需将 PassengerRuby 设置为:
<VirtualHost *:80>
PassengerRuby /usr/local/rvm/gems/ruby-2.3.0@tomproject/wrappers/ruby
...
</VirtualHost>
只需确保将 PassengerRuby 指向 RVM gemset 中的相关包装器。
作为参考,这是我的 passenger.conf(Passenger 基于 ruby 2.1.1)
LoadModule passenger_module /usr/local/rvm/gems/ruby-2.1.1/gems/passenger-enterprise-server-5.0.21/buildout/apache2/mod_passenger.so
<IfModule mod_passenger.c>
PassengerRoot /usr/local/rvm/gems/ruby-2.1.1/gems/passenger-enterprise-server-5.0.21
PassengerDefaultRuby /usr/local/rvm/gems/ruby-2.1.1/wrappers/ruby
PassengerStatThrottleRate 0
# PassengerMaxPoolSize
# Default: 6
# For 2gb RAM: 30
# For 256 slice with MySQL running: 2
PassengerMaxPoolSize 12
PassengerMinInstances 0
PassengerPoolIdleTime 300
PassengerMemoryLimit 400
</IfModule>
但有一件事 - 如果您为每个 gemset 安装了 Passenger - 不要。在默认 ruby 版本中全局安装它。以后会让你头疼。它仍然可以工作,但这不是最佳实践。
为了运行 passenger behind apache,需要这两个指令:
PassengerRoot
PassengerDefaultRuby
根据文档 here,这两个具有 'server config' 上下文。这意味着 Apache 只能为整个服务器实例设置一个 ruby 版本和一个 passenger root。因为,我有两个 ruby 版本 运行ning 使用 RVM,每个 Rails 实例在其自己的虚拟主机上下文中 运行ning,有没有办法设置 PassengerRoot 和 PassengerDefaultRuby每个虚拟主机 ?
PS: Hack-ish 解决方案也是可以接受的。
不确定为什么需要设置不同的 PassengerRoot。你不应该需要这样做,Passenger root 可以在任何 ruby 版本上,而且它会正常工作。你应该只需要在虚拟主机中设置 PassengerRuby.
我们通过 RVM 为每个项目设置了 Rails 多个 Ruby versions/gemsets 设置,我们只需将 PassengerRuby 设置为:
<VirtualHost *:80>
PassengerRuby /usr/local/rvm/gems/ruby-2.3.0@tomproject/wrappers/ruby
...
</VirtualHost>
只需确保将 PassengerRuby 指向 RVM gemset 中的相关包装器。
作为参考,这是我的 passenger.conf(Passenger 基于 ruby 2.1.1)
LoadModule passenger_module /usr/local/rvm/gems/ruby-2.1.1/gems/passenger-enterprise-server-5.0.21/buildout/apache2/mod_passenger.so
<IfModule mod_passenger.c>
PassengerRoot /usr/local/rvm/gems/ruby-2.1.1/gems/passenger-enterprise-server-5.0.21
PassengerDefaultRuby /usr/local/rvm/gems/ruby-2.1.1/wrappers/ruby
PassengerStatThrottleRate 0
# PassengerMaxPoolSize
# Default: 6
# For 2gb RAM: 30
# For 256 slice with MySQL running: 2
PassengerMaxPoolSize 12
PassengerMinInstances 0
PassengerPoolIdleTime 300
PassengerMemoryLimit 400
</IfModule>
但有一件事 - 如果您为每个 gemset 安装了 Passenger - 不要。在默认 ruby 版本中全局安装它。以后会让你头疼。它仍然可以工作,但这不是最佳实践。