0

我正在尝试将 Rails 应用程序从 Heroku 迁移到 Amazon EC2,而在此之前我从未在服务器上工作过,更不用说在 Linux 上或使用 Apache 了。除了 Apache,我还在使用 Thin gem。我尝试配置我的 httpd.conf,就像我在 [here] 中阅读的那样,但它只显示了一个“Index of /”页面,该页面显示了目录中的文件(我的静态错误页面和 favicon),这不是我通常的方式查看我的应用程序(根设置为另一个视图)。1

<VirtualHost *:80>
  DocumentRoot /opt/bitnami/apache2/myapp/public
  <Directory /opt/bitnami/apache2/myapp/public>
    Allow from all
    Options -MultiViews
  </Directory>
</VirtualHost>

我是否在 httpd.conf 文件中错误地声明了我的应用程序?我意识到我直接指向公共目录,而我的正常根目录是 Pages#index,但是我在 httpd.conf 文件中看到的 Rails 配置似乎都指向公共目录。

我认为它必须与我配置文件的方式有关,因为我的应用程序在 Heroku 和本地的正确页面上启动。

4

1 回答 1

0

在配置 Apache conf 文件之前从这里开始。您需要乘客才能运行您的 Rails 应用程序。如果您安装了 Rails,您可以在 Ubuntu 上使用 rvmsudo 执行此操作,如下所示。

xyz@superGLTS:~$ rvmsudo gem install passenger
xyz@superGLTS:~$ rvmsudo passenger-install-apache2-module

确保使用 rvmsudo,因为它会考虑所有 Rails 环境变量。

如果此操作失败,则发布错误输出,因为您可能需要安装其他支持库。

然后,一旦您拥有 Rails 应用程序的应用程序服务器,我们就可以返回您的 conf 文件。

EDIT1:如果乘客安装在较新的 Ubuntu 上失败,那么您可能需要安装 build-essential,如下所示:

xyz@spuerGLTS:~$ sudo apt-get install build-essential

编辑2:

您现在遇到的错误是 tmp/cache 的权限问题。运行您的 Web 服务器的用户:组必须拥有或能够写入该目录结构 tmp/cache/.... 在您在 Git 上发布的 httpd.conf 中,您有 daemon:daemon 运行您的 Web 服务器。那是你的问题。您可能可以通过将 tmp/cache 更改为 daemon:daemon 来快速修复它,但这有点半生不熟。您应该为此唯一目的创建一个用户:组,然后正确配置 environment.rb,这已经有一段时间了,但是在乘客指南中应该有一个关于用户配置和设置权限的部分

于 2013-02-27T14:31:02.593 回答