在 Apache2 上托管 Ruby on Rails 轨道

在 Apache2 上托管 Ruby on Rails 轨道

我在通过 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 以外的版本。

相关内容