【问题标题】:Deploying Rails app to shared hosting service gives permission error将 Rails 应用程序部署到共享托管服务会出现权限错误
【发布时间】:2012-05-02 13:54:25
【问题描述】:

我正在尝试将 Rails 3.2.3 应用程序部署到以 Postgres 作为我的数据库的共享托管服务 (1and1)。我通过 FTP 将我的文件夹上传到网站目录,并在控制面板中将域指向我的 rails 文件夹,但是当我转到网站主页时,我得到“您无权访问此服务器上的 /”。我尝试使用Passenger,但我不确定是否需要这样做或者它是否有效。我对此很陌生,所以分步说明会很棒。

我使用的是 Mac OSX Snow Leopard,如果需要更多信息,请告诉我。任何更多的背景文章也将不胜感激,我一直在寻找可以很好地解释其工作原理的东西,但我还没有找到一个好的。

【问题讨论】:

  • 部署 Rails 应用程序并不像您在这里所说的那么简单。当您说共享主机时,您是指 VPS 还是使用 CPanel 的东西?你打算使用什么网络服务器(通常是 Apache 或 Nginex)?你有shell访问权限吗?您将创建一个从您的 Web 根目录到应用程序目录中的 public/ 文件夹的符号链接,确保设置了目录权限。如果这是一个 VPS,我建议按照安装 Redmine 或 Teambox 等应用程序中概述的步骤进行操作,如果您可以安装这些应用程序,您将更好地了解您必须在此处做什么。
  • 这是我很难理解的东西。不过我会调查的。

标签: ruby-on-rails ruby-on-rails-3 hosting shared-hosting


【解决方案1】:

首先你需要将虚拟主机指向公共目录,而不是根路径。

其次:我建议你在本地机器上运行 rake assets:precompile 并将 public/assets 文件夹加载到你的主机。

第三:查看你上传的文件和文件夹的权限,网络服务器应该能够读取和执行它们。

第四:如果主机运行 apache 作为网络服务器,则需要安装 mod_passenger。

【讨论】:

    【解决方案2】:

    在我看来,您之前没有部署过 Rails 项目,这真的不适合胆小的人,也不像“安装 apache”并启动它那么简单——如果你尝试让它在 OSX 上运行,它非常奇怪地配置了 apache(尤其是在 Lion、eesh 上)

    所以。

    1) 不必费心在您的 Snow Leopard 机器上通过 Apache 运行 RoR,使用随附的 rails 服务器 (rails s --debugger),无论如何您都会希望调试器在大多数时间可用。

    2) 使用大型端到端教程让 RoR 在您的 1and1 机器上运行,最好在 Ubuntu 上运行(这更容易)Classic Slicehost Tutorial

    3) 完成 #2 后,请告诉我们您的进展情况。

    【讨论】:

    • 一个问题是当你 ssh 到 1and1 服务器 'sudo: command not found'
    • 好吧,如果它是共享主机,为了安全起见,普通用户可能无法访问 sudo。
    • 不完全。如果用户可以访问 bundle 命令,您可以这样做 bundle install --gemfile /path/to/app/Gemfile --path /path/to/app/shared/bundle --deployment --quiet --without development test
    • 您是否有理由必须使用 1and1?现在有很多主机可以为您提供真正的“裸机”虚拟机,您可以在其中真正完全控制并且您永远不会遇到像上面的一个 sudo 那样的问题。不尝试支持一个,几个例子包括 linode、rackspace、mediatemple、Amazon EC2,所有这些都是不错的选择。如果没有完全的控制,你会让这个过程变得比它需要的更困难。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-07-17
    • 2019-10-24
    • 2017-08-29
    • 1970-01-01
    • 1970-01-01
    • 2020-03-19
    • 1970-01-01
    相关资源
    最近更新 更多