将Python应用程序部署到AWS

时间:2014-01-11 16:47:09

标签: python git deployment amazon-web-services amazon-ec2

由于我的一些项目变得越来越复杂,需要更多工作才能将应用程序实际部署到服务器,所以我想请求您的帮助,因为我没有很多经验。

目前我有一个用Flask编写的应用程序,使用MySQL作为后端,Apache使用mod_wsgi,可以在单个EC2实例上使用。现在,事情将变得稍微复杂一点,因为我将在另一个域上使用另一个“克隆”版本的应用程序,使用新的模板,语言和一些细微差别,但核心代码将是相同的。我还有一些“demo”网站,可以在domain.com/demo上找到,由不同的app处理,因为它的功能有限,所以它与主版本不同。

我的部署实践现在,因为这相对简单,只需wget从我的Dropbox到EC2实例的文件(我ssh in)并重新启动apache服务。由于我在单个文件和模板目录以及其他一些不经常更新的较小脚本中都有应用程序代码,因此这不是问题。当我更改代码时,我只是更新了源代码,当我更改模板时,压缩它们,wget,解压缩,就是这样。

这就是我到目前为止做的事情。我最近开始使用GitHub进行版本控制,并希望为我的后续关注提供一些建议:

  • 哪种方法可以自动化这个过程?我认为首选的方法是在每次提交时从git存储库中提取内容并将其部署在EC2实例上。如果是这种情况,我该如何自动化? Github钩子似乎有点矫枉过正,我希望有更“简单”的工具。也许亚马逊提供的豆茎可以进入?

谢谢!

1 个答案:

答案 0 :(得分:2)

至少,将所有命令放在fabric脚本中,从长远来看,这将使事情变得更容易。

你有一个非常广泛的问题,有很多主观答案的机会,我必须投票才能关闭它。你的问题有很多好的部分,这就是为什么我试着提供一些答案。

  1. 没有首选方法。你想安装git作为你的生产/登台/网络机器的依赖吗?如果你愿意,使用git进行部署是完全可以接受的,如果没有,它就像使用内置的rsync实用程序一样容易,并使用结构与它进行交互。网上有很多脚本显示如何使用任何一种方式设置结构。可能还有其他一些方法,但rsync或git pull似乎是最流行的部署方式。

  2. Fabric允许您定义roles,并且可以轻松地一次部署到多个服务器。

  3. 特殊情况需要特殊功能。您可以在fab文件中定义这些。您可以创建逻辑以部署到函数中的常规Web服务器,然后使用单独的函数来构建和部署碎片服务器。

  4. 亚马逊提供了几种自动缩放工具,我从来没有使用过任何工具,但我确信很多人都有,而且很多人都在博客上写过他们的经历。