![在 Apache2 上托管 Ruby on Rails 轨道](https://linux22.com/image/538353/%E5%9C%A8%20Apache2%20%E4%B8%8A%E6%89%98%E7%AE%A1%20Ruby%20on%20Rails%20%E8%BD%A8%E9%81%93.png)
我在通过 Ubuntu 10.04 上的 Apache2 托管 Tracks 时遇到了问题。我按照几个教程操作过,但都不起作用。我在 /var/lib/tracks 中找到了 Tracks git repo,并在 /var/www 中找到了指向 /var/lib/tracks/public 的符号链接。我安装了 Passenger 并启用了 libapache2-mod-passenger。我配置了 VirtualHost,但当我访问 http://localhost/tracks 时,却出现了一个无效的链接页面(不确定是否是 404)。我暂时禁用了默认 VirtualHost 以进行故障排除,但当我在 Firefox 中访问 http://localhost 时,我得到的是 /var/lib/tracks/public 中的文件列表,而在 Chromium 中,我得到的是默认的“它起作用了!”index.html 页面。
/etc/apache/mods-enabled/passenger.load
LoadModule passenger_module /usr/lib/apache2/modules/mod_passenger.so
/etc/apache/mods-enabled/passenger.conf
<IfModule mod_passenger.c>
PassengerRoot /home/erich/.gem/ruby/1.8/gems/passenger-3.0.2
PassengerRuby /usr/bin/ruby1.8
</IfModule>
/etc/apache/sites-enabled/tracks
<VirtualHost *:80>
ServerName tracks.localhost
ServerAdmin webmaster@localhost
DocumentRoot /var/lib/tracks/public
<Directory /var/lib/tracks/public>
AllowOverride all
Options -MultiViews
</Directory>
RailsBaseURI /tracks
#<Directory /var/lib/tracks>
#Options -MultiViews
#</Directory>
</VirtualHost>
在 error.log 中出现以下消息:
[2011 年 2 月 6 日星期日 08:33:51] [错误] [客户端 192.168.1.100] 文件不存在:/var/lib/tracks/public/tracks [2011 年 2 月 6 日星期日 08:48:30] [通知] 捕获 SIGTERM,正在关闭 [2011 年 2 月 6 日星期日 08:48:31] [错误] *** Passenger 无法初始化,原因是:Passenger 生成服务器脚本“/home/erich/.gem/ruby/1.8/gems/passenger-3.0.2/lib/phusion_passenger/passenger-spawn-server”不存在。请检查“PassengerRoot”选项是否指定正确。 [2011 年 2 月 6 日星期日 08:48:31] [错误] *** Passenger 无法初始化,原因是:Passenger 生成服务器脚本“/home/erich/.gem/ruby/1.8/gems/passenger-3.0.2/lib/phusion_passenger/passenger-spawn-server”不存在。请检查“PassengerRoot”选项是否指定正确。 [2011 年 2 月 6 日星期日 08:48:31] [通知] Apache/2.2.14 (Ubuntu) Phusion_Passenger/2.2.7 已配置 - 恢复正常运行
我是不是漏掉了什么?我对 Ruby on Rails 完全陌生,只是想让这个应用程序由 Apache 托管,这样我就不必登录我的服务器就可以运行它了。我不明白 Ruby on Rails 与 Apache 配合使用需要哪些依赖项。如果有人知道一些初学者参考资料,让我可以更多地了解 Ruby on Rails 如何与 Apache 配合使用,我将不胜感激。
答案1
在您的 apache 配置文件中指定正确的内容PassengerRoot
。看来,passenger gem 没有安装到您的主目录中,或者它使用的是 3.0.2 以外的版本。