【问题标题】:rails site showing index of / page显示/页面索引的rails站点
【发布时间】:2011-12-24 01:00:14
【问题描述】:

我的 Rails 网站过去可以正常工作,但在升级操作系统后重新启动后,它现在只显示 / 的索引以及 rails 应用程序公共目录的内容。

我的 PHP 站点运行良好,所以这一定是配置问题。我研究这个问题很久了,所以在这里我很茫然。非常感谢您的帮助。

我像以前一样按照http://library.linode.com/frameworks/ruby-on-rails-apache/ubuntu-10.04-lucid 上的说明进行操作。

我在 /etc/apache2/sites-availabe/mydomain.com 中有以下设置:

<VirtualHost ip:80>
        ServerName mydomain.com
        DocumentRoot /srv/www/mydomain.com/app/public/
        ServerAlias www.mydomain.com
        ErrorLog /srv/www/mydomain.com/log/error.log
        CustomLog /srv/www/mydomain.com/log/access.log combined
</VirtualHost>

我的应用位于 /srv/www/mydomain.com/app/ 下。 这里有什么问题?这曾经在迁移之前有效。

该应用在 ubuntu 10.4 上。

【问题讨论】:

  • 乘客模块加载了吗?

标签: ruby-on-rails deployment


【解决方案1】:

我在开始使用 vHosts 时遇到了很多麻烦。 这个简短的快速指南可能会有所帮助。

$ gem install passenger
$ passenger-install-apache2-module

按照屏幕说明进行操作。

编辑您当前的虚拟主机配置。

<VirtualHost *:80>
  ServerName mydomain.com
  ServerAlias www.mydomain.com
  DocumentRoot "/srv/www/mydomain.com/app/public/"
  <Directory "/srv/www/mydomain.com/app/public/">
    Order allow,deny
    Allow from all
  </Directory>
</VirtualHost>

重新启动您的 Apache 服务器。

$ sudo apache graceful

在您喜欢的编辑器中将以下内容添加到 /etc/hosts 文件的末尾。

127.0.0.1 mydomain.com www.mydomain.com

测试您的域。

$ ping mydomain.com

你应该看到类似的东西

PING mydomain.com (127.0.0.1): 56 data bytes
64 bytes from 127.0.0.1: icmp_seq=0 ttl=64 time=0.035 ms

现在您应该可以进入您喜欢的浏览器并导航到mydomain.com 并查看您的应用程序实例。

【讨论】:

  • 感谢您的回复。我有这个设置。乘客正在运行我相信在 Apache 上的 mod-rails,但它仍然只显示公共目录的目录列表。
  • 也许路由不工作并且它没有通过控制器。为什么会这样?
  • 你能看到你的500.html页面http://mydomain.com/500.html。如果您能看到这一点,请尝试在您的 routes.rb 示例中设置一个简单的路由。 root :to =&gt; "tracks#index"
【解决方案2】:

对于未来的读者,我在这里找到了答案: https://help.ubuntu.com/community/RubyOnRails#Installing%20rails

我安装了乘客 gem。

缺少的是:

sudo apt-get install apache2-dev libapr1-dev libaprutil1-dev

只需键入以下内容即可启用乘客:

a2enmod passenger

然后重启apache。瞧!

【讨论】:

  • 你怎么能跑a2enmod passenger
【解决方案3】:

听说你需要安装Phusion Passenger? 如果您需要任何帮助,请查看Dan Benjamin's guide

【讨论】:

    【解决方案4】:

    升级操作系统的同时也升级了 Apache。如果您使用的是Passenger,您可能通过手动编译来安装它,因此在升级过程中丢失了。您可能需要重新运行一遍Passenger的安装。

    【讨论】:

    • 操作系统升级到 64 位后,我重新安装了所有内容。可能是路由不起作用并且它没有通过控制器吗?为什么会这样?
    猜你喜欢
    • 2010-09-14
    • 1970-01-01
    • 1970-01-01
    • 2017-11-24
    • 1970-01-01
    • 2021-07-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多