Rails Apache2的乘客问题

And*_*fer 20 ruby-on-rails apache2 passenger mod-rails ubuntu-10.10

我正在尝试使用apache2和mod_rails(Phusion Passenger)在ubuntu10.10上的rails服务器上设置ruby.

我已经安装了ruby 1.9.2-p0和rails 3.0.8,并使用passenger-install-apache2-module和passenger gem(v3.0.7)安装了Passenger.

然后它告诉我在我的Apache配置文件中添加3行.所以我将这些行添加到'/etc/apache2/apache2.conf'中:

LoadModule passenger_module /usr/local/lib/ruby/gems/1.9.1/gems/passenger-3.0.7/ext/apache2/mod_passenger.so
PassengerRoot /usr/local/lib/gems/1.9.1/gems/passenger-3.0.7
PassengerRuby /usr/local/bin/ruby
Run Code Online (Sandbox Code Playgroud)

我编辑了我的'/etc/apache2/httpd.conf'并添加了:

NameVirtualHost *:80

<VirtualHost *:80>
ServerName 192.168.0.2
DocumentRoot /var/www/webop/public

<Directory /var/www/webop/public>
Allow from all
Options -MultiViews
</Directory>
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)

我还发现/usr/local/lib/ruby/gems/1.9.1/gems/passenger-3.0.7/ext/apache2/中的文件mod_passenger.so实际上不存在,其名称为mod_passenger.c.但我没有从中得到任何错误.

服务器只能通过LAN访问.当我访问服务器时,我看到我的应用程序的公共文件夹中的所有文件和目录,但应用程序本身没有开始.

当我重新启动apache它告诉我mod_rails已经加载所以我猜这个乘客正在运行,但我无法弄清楚为什么它不启动我的应用程序!

提前致谢!

sup*_*ary 38

mod_passenger.so不存在的原因是因为您尚未安装Apache模块.执行:

passenger-install-apache2-module
Run Code Online (Sandbox Code Playgroud)

这将在gem目录中创建mod_passenger.so文件,并为您提供三行复制到您的apache2.conf文件中.

乘客模块安装在您当前的gemset中,因此您不应该在项目之间产生任何冲突.您可以使用任何兼容版本的Ruby,以及您喜欢的任何gemset,通过RVM,也可能使用RBENV.这使得从一个版本的Ruby到另一个版本的一个很好的简单升级路径.


And*_*fer 12

我终于弄清楚问题是什么:我弄乱了我的红宝石装置.

在/ usr/local /我安装了ruby1.9.2-p0(这是我想要使用的版本)但在/ usr/i中安装了ruby1.8.7.

乘客对使用哪个ruby版本感到困惑,所以我将apache2/mods-enabled/passenger.load和.config中的LoadModule,PassengerRoot和PassengerRuby路径更改为正确的路径,最终工作正常!这两个文件都是自动创建的,这也导致了重新定义的问题:在apache启动时,有一个警告'mod_passenger已经加载'.所以我删除了

LoadModule passenger_module /usr/local/lib/ruby/gems/1.9.1/gems/passenger-3.0.7/ext/apache2/mod_passenger.so
PassengerRoot /usr/local/lib/gems/1.9.1/gems/passenger-3.0.7
PassengerRuby /usr/local/bin/ruby
Run Code Online (Sandbox Code Playgroud)

从apache配置和警告消失了!

可能这有一天会帮助别人!