我继承了在 Ruby 1.8.7 和 Rails 2.3.2 上运行的 Ruby on Rails 站点的维护和开发。虽然我们尝试尽可能多地使用Passenger 部署到Linux 服务器,但我的老板告诉我,有时我们必须能够为我们的客户部署到Windows。
我已经很好地安装了我的 Rails 应用程序,当我使用 Webrick 服务器进行测试时,它运行良好。我还安装了 Apache 2.2,它完美地提供了通用 HTML 页面。但是,当我尝试在 Apache 下运行我的 Rails 应用程序时,出现 503 Service Temporarily Unavailable 错误
Apache 日志中没有列出任何错误,但是当我检查 RoR 日志时,它确实显示
127.0.0.1 - - [09/Aug/2012:10:31:02 +1000] "GET / HTTP/1.1" 503 323
127.0.0.1 - - [09/Aug/2012:10:31:02 +1000] "GET /favicon.ico HTTP/1.1" 503 323
和
[Thu Aug 09 10:31:06 2012] [error] proxy: BALANCER: (balancer://mmapscluster). All workers are in error state
[Thu Aug 09 10:31:07 2012] [error] proxy: BALANCER: (balancer://mmapscluster). All workers are in error state
您可能已经猜到,出于性能原因,我们将 Mongrel 作为代理服务器运行。
当我从 Apache 配置中删除所有代理时(顺便说一下,重新启动 Apache 对代理配置来说是不够的 - 我必须重新启动整个机器),我得到了一个看似无穷无尽的以下 Apache 错误列表,
[notice] Parent: Created child process 1944
[notice] Child 1944: Child process is running
[notice] Parent: child process exited with status 255 -- Restarting.
[notice] Apache/2.2.15 (Win32) configured -- resuming normal operations
我对此进行了反复检查,并根据我们拥有的工作安装检查了我的配置,但我看不出设置中有任何差异。唯一真正的区别是正常工作的机器运行在 32 位机器上,而故障机器运行在 64 位机器上。
这可能是问题吗?有没有其他人在 64 位机器上运行 Apache 时遇到过类似的问题?