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

1 mysql-management ruby-on-rails

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

Ste*_*ven 5

Rails本身包含一些链接,可以帮助您开始部署.我不久前在你的船上,我在半小时内开始使用Passenger和Apache(虽然我确实有一些轻松的Apache体验).

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

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

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

这必须在您具有管理权限的计算机上运行,​​并且其他应用程序尚未侦听端口80.这在许多方面都不是最理想的,其中最明显的是它不允许虚拟主机(即,它不会与从该服务器运行的其他"网站"合作),但这是一个很好的宝贝步骤脚进去.

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

现在做得恰到好处

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

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

我将推荐一个非常非常典型的Apache/Passenger部署环境.原因是(至少在我看来)这个特定的堆栈在整个互联网上得到了最全面的支持,因此如果您需要获得帮助,那么您将拥有最简单的时间.

1.设置Apache

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

2.设置乘客

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

3.用Apache连接Passenger

乘客指南相当彻底地逐步记录如何设置它.ServerNameApache的VirtualHost条目中的属性应设置为您的主机名.Passenger将从您为Apache提供的公共目录中"找到"Rails应用程序,当您重新启动Apache时,服务器第一次获取页面请求时,Passenger将连接您的Rails应用程序并开始提供文件.

我正在编写本指南时没有执行这些步骤,所以我不确定这是自动完成的程度,但要确保该站点已启用a2ensite(如果您将此VirtualHost节点放入其中)该sites-available目录)和乘客通过启用a2enmod.

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

去吧

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

按照您的定义访问您的主机名ServerName,您应该看到您的应用程序已启动并运行.