星期三,十月 19, 2005

引入 SwitchTower:Rails 的分布式部署

Posted by admin

SwitchTower 是一个用于在多台机器上并行执行命令的实用程序。它可以(除许多其它操作)使用单个命令部署分布式应用程序。

当应用程序尚小时,您可能将其部署到单台机器,该机器同时运行 Web 服务器、应用程序服务器和数据库。在这种情况下,手动部署并不难承受。但随着应用程序的增长,您可能发现需要原子地将应用程序部署到两台 Web 服务器、四台应用程序服务器和两台数据库服务器。这是 SwitchTower 出场并作为止痛药的地方。

入门

假设您有一个现有 Rails 应用程序,希望将其部署到机器集群。SwitchTower 尝试尽可能无痛地完成整个流程

  • 安装 SwitchTower。这很简单,只需运行 gem install switchtower
  • 使用必要的 SwitchTower 文件装饰您的应用程序。只需执行 switchtower --apply-to /path/to/your/app
  • 告诉 SwitchTower 您的应用程序代码的位置以及它应部署到的机器。只需编辑 config/deploy.rb 并填入空白。
  • 设置您的机器,使它们准备好接收应用程序。这很简单,只需执行 rake remote_exec ACTION=setup
  • 最后,部署您的应用程序!只需键入 rake deploy 并让它顺利进行。

其他功能

除将应用程序简单地移动到各个方框中外,SwitchTower 还尝试让维护部署的任务更简单。假设在签出代码时出现问题,SwitchTower 将检测到该问题并回滚该更改,在所有已部署机器上执行此操作。这意味着应用程序不太可能在各个方框上不同步。

SwitchTower 还可以在开箱即用的情况下执行以下操作

  • 对生产数据库进行数据库迁移
  • 启用/禁用 Web 界面(目前仅适用于 Apache)
  • 在应用程序服务器上重启应用程序

SwitchTower 还使覆盖并扩展标准任务和编写您自己的任务变得非常简单。这些任务使用类似于 Rake 的简单语言,允许您自动化许多不同的任务。

更多信息

想更多地了解 SwitchTower?http://manuals.rubyonrails.com/read/book/17 有一个用户手册,其中包含大量有用的妙语。