【问题标题】:How do I published a Ruby on Rails application online?如何在线发布 Ruby on Rails 应用程序?
【发布时间】:2011-01-17 02:06:21
【问题描述】:

我有一个简单的 Ruby on Rails 应用程序,它通过 localhost 测试工作(都使用 sqlite 或 ruby​​ mysql2 gem)。 我有一个网络服务器准备好在线上传我的应用程序。 我知道我需要创建一个新的 mysql 数据库,这没问题,并且显然在 database.yml 中添加了连接信息,但是如何正确地将整个内容(应用程序根目录)上传到我网站的公共目录?

【问题讨论】:

    标签: ruby-on-rails mysql-management


    【解决方案1】:

    Rails 本身包含 a few links 以帮助您开始部署。前段时间我在你的船上,半小时内就开始使用Passenger和Apache(尽管我确实有一些简单的Apache经验)。

    开始只是为了向自己证明你可以做到

    这不是一个好主意,但最简单的“部署”方法如下(假设您已经将应用程序拉入部署环境,创建了数据库,并运行 rake db:migrate 和任何特定于应用程序的步骤,例如 Rails 3 上的 bundle install):

    1. rails server -p 80 在 Rails 3 上(./script/server -p 80 在 Rails 2 上)。
    2. 没有第 2 步。

    这必须在您拥有管理权限且端口 80 尚未被其他应用程序监听的机器上运行。这在很多方面都不是最理想的,其中最明显的是它不允许虚拟主机(即,它不会与从该服务器运行的其他“网站”合作),但这是一个很好的婴儿步骤脚进。

    转到机器的 FQDN,或者实际上是任何解析为机器 IP 地址的主机名(通过主机文件或 A 记录),您就会看到您的应用程序。

    现在做正确的事

    您需要执行以下操作以使您的应用程序“加速”:

    • 将其部署在 Apache 等网络服务器应用程序后面的虚拟主机后面
    • 使用面向生产的部署设置(WEBrick 的单线程等因素使其不适合生产)
    • 实际使用“生产”rails 环境

    我将推荐一个非常非常典型的 Apache/Passenger 部署环境。原因是(至少在我看来)这个特定的堆栈在 Internet 上得到了最彻底的支持,因此如果您需要帮助,您将获得最轻松的时间。

    1。设置 Apache

    我不想听起来像一个工具,但设置 Apache(如果尚未在您的部署环境中设置)留给读者作为练习。它在不同平台上的差异也很大,以至于我无法编写一个包罗万象的指南。粗略地说,使用你的发行版的包管理器(对于 Ubuntu,这是apt-get)来连接它。

    2。设置乘客

    乘客安装更加容易。您只需运行one command,他们的指南将引导您完成所有步骤。此时,在您的 Rails 应用程序根目录中,您将能够运行 passenger start 而不是 rails s 以让 Passenger 担任 WEBrick 曾经担任的角色。

    3。用 Apache 连接乘客

    乘客指南fairly thoroughly documents,一步一步,如何设置。 Apache 的 VirtualHost 条目中的 ServerName 属性应设置为您的主机名。 Passenger 会从您提供给 Apache 的公共目录中“找到”Rails 应用程序,当您重新启动 Apache 时,服务器第一次收到对页面的请求时,Passenger 将连接您的 Rails 应用程序并开始提供文件。

    我在编写本指南时并未执行这些步骤,因此我不确定这会在多大程度上自动完成,但请确保该站点已通过 a2ensite 启用(如果您'将这个VirtualHost 节点放在sites-available 目录中)并且通过a2enmod 启用该Passenger。

    1. 确保您的生产环境已准备就绪 这可能是您第一次使用生产环境。大多数 rake 任务不会自动作用于生产环境,但您可以通过在任何 rake 任务中包含 RAILS_ENV=production 来方便地强制它们执行。您很可能会运行的是rake db:migrate RAILS_ENV=production。 Rails 3 中的捆绑器独立于环境工作。

    5。去

    重新启动 Apache。如何做到这一点的细节会因发行版而异,所以你必须查一下。对于 Ubuntu,apache2ctl restart 为我做。

    访问您在ServerName 中定义的主机名,您应该会看到您的应用程序启动并运行。

    【讨论】:

      【解决方案2】:

      我听说像 capistrano 这样的宝石可以帮助解决这个问题。

      https://github.com/capistrano/capistrano

      【讨论】:

      • 我不明白它的作用
      • 它在您的本地服务器和生产服务器之间同步您的文件,并协助您对站点进行版本控制。我已经研究过使用它,但从未尝试过;我知道它是部署 Rails 应用程序的标准之一。
      【解决方案3】:

      Heroku 是一个很好的(免费)选项:http://docs.heroku.com/quickstart

      此外,部署到 Heroku 非常简单!

      【讨论】:

      • 它不是免费的,这没有帮助
      • Heroku 是免费的,但它并不能真正帮助您看到您已经拥有一台服务器。
      猜你喜欢
      • 2011-08-15
      • 2012-09-11
      • 1970-01-01
      • 1970-01-01
      • 2011-12-23
      • 2010-09-08
      • 2010-12-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多