我正在尝试在 Ubuntu 上执行与 Apache2/Passenger 一起运行的 Ruby on Rails 的全新安装。我能够成功安装 apache2、rvm、ruby、rails 和 Passenger,后半部分如下这教程。所有安装都进行得很顺利;我最终得到了以下版本的软件:
- 在 Amazon EC2 上运行的 Ubuntu 11.10
- Apache 2.2.20
- RVM 1.10.2
- Ruby 1.9.3p0
- Rails 3.1.3
- 乘客 3.0.11
运行passenger-install-apache2-module
安装程序后,建议我:
Please edit your Apache configuration file, and add these lines:
LoadModule passenger_module /usr/local/rvm/gems/ruby-1.9.3-p0/gems/passenger-3.0.11/ext/apache2/mod_passenger.so
PassengerRoot /usr/local/rvm/gems/ruby-1.9.3-p0/gems/passenger-3.0.11
PassengerRuby /usr/local/rvm/wrappers/ruby-1.9.3-p0/ruby
当连接 Apache2 以使用 mod_passenger 时,我遇到了麻烦。
我去/etc/apache2/mods-available
并编辑:
乘客载重量
LoadModule passenger_module /usr/lib/apache2/modules/mod_passenger.so`
到
LoadModule passenger_module /usr/local/rvm/gems/ruby-1.9.3-p0/gems/passenger-3.0.11/ext/apache2/mod_passenger.so`
乘客配置文件
<IfModule mod_passenger.c>
PassengerRoot /usr
PassengerRuby /usr/bin/ruby
</IfModule>
到
<IfModule mod_passenger.c>
PassengerRoot /usr/local/rvm/gems/ruby-1.9.3-p0/gems/passenger-3.0.11
PassengerRuby /usr/local/rvm/wrappers/ruby-1.9.3-p0/ruby
</IfModule>
然后我通过 重启服务器apachectl restart
。当我加载网站时,我看到一个 HTTP 错误,从 Google Chrome 中可以看到:
Error 324 (net::ERR_EMPTY_RESPONSE): The server closed the connection without sending any data.
当我检查 Apache /var/log/apache2/error.log 时,发现了这一点:
[Thu Jan 19 19:32:07 2012] [notice] Apache/2.2.20 (Ubuntu) Phusion_Passenger/3.0.11 configured -- resuming normal operations
[Thu Jan 19 19:32:09 2012] [notice] child pid 4163 exit signal Segmentation fault (11)`
因此看起来模块没有正确加载或运行;我该如何解决这个问题?
编辑: 额外信息
我的虚拟主机:
<VirtualHost *:80>
ServerAdmin webmaster@localhost
DocumentRoot /somewhere/public
ServerName mydomain.com
ServerAlias *.mydomain.com
RackBaseURI /
RackEnv production
PassengerMaxPoolSize 4
<Directory "/somewhere/public">
Options Indexes FollowSymLinks -MultiViews
AllowOverride all
Order allow,deny
Allow from all
</Directory>
</VirtualHost>
答案1
我在这个问题上花了几个小时,但找不到简单的解决办法。我了解到应该可以通过让 Apache '转储核心' 或使用 gdb 附加到进程来调试这个段错误,但这两种方法都无法向我显示有关该问题的更多信息。
相反,由于我在 EC2 上运行,我决定重新加载基础 Ubuntu AMI,从头开始。在对所有这些应用程序进行细致的重新安装后,它运行时没有出现段错误,我能够成功启动我的 Ruby on Rails 服务器。最有可能的是我的配置或设置出了问题(也许我错过了依赖项,以错误的顺序安装了东西?)
如果您遇到此问题并且可以轻松全新安装,那么这样做可能会更容易,而不是浪费数小时尝试追踪隐藏的错误。