我正在将我的网站迁移到亚马逊AWS,这引发了有关部署的基本问题。
我正在运行S3和EC2实例。 S3实例提供所有静态内容,如图像,JavaScript和CSS。但是,在EC2实例上,我在/ var / www /中启动了一个Git存储库,以便在我想更新代码库时可以执行“git pull”。
我似乎无法找到解决方案,以确保我如何确保同时上传静态内容和代码,以便它完全无缝。假设我想更新首页的徽标和布局。当我将logo.png上传到S3时,即使尚未部署新布局,我在EC2上的当前代码库也会自动指向新徽标。
我应该在S3上以新名称(例如logo-2.png)上传logo.png,将我对HTML中logo.png的所有引用更新为logo-2.png然后进行部署吗?
我希望你理解 - 谢谢!
答案 0 :(得分:1)
使用第三步来进行部署,例如Jenkins或Springloops或者rake。
这样,您可以通过一次提交同时触发两个构建步骤。
答案 1 :(得分:1)
是的,你应该以某种方式命名你的S3文件,例如我的文件中有当前的git commit hash:minified..css。无论您使用什么工具进行构建,首先执行S3步骤,然后执行应用程序代码。
这一点尤其重要,因为人们会将旧文件缓存在他们的浏览器缓存中,并且他们将获得旧版本。
我没有将所有文件命名为logo.gif。该文件永远不会改变,如果有的话,我会手动添加logo.gif?v = 1
要完成上述操作,我只需设置一个使用Rsync和Knox的简单节点脚本。
如果您有兴趣,我在这里开源dev tool。这与我的用例非常相似,但你可以将它拆开。
我还建议使用cloudfront从S3中提取。 Cloudfront快速启用,只需十五分钟即可完成设置。最后,不要忘记对这些资产进行gzip和使用Expired标头。