2.1. 什么是 Rocketeer ?

未匹配的标注

ROCKETEER 是什么?

Rocketeer 是现代开发人员的一种快速、简单的部署工具。如果你过去已经使用过 Capistrano ,那你已经熟悉它的功能要点,可以直接跳过本节,其他的人请跟我继续。

无论你是通过 FTP、或是 SFTP 这类 Sublime 插件进行手动部署,还是通过定制的部署脚本,Rocketeer 都会为你提供帮助并自动化完成你的工作。请注意,Rocketeer 需要SSH连接 – 这意味着如果你使用共享主机(并使用 FTP 上传文件),我可能无法为你做任何事情。

任务运行器

Rocketeer 本质上是一个基本的 SSH 任务运行器,它定义了服务器、在该服务器上执行的命令,并根据各种上下文运行它们。 你可以使用 Rocketeer,请参阅 任务 文档。

部署

Rocketeer 提供了一些内置任务来部署和管理你的远程项目。

核心文件夹

从本质上讲,该软件包的策略受 Capistrano 的启发,并且相对简单些。在开始之前,你将在服务器上为 Rocketeer 提供一个 root_folder - 这个文件夹是 Rocketeer 的一个独立的小世界:它所做的一切都将在该文件夹中。

然后你设置你的 application_name。这是为了让 Rocketeer 在同一台服务器上处理多个应用程序。应用程序名称将用于在 root_folder 中创建一个子文件夹,与应用程序相关的所有内容都会存放到里面。例如,你的 root_folder/var/www/,而 application_namefacebook,那么 Rocketeer 将创建 /var/www/facebook/,在这个项目中所做的一切都会存放 在那个文件夹中。所有东西都打包并封装起来,这样你的服务器上可以拥有尽可能多的应用程序,而且仍然会很顺利。

策略

如前所述,Rocketeer 的目录架构受 Capistrano 的启发。 因为尽管我不喜欢后者的某些方面,但你也不能否认经过多年来深思熟虑和完善的东西。

在上面提到的文件夹(/var/www/facebook/)中,Rocketeer 会创建三个文件夹。

current 将始终是你的应用程序的 最新 版本存在的位置。无论其他文件夹中发生什么,这就是你要在线提供的文件夹。 除了这个文件夹,你永远不会提供任何其他文件夹,万一需要提供一个不是最新版本的版本(例如最新版本出现了 bug),那么你需要使用 Rocketeer 的工具来回滚。 在我们的例子中,Apache 指令将如下所示:

<Directory /var/www/facebook/current/public/>
  Options Indexes FollowSymLinks MultiViews
  Order allow,deny
  Allow from all
  AllowOverride All
</Directory>

第二个文件夹 releases 是存储应用程序历史记录的地方。每次点击 deploy 时,都会在releases 中创建一个带时间戳的文件夹(例如 20130721010101 表示的是 2013-07-21 01:01:01 )。你可以在配置文件中配置历史记录的个数:默认情况下它将保留四个最新版本。创建新版本并准备好服务后,Rocketeer 将更新 current 文件夹的 符号链接 以使其指向它。 该系统特别灵活,因为它允许 Rocketeer 在回滚的情况下简单地更新 current 指向的文件夹。

最后是第三个文件夹,shared,存储各个发布版本共享的文件。以我们的 Facebook 应用程序为例,用户可以在上面上传他们的头像,存储在 public/users/avatars 中。这一切看起来很顺利,直到你决定再次部署,Rocketeer 会从头开始创建一个新的发布原始文件夹,你之前上传的头像将无法在其中显示。为了解决这个问题,在配置文件中有一个 shared 数组,可以在其中设置相对于应用程序根目录的路径,如 public/users/avatars 。一旦 Rocketeer 检测这个配置,它会自动将 avatars 目录移动到 shared,然后每次部署时,新版本都会继承所有共享文件夹。默认情况下,Rocketeer 始终共享应用程序的日志,以便保留发生异常的历史记录,但你可以根据应用程序添加任意数量的文件夹。假设你有一个存储在文件中的 SQLite 数据库,你可能也需要共享它。

总而言之,以下是你的远程服务器看起来的样子:

| var
|-- www
  |-- facebook
    |-- current => /var/www/facebook/releases/20130721000000
    |-- releases
    |  |-- 20130721000000
    |  |  |-- app
    |  |     |-- storage
    |  |       |-- logs => /var/www/facebook/shared/app/storage/logs
    |  | 20130602000000
    |-- shared
      |-- app
        |-- storage
          |-- logs

本文章首发在 LearnKu.com 网站上。

本译文仅用于学习和交流目的,转载请务必注明文章译者、出处、和本文链接
我们的翻译工作遵照 CC 协议,如果我们的工作有侵犯到您的权益,请及时联系我们。

原文地址:https://learnku.com/docs/rocketeer-doc/w...

译文地址:https://learnku.com/docs/rocketeer-doc/w...

上一篇 下一篇
thebestxt
贡献者:1
讨论数量: 0
发起讨论 只看当前版本


暂无话题~