Ruby/Rails Apache2和Passenger设置返回目录列表

ama*_*acy 2 ruby-on-rails vps passenger ubuntu-12.04

首先,我有一个功能齐全的Apache2服务器(在Ubuntu 12.04 VPS上),有多个工作虚拟主机(但这是我第一次尝试部署Rails站点).此外,我正在尝试启动的Rails站点在我的本地WEBRick服务器上完全正常运行.

我已经引用了各种在线说明,可以让Apache,Ruby,Rails和Passenger一起玩得很好,包括:

总结一下,到目前为止,我已经:

  1. 安装的Ruby(ruby -v在站点根目录返回1.9.3),RVM,Ruby Gems,Rails(rails -v在app文件夹中返回3.2.8,我可以在app文件夹中启动rails server)和Passenger(包括所有依赖项)
  2. 按照指示passenger-install-apache2-module,我在底部添加了以下行/etc/apache2/apache2.conf:

    LoadModule passenger_module /var/lib/gems/1.8/gems/passenger 3.0.17/ext/apache2/mod_passenger.so
    PassengerRoot /var/lib/gems/1.8/gems/passenger-3.0.17
    PassengerRuby /usr/bin/ruby1.8
    
    Run Code Online (Sandbox Code Playgroud)
  3. 创建并启用(在其中列出/etc/apache2/sites-enabled/)/etc/apache2/sites-available/foo.com包含以下内容的虚拟主机:

    <VirtualHost *:80>
      ServerName foo.com
      DocumentRoot /home/user/public/foo.com/public
      <Directory /home/user/public/foo.com/public>
        AllowOverride all
        Options -MultiViews
      </Directory>
    </VirtualHost>
    
    Run Code Online (Sandbox Code Playgroud)
  4. 将我的Rails应用程序上传到 /home/user/public/foo.com/

  5. 做了bundle install/home/user/public/foo.com/

  6. 在我的本地OSX机器上,我已经添加了xxx.xxx.xxx.xxx foo.com[VPS IP] /etc/hosts.

  7. 重启Apache

但是当我在浏览器中导航到foo.com时,我只看到了一个列表/home/user/public/foo.com/public.此外,Apache中没有最近的条目error.log.但是,无论何时restart我得到Apache:

 * Restarting web server apache2
[Fri Oct 26 00:04:12 2012] [warn] module passenger_module is already loaded, skipping
 ... waiting [Fri Oct 26 00:04:13 2012] [warn] module passenger_module is already loaded, skipping
   ...done.
Run Code Online (Sandbox Code Playgroud)

我希望我忽略了一些非常愚蠢的事情.任何帮助都会弄清楚那会是什么,非常感谢.谢谢!

小智 6

如果您正在使用apache2.2,则不应在apache2.conf中包含以下内容

LoadModule passenger_module /var/lib/gems/1.8/gems/passenger 3.0.17/ext/apache2/mod_passenger.so
PassengerRoot /var/lib/gems/1.8/gems/passenger-3.0.17
PassengerRuby /usr/bin/ruby1.8
Run Code Online (Sandbox Code Playgroud)

相反,您应该创建2个文件/etc/apache2/mods-available:

passenger.load with:

LoadModule passenger_module /var/lib/gems/1.8/gems/passenger3.0.17/ext/apache2/mod_passenger.so
Run Code Online (Sandbox Code Playgroud)

passenger.conf:

PassengerRoot /var/lib/gems/1.8/gems/passenger-3.0.17
PassengerRuby /usr/bin/ruby1.8
Run Code Online (Sandbox Code Playgroud)

最后你运行:

a2enmod passenger
Run Code Online (Sandbox Code Playgroud)

它已经完成了.顺便说一句,当你使它工作时,你可能会考虑使用更新版本的ruby(1.9.3 ...左右).最好的方法是使用RVM.