我有一个部署到 AWS 的 Python 解决方案,我当前的部署方法感觉非常过时。每次更新服务时,我都会遵循以下步骤:
- 将更改过的 python 文件解压到 tar 中
- 将 tar 复制到实例上的 /tmp 目录中
- 在新的 setup.py 文件中运行 sudo python setup.py install
- 重启supervisord
服务器永远不会存在多个版本,如果存在不向后兼容的变化,则客户端上会有强制更新机制。
我如何使用最新技术来改进这一过程?
答案1
答案2
另一个解决方案可能是:AWS Elastic Beanstalk。
AWS Elastic Beanstalk 支持许多平台,包括 Python。目前,对于 Python,它们支持:
- 运行 Python 3.4 的 64 位 Amazon Linux 2015.03 v1.4.3
- 运行 Python 2.7 的 64 位 Amazon Linux 2015.03 v1.4.3
- 运行 Python 2.6 的 64 位 Amazon Linux 2015.03 v1.4.3
- 运行 Python 3.4 的 64 位 Debian jessie v1.4.3(预配置 - Docker)
如果上面的环境不适合你,你也可以通过 Docker 配置自己的环境。完整环境请参见这里。
AWS Elastic Beanstalk 处理很多事情:
- Auto Scaling 组
- 负载均衡器
- 应用程序版本控制
- 通知
- 自定义资源(例如:RDS、ElastiCache 等)
您还可以使用.ebextensions
脚本扩展您的环境。例如,您想要配置 SSL 或添加额外的 EBS 卷。
它还支持蓝绿部署策略交换 CNAME。