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_name
是 facebook
,那么 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
本译文仅用于学习和交流目的,转载请务必注明文章译者、出处、和本文链接
我们的翻译工作遵照 CC 协议,如果我们的工作有侵犯到您的权益,请及时联系我们。
推荐文章: