部署版本化资产的策略(适用于PHP应用程序的资产到Amazon S3)

时间:2015-02-01 17:56:50

标签: php amazon-s3 web-deployment

我目前使用s3cmd部署PHP应用的静态资产。

如果Amazon S3的资产发生了变化(如JavaScript脚本),我会手动重命名,以便新版本由Amazon Cloudfront同步并提供服务。

是否有将PHP应用程序的静态资产部署到Amazon S3的文档化实践?我已经看到网站使用哈希来引用其资产的某个部署版本。我想知道获取该哈希值的方法(比如git commit SHA?)将被Web应用程序引用。

我能看到的方法是写入一个包含当前SHA的独立配置文件,并从中读取以进行部署。

使用当前流程更新1

我希望让资产部署更加自动化:

  • 更改应用的JavaScript
  • 将脚本从app.23.js重命名为app.24.js
  • 修改网站的标题HTML模板以引用app.24.js
  • 将所有更改提交给git
  • develop分支合并到master
  • 使用新版本号
  • 标记提交
  • 将代码推送到BitBucket
  • 使用s3cmd将新脚本同步到Amazon S3(以及Cloudfront CDN)
  • SSH进入服务器,并拉出最新的git树。生产服务器为master分支提供服务。

1 个答案:

答案 0 :(得分:1)

我想这个问题没有具体的答案,但这里有一些事情。

  1. 如果您只想自动执行您正在进行的手动工作,那么查看一些部署工具可能是值得的。 Capistrano和Magallanes是我想到的两个名字,但你可以谷歌这个,我相信你会找到很多选择。

  2. Rails框架建立在有最佳做事方式的理念之上。它还使用哈希来版本化静态资产,并在运行时开箱即用。您可以考虑在您的案例中实施哈希。

  3. Grunt是您可以研究的另一种自动化工具。我发现这个模块可能会派上用场https://github.com/theasta/grunt-assets-versioning

  4. 我想对我说2,3,4是您工作流程中的问题区域。每次手动重命名和更新代码听起来不太好。正如您所指出的,GIT哈希是唯一的,因此可能会在部署期间将GIT哈希附加到您的资产并将它们同步到S3 / Cloudfront?