EC2 上的代码部署

Posted

技术标签:

【中文标题】EC2 上的代码部署【英文标题】:code deployments on EC2 【发布时间】:2013-03-06 07:06:19 【问题描述】:

有很多关于在 EC2 上部署 AMI 的资源。但是对于基于 php/Java 的网站的增量代码更新是否有任何解决方案?

假设我有 10 个 EC2 实例,它们都在运行基于 PHP/Java 的网站,并且该实例具有本地的 docroot。我可能想在一天中对其进行大量代码部署。

我不想在每次有代码更新时创建新的 AMI 副本并将其扩展到新实例。

任何关于如何最好地做到这一点的线索将不胜感激。我们使用 subversion 作为我们的主要代码存储库,过去我们只在一到两台服务器上完成了 SVN 更新/co。

谢谢。

【问题讨论】:

【参考方案1】:

您应该查看 Elastic Beanstalk。本质上,您只需打包您的 WAR 或其他代码文件,通过 AWS 的命令行/Eclipse 集成将其上传到存储桶,然后自动执行部署。

http://aws.amazon.com/elasticbeanstalk/

【讨论】:

【参考方案2】:

Elastic Beanstalk 正是为此而设计的。我们使用 Elastic Beanstalk java/tomcat 风格,但它也支持 php、ruby、python 环境。它有允许你部署代码的 web 控制台(它甚至保留它的历史),它还有 git 工具来从命令行部署代码。

它还内置了监控、负载均衡器、自动缩放。只需几个 Web 表单条目即可控制所有这些。

【讨论】:

【参考方案3】:

您是否考虑过使用专门为您管理此类事情的工具,Puppet 在该领域备受推崇。

看看这里:

https://puppetlabs.com/puppet/what-is-puppet/

(不,我不是 Puppet Labs 的员工 :))

【讨论】:

【参考方案4】:

Capistrano 是一次将代码部署到多个服务器的绝佳工具。 Chef 和 Puppet 是使用数据库、网络服务器等设置这些服务器的绝佳工具。

【讨论】:

【参考方案5】:

去 Capistrano 吧。这是在多台服务器上部署代码的好方法。

【讨论】:

【参考方案6】:

如前所述,如果您只想要一个网络服务器并且不想担心细节,那么 Elastic Beanstalk 是一个不错的选择。

另外,看看 AWS CodeDeploy。您可以更好地控制实例的生命周期,并且您将看到与您现在拥有的非常相似的东西(您设置的一组 EC2 实例)。您甚至可以使用 Auto Scaling 在实例启动时自动部署。

【讨论】:

【参考方案7】:

您可以使用 Capsitrano 或 TravisCI。

【讨论】:

以上是关于EC2 上的代码部署的主要内容,如果未能解决你的问题,请参考以下文章

AWS Cloudformation 上的 UserData 未部署在 EC2 实例上

我想在运行代码部署时在被新自动缩放组替换的 EC2 实例上运行脚本

如何在单个 AWS EC2 实例上的 Node 中部署多个微服务?

在弹性 beantalk 部署上的 ec2 微型实例上创建交换文件/驱动器

我想在代码部署运行时在新的自动扩展组替换的EC2实例上运行脚本

使用 FCM 解析部署在 Amazon EC2 Android 通知上的服务器