根据SLES(12SP2),我真的很努力地使乘客5工作与多个ruby。 有一件事我没有预料到,我需要为每个设置为PassengerRuby的ruby安装一次乘客gem,否则使用该ruby的应用程序将不会启动。
我最初安装乘客5.0.18通过RPM与zypper,然后安装ruby安装自定义ruby。 如果我没有首先安装该ruby的乘客gem,将Apache(2.4)指向其中一个使用PassengerRuby /opt/rubies/ruby-2.4.2/bin/rubyruby,我会收到以下消息(LoadError for phusion_passenger):
[ 2017-09-16 09:44:52.7828 23517/7ff290068700 App/Implementation.cpp:303 ]: Could not spawn process for application /srv/www/apps/helloworld/app: An error occured while starting up the preloader. Error ID: d6436e69 Error details saved to: /var/run/passenger/passenger-error-oiP5jq.html Message from application: cannot load such file -- phusion_passenger (LoadError) /opt/rubies/ruby-2.4.2/lib/ruby/2.4.0/rubygems/core_ext/kernel_require.rb:55:in `require' /opt/rubies/ruby-2.4.2/lib/ruby/2.4.0/rubygems/core_ext/kernel_require.rb:55:in `require' /usr/lib64/passenger/5.0.18//helper-scripts/rack-preloader.rb:73:in `init_passenger' /usr/lib64/passenger/5.0.18//helper-scripts/rack-preloader.rb:152:in `<module:App>' /usr/lib64/passenger/5.0.18//helper-scripts/rack-preloader.rb:29:in `<module:PhusionPassenger>' /usr/lib64/passenger/5.0.18//helper-scripts/rack-preloader.rb:28:in `<main>' [ 2017-09-16 09:44:52.7920 23517/7ff29216e700 age/Cor/Req/CheckoutSession.cpp:252 ]: [Client 1-1] Cannot checkout session because a spawning error occurred. The identifier of the error is d6436e69. Please see earlier logs for details about the error.
这似乎与文档中的这段话相反:
乘客可以安装任何Ruby解释器。 安装完成后,即使Ruby解释器不是您最初安装Passenger的解释器,也可以在所需的任何Ruby解释器下运行Passenger的Ruby部件。
- 基于Apache中的主机url的条件反向代理
- Kerberos /仅在某些IP地址的Apache中进行身份validation协商
- 如何设置IP特定的虚拟主机?
- 周期fopen()请求服务器php / apache饱和
- 我怎么能在16GB RAM的m4.xlarge AWS实例中设置prefork mpm
原因是Passenger不会dynamic链接到Ruby:Passenger完全使用Ruby进程。 因此,您可以在运行时切换到任何您想要的Ruby解释器,而无需重新编译Passenger,也不用担心您用来安装Passenger的Ruby。
Passenger也可以在你想要的任何Ruby解释器下运行Ruby web应用程序。 所以,你用什么Ruby来安装Passenger并不重要:它不pipe用什么工作。 请参阅passenger_ruby指令的文档,了解如何在不同的Ruby解释器下运行不同的Web应用程序。
从这我认为乘客的东西将完全独立于实际运行我的应用程序的ruby进程? 此外,这显然必须是乘客如何与其他解释器,如python或节点,因为他们将不会有任何乘客gem安装…
如果我在自定义ruby下安装了gem应用程序,但是启动时我仍然会得到这个(可能不相关的)警告:
应用程序22553 stderr:此命令需要安装Phusion Passenger代理程序。 请运行
passenger-config install-agent。
在PassengerRuby指令的每个ruby下安装乘客gem是否符合要求,即使它在文档中没有提到?