如何部署一个 PHP 项目
PHP 项目的部署方式相对其他 Web 编程语言来说,是比较简单的。如果未使用一些守护类进程,只需要把最新的代码更新到线上即可。这里总结了几种常见的 PHP 项目部署方式。
ftp
FTP 是最简单,也是最原始的项目部署方式。十多年前的虚拟主机还远没有现在云主机这么丰富和强大的自定义功能。运行环境是服务商提前安排好的,提供一个几百 M 或几 G 的目录空间。要把项目代码放到线上的这个空间,只有 FTP 这个选择。所以这也是那时 PHP 项目流行的部署方式。
Git
Git 通常是用来作为源码管理工具,但其提供的事件钩子(Hook)机制,让 Git 功能拥有了无限扩展的可能。通过 Git 的 Hook 功能,可以在源码 push
后,触发指定的脚本,实现项目的自动化和及时部署。
Deployer
Deployer 是一个 PHP 的专业部署工具。这个工具有点类似于 Ruby 的 Capistrano。基于 SSH 协议,通过调用远程服务器上的 Shell 命令来实现项目的自定义部署。其特点是部署时会用目录的方式来区分和保留部署源码的历史版本,这样可以实现线上部署版本的快速回退。同时支持自定义任务,这样给项目部署提供了更大的灵活性。
Envoy
Envoy 同样也是一个 PHP 的部署工具,是 Laravel 框架提供的一个官方组建包。跟 Deployer 一样基于 SSH 协议。它没有提供部署源码的历史版本功能。只是基于 Blade 模板功能提供了一套远程 Shell 的操作语法,实现对远程主机的命令操作,来实现部署的目的。这有点像 Python 语言的 Fabric。
在以上的部署方式中,FTP 目前应该属于要淘汰的方式了。多人协作的项目中,用 FTP 部署完全就是一场争夺战。Git 比较适合业务不稳定,需要频繁发布代码的部署场景。Deployer 和 Envoy 原理上比较类似,但 Envoy 更加轻量,而 Deployer 更加专业。以上所有的部署方式仅适合中小项目和公司,当两者达到一定规模,就需要更加复杂庞大的自定义部署平台了。