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 微型实例上创建交换文件/驱动器