在Amazon AWS上部署网站

时间:2011-09-10 18:16:05

标签: git amazon-s3 amazon-web-services web-deployment

我正在将我的网站迁移到亚马逊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然后进行部署吗?

我希望你理解 - 谢谢!

2 个答案:

答案 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标头。