目前,我正在使用以下手动过程将我的 PHP 网站从登台部署到生产:
- 使用在线 YUI 压缩工具缩小 CSS 和 JavaScript 文件。
- 将原始 CSS 和 JavaScript 文件移动到另一个目录(以备份它们),然后用缩小的 CSS 和 JavaScript CSS 文件替换它们。
- 开始将所有文件从我的临时服务器复制到我的 Windows PC。
- 删除暂存 .htaccess 和索引文件,这样它们就不会被复制到生产服务器(这些文件具有暂存环境的特定内容)。
- 打开 WinSCP 并转到生产服务器上的 Web 根目录,然后将主索引文件切换为“正在进行的更新”,这样如果任何访问者访问该站点,他们就会收到一条消息,说它暂时关闭。
- 然后使用 WinSCP 从我的 PC 复制到生产 Web 服务器(这会覆盖服务器上的所有现有文件),大约需要 4 分钟才能看到有很多文件。
- 使用 SSH 登录生产服务器并运行大约 5 个命令来为各种可写目录设置适当的权限,并确保所有内容仍在 www-root 组下。我认为使用 SSH 的上传过程会更改所有现有权限。
- 将“正在进行的更新”索引文件切换回正常索引。
整个过程非常复杂,大约需要 5-10 分钟,我每次对网站进行更改时都必须这样做,因此它变成了一件苦差事。
现在有没有办法使用一些脚本工具来自动化这个过程?或者是否有一个很好的部署工具,人们可以使用它来完成所有这些工作?我的临时和生产机器是基于 Ubuntu 12.04 服务器的,所以我可能可以使用 bash 脚本来完成一些工作。
我可以看到到目前为止可以进行的一些改进是:
- 向我的网站添加一些代码,以便它检测它是在 Staging 还是 Production 中,然后根据环境使用原始或缩小的 CSS/JavaScript 文件。这将节省我手动交换文件。
- 使用命令行 YUI 压缩器并在需要时从脚本文件运行它。
- 使用类似 rsync 的东西,这样它只会将更改的文件从我的登台服务器复制到生产服务器,而不是覆盖每个文件
我工作过的一家公司使用Fabric 命令行工具来自动化部署和做这种事情。但是,这是一个不错的选择还是有更好的工具?