php 是一门脚本语言,脚本语言的特点就是不需要编译,因此 PHP 的代码发布非常快,一般只需要两部:1.本地 git commit && git push,2.服务器上 git pull。
但是一但中间环节需要做的时候比较复杂的时候,该过程就比较枯燥而且繁琐了。举个例子:我本地写完代码,commit and push 了代码,但是本次代码涉及到要修改数据库、要修改线上环境的本地配置、要更新依赖(composer)等等,那么我就需要1.登录服务器,2.执行 git pull,3.执行 migrate 脚本,4.执行环境切换脚本,5.执行 composer install。一次还行,多次的话就繁琐了。
方案一:使用 DaoCloud 完成完整的自动化部署
DaoCloud 是一个在线的 Docker 容器平台,提供完整的自动化部署过程,当前支持与很多平台对接,包括国内的 Coding。
操作
在 DaoCloud 上新建一个项目,设置代码源
设置项目的流程阶段,尤其是构建阶段
提交代码,只要满足你设定的构建任务即可自动完成构建,自动部署等操作
优点
稳定:DaoCloud 算是目前国内提供 Docker 服务比较早和比较稳定的平台,比较可靠。
安全:能够完整保留镜像版本,有助于版本回退等操作快速切换。
跨平台型和可移植性高:这是 Docker 的优点,只要构建完了镜像,到处都可以使用。
缺点
构建速度慢:尤其在项目较大时,DaoCloud 每次需要 clone 完整的代码,然后执行完整的构建流程(即使已经用上相当多的缓存),构建过程相对较慢。
门槛较高:需要非常熟悉 Docker,对于没有该方面能力的人基本是不能完成该操作的。
方案二:使用 webhook 触发项目部署
Webhook 允许第三方应用监听代码托管平台上的特定事件,在这些事件发生时通过 HTTP POST 方式通知( 超时5秒) 到第三方应用指定的 Web URL。 例如项目有新的内容 Push,或是 Merge Request 有更新等。 WebHook 可方便用户实现自动部署,自动测试,自动打包,监控项目变化等。目前大部分代码托管平台都已经支持该方式。
操作
找到代码托管平台的项目 webhook 的设置的地方,填写 token 和 Web URL,开启 Webhook。
编写 deploy.php 脚本,用于接收处理 Webhook 请求,参考
提交代码,只要编写的脚本正确,即可自动完成构建,自动部署等操作
优点
简单:脚本编写简单,且一般编写一次之后所有项目均可使用,例如上面的参考例子。
快速:发布快速,因为该过程只做 git pull 和 composer install 等操作,会完全使用本机已经存在的文件和 composer 缓存,速度极快。
缺点
项目可移植性差:由于一般写这种脚本都是基于 linux 的(windows 也能写),所以在不同平台得写对应的部署脚本。
兼容性差:可能由于像权限等啥的问题,导致服务器不能完成自动部署的操作,或者由于脚本写的不够完善,导致脚本跑了一般产生问题(但这都是脚本的锅啊。。。)。
- 本文作者: kriss
- 本文链接: http://www.kriss.pub/2017/11/20/php-deploy/
- 版权声明: 本博客所有文章除特别声明外,均采用 MIT 许可协议。转载请注明出处!
