零停机部署
在开发运维中,没有什么比停机维护更令人沮丧的事了。本文将指引您如何使用Buddy中的零停机部署配置,将应用程序的停机时间减少到零。
使用流水线部署自动化旨在消除手动错误并缩短应用程序停机时间。Buddy中的流水线可让您轻松配置零停机时间部署。
零停机部署背后的实际机制是:首先将文件上传到服务器上的另一个目录,并且只有在部署完成后才会交换到应用程序的链接。
配置
要开始部署,您需要添加一个项目并将其连接到您要部署的存储仓(例如: GitHub、GitLab、Bitbucket、自带的Buddy Git或者您私有的Git自托管服务器)。然后您可以添加您的第一个流水线并指定其何时运行:
下一步是向流水线添加“原子部署”操作:
然后再添加您的服务器连接信息:
当您将远程路径添加到配置时,Buddy会在此路径中创建文件夹 current/
、deploy-cache/
和 release/
,确保您的服务器从 $REMOTE_PATH/current
文件夹为应用程序提供服务。
零停机部署工作原理
在将原子部署添加到您的流水线时,Buddy在您的服务器上提供的路径中创建3个文件夹:
current/
– 一个到当前版本的符号链接,指向您网站服务器的发布目录。releases/
– 包含已上传版本记录,对于每个版本都会创建一个带有修订标签名称的目录。deploy-cache/
– 用于存储新文件的上传过程。一旦上传完成,其内容将被复制到/releases
目录中的一个新目录。
该模板在流水线中创建两个操作:
将更改上传到
deploy-cache/
文件夹的SFTP操作,部署基于变更集,这意味着仅上传自上次部署以来更改的文件。在您的服务器上执行以下任务的SSH操作:
- 部署后将
deploy-cache/
文件夹复制到releases/$REVISION
文件夹 - 更改符号链接
current/
使其指向releases/$REVISION
- 清除旧版本 – 默认情况下,Buddy将保留前10个版本,这样您可以在需要时轻松执行回滚。
- 部署后将
环境变量
您在原子部署配置期间提供的所有访问数据都作为加密的环境变量保存在流水线中。这些变量用于两个操作,因此如果您需要更改访问数据,您只需编辑变量即可。
编辑原子部署
Buddy中的原子部署可以轻松编辑。模板的逻辑在SSH操作中为硬编码。您可以在那里管理以前的版本、配置回滚并将文件夹设置为正确的版本。可以通过定义自己的规则来自由修改脚本。
进行原子部署的流水线也可以修改。例如:您可以在部署之前运行构建和应用程序测试(编译css、js文件)。部署后,您还可以发送有关可用新版本的Slack消息:
一般来说,Buddy具有150多个专用操作,可在定义您自己的流水线时使用 —— 这些定制好的操作几乎可以完成您想要完成的所有工作。