的Centos +阿帕奇+的Phusion + REE = FAIL

我一直试图让Phusion Passenger在过去的几天里以5.6的速度运行,没有运气。 最初,我从RVM下的Ruby 1.9.2开始,因为基于RHEL的发行版的默认Ruby是相当古老的。 我已经安装好了,但遇到了一些问题。 认为这是RVM,我完全删除它与默认的Ruby和安装的Ruby企业版。 1.8.7.2011-03放入/ usr。 我仍然有相同的问题。

当我使用安装程序提供的默认设置说明尝试Passenger时,收到错误消息“无法findphusion_passenger / analytics_logger”。 我发现从谷歌这个很less的信息,但从我可以推测这是一个权限错误。 最初,我尝试设置一个ACL,允许apache用户访问乘客根目录。 如果不行的话,我尝试将passeneger根目录修改为777.接下来,我尝试根据用户指南的第6.3.5节将乘客根目录及其父目录的上下文更改为“httpd_sys_content_t”。 最后,我试着将SELinux设置为宽容。 没有工作。

阅读完用户指南后,我尝试了以下设置,导致500 ISE:

PassengerUserSwitching off PassengerUser apache PassengerGroup apache 

这是我的passenger.conf文件减去上面(从/etc/httpd/conf.d):

 LoadModule passenger_module /usr/lib/ruby/gems/1.8/gems/passenger-3.0.7/ext/apache2/mod_passenger.so PassengerRoot /usr/lib/ruby/gems/1.8/gems/passenger-3.0.7 PassengerRuby /usr/bin/ruby .... PassengerLogLevel 3 

这是500错误的日志输出:

 [ pid=17939 thr=1094539584 file=ext/common/ApplicationPool/Pool.h:939 time=2011-04-30 13:12:17.351 ]: Spawning a process for /var/www/html because there are none for this app group 

/ p / q / SpawnManager.h:291 time = 2011-04-30 13:12:17.352]:为/ var / www / html生成一个新的应用程序进程。 .. [pid = 17939 thr = 1094539584 file = ext / common / ApplicationPool /../ SpawnManager.h:427 time = 2011-04-30 13:12:17.352]:产卵服务器死亡。 试图重新启动它… [pid = 17939 thr = 1094539584 file = ext / common / ApplicationPool /../ SpawnManager.h:430 time = 2011-04-30 13:12:17.357]:重新启动似乎是成功的。 为/ var / www / html生成一个新的应用程序进程。[pid = 17939 thr = 1094539584 file = ext / common / ApplicationPool /../ SpawnManager.h:291 time = 2011-04-30 13:12:17.359] .. / usr / bin / ruby​​:加载共享库时出错:libtcmalloc_minimal.so.0:无法打开共享目标文件:没有这样的文件或目录[pid = 17939 thr = 1094539584 file = ext / common / ApplicationPool / Server.h :297 time = 2011-04-30 13:12:17.365]:客户端9:发生了SpawnException(无错误页面)[pid = 17951 thr = 47853881642864 file = ext / apache2 / Hooks.cpp:865 time = 2011-04- 30:13:12:17.366]:mod_passenger意外的错误:不能产生应用程序'/ var / www / html':无法读取生成服务器:连接重置对等(104)Backtrace:在'虚拟Passenger :: SessionPtr乘客:: Passenger :: SessionPtr Hooks :: getSession(const Passenger :: PoolOptions&)'(Hooks.cpp:297)中的:: ApplicationPool :: Client :: get(const Passenger :: PoolOptions&)'(Client.h:750) 'int Hooks :: handleRequest(request_rec *)'(Hooks.cpp:566)

首先,当你说你删除了默认的Ruby时,我希望你不是那个CentOS附带的那个。 根据我的经验,最好是单独留下那个人,让他pipe理它。 我将我的Ruby / REE版本安装到/ opt / ruby​​中,但是它们可以在/ usr / local或任何你想要的地方。

至于configurationSELinux,我个人禁用它,但宽容不应有任何不同。 从基本安装中,我只需添加编译软件包所需的典型软件包,然后进行完全升级:

 # yum -y install gcc make gcc-c++ cpp automake patch zlib-devel && yum -y upgrade 

然后我安装稀土元素1.8.7-2011.03:

 # ./installer --dont-install-useful-gems --no-dev-docs --auto /opt/ruby/enterprise-1.8.7-2011.03 

确保安装了Apache(httpd),然后安装乘客gem和相应的Apache模块:

 # /opt/ruby/enterprise-1.8.7-2011.03/bin/gem install --no-rdoc --no-ri --version '= 3.0.7' passenger # /opt/ruby/enterprise-1.8.7-2011.03/bin/passenger-install-apache2-module -a 

把它告诉你的东西添加到Apache的httpd.conf中。 我使用以下内容:

 SetEnv MY_RUBY_HOME "/opt/ruby/enterprise-1.8.7-2011.03" SetEnv GEM_HOME "/opt/ruby/enterprise-1.8.7-2011.03/lib/ruby/gems/1.8" SetEnv GEM_PATH "/opt/ruby/enterprise-1.8.7-2011.03/lib/ruby/gems/1.8" LoadModule passenger_module /opt/ruby/enterprise-1.8.7-2011.03/lib/ruby/gems/1.8/gems/passenger-3.0.7/ext/apache2/mod_passenger.so PassengerRoot /opt/ruby/enterprise-1.8.7-2011.03/lib/ruby/gems/1.8/gems/passenger-3.0.7 PassengerRuby /opt/ruby/enterprise-1.8.7-2011.03/bin/ruby 

然后,我将一个简单的Rails应用程序部署到/ home / httpd / app,并添加一个类似于以下内容的VirtualHost:

 <VirtualHost *:80> ServerName example.domain.com DocumentRoot /home/httpd/app/public RackBaseURI / RailsEnv production PassengerSpawnMethod smart </VirtualHost> 

确保安装了您的应用程序所需的所有gem,包括“导轨”。

在整个安装过程中,您不必对文件权限有任何特殊的要求,除非您必须记住,您的应用程序将以Rails应用程序根目录所有者的用户/组的身份运行。 这个用户必须至less拥有所有/ opt / ruby​​的rx权限。

我真的不知道为什么你/usr/bin/ruby: error while loading shared libraries: libtcmalloc_minimal.so.0: cannot open shared object file: No such file or directory遇到了/usr/bin/ruby: error while loading shared libraries: libtcmalloc_minimal.so.0: cannot open shared object file: No such file or directory错误,但是如果你按照上面的指示,并确保不要打扰你的系统Ruby,你不应该有任何问题。

对不起,我没有真正回答你的问题,但我希望我的尝试和可信赖的过程将同样适用于你自己!