我如何在线发布Ruby on Rails应用程序?

时间:2011-01-17 02:06:21

标签: ruby-on-rails mysql-management

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

3 个答案:

答案 0 :(得分:5)

Rails本身包含a few links,可帮助您开始部署。我不久前在你的船上,我在半小时内开始使用Passenger和Apache(尽管我确实有一些轻松的Apache体验)。

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

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

    Rails 3上的
  1. rails server -p 80(Rails 2上的./script/server -p 80)。
  2. 没有第2步。
  3. 这必须在您具有管理权限且其他应用程序尚未侦听端口80的计算机上运行。这在许多方面都不是最理想的,其中最明显的是它不允许虚拟主机(即,它不会与从该服务器运行的其他“网站”合作),但这是一个很好的宝贝步骤进入。

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

    现在正确执行

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

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

    我将推荐一个非常非常典型的Apache / Passenger部署环境。原因是(至少在我看来)这个特定的堆栈是互联网上最全面的支持,所以如果你需要帮助,你将有最简单的时间。

    1。设置Apache

    我不想听起来像一个工具,但设置Apache(如果它尚未在您的部署环境中设置)留给读者练习。它在各种平台上的变化也很大,我无法写出一个繁琐的指南。粗略地,使用您的发行版的包管理器(对于Ubuntu,这是apt-get)来连接它。

    2。设置乘客

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

    3。用Apache连接Passenger

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

    我正在编写本指南时没有执行这些步骤,所以我不确定这是自动完成的程度,但要确保通过a2ensite启用该站点(在这种情况下)您将此VirtualHost节点放在sites-available目录中)并且通过a2enmod启用了Passenger。

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

      重启Apache。有关如何执行此操作的详细信息将因分发而异,因此您必须查找它。对于Ubuntu,apache2ctl restart为我做了。

      按照ServerName中的定义访问您的主机名,您应该会看到您的应用程序正常运行。

答案 1 :(得分:1)

我听说像卡米斯特拉诺这样的宝石可以帮助解决这个问题。

https://github.com/capistrano/capistrano

答案 2 :(得分:0)

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

此外,部署到Heroku也很简单!