在亚马逊云服务上开始使用Django
我正在开始把一些应用程序迁移到亚马逊云服务(AWS)。我的应用是用Python和Django开发的,数据库用的是MySQL。
我打算先使用EC2和EBS。
我想了解几个方面:
有没有好的分步教程,能详细讲解如何在AWS上部署Django?我查了一下,大部分教程都是两年前的,所以我担心它们已经过时了。
我想知道,我应该从哪个AMI开始?我知道有一个BitNami的AMI,里面已经预装了Django,但我看到很多其他来源说应该从一个干净的Linux系统开始,然后自己安装所有东西。为什么呢?
还有其他重要的事情我需要考虑吗?我对系统管理的经验很少(现在的应用在WebFaction上),所以我不太确定我应该关注哪些方面。
还有几点补充:
- 我打算在同一个EC2实例上运行多个应用,这样可以吗?
- 我现在使用virtualenv来区分不同的应用,我想我可以在EC2实例上继续这样做吧?
谢谢!
3 个回答
这个仓库正是为了解决这个问题而创建的——提供一个可以在AWS Elastic Beanstalk上部署的基本Django项目的参考实现。
https://github.com/pushkarparanjpe/django-awsome
它包含了:
- 静态资源
- 数据库后端
- Django自带的管理界面
只需配置你的EBS环境,克隆这个仓库,然后部署就可以了!
你可以参考亚马逊EC2实例的官方文档来设置:http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-launch-instance_linux.html
建议你从一个熟悉的AMI开始,比如如果你用的是Ubuntu,就可以直接在推荐页面选择一个Ubuntu的AMI。我没有使用BitNami服务器,我的Django网站部署得很顺利。
如果你使用的是Apache服务器,只需按照官方Django文档上的说明操作即可:https://docs.djangoproject.com/en/1.5/howto/deployment/wsgi/modwsgi/
我尝试了很多博客,但正如你所说,它们都过时了。还是用官方文档吧,这样能省下很多时间。
这里的EC2并没有什么“特别”的地方。它只是提供了一个裸机(或者说是从自定义AMI预配置的系统实例)系统,你可以完全访问这个虚拟化的系统,所以可以放心地自己去尝试和破坏。可以把它想象成一个特定的虚拟私人服务器(VPS)。
你需要自己准备部署,这并不难——只要按照文档来做就行。我建议你从一个基础的Linux发行版开始,然后再添加需要的软件,而不是依赖某个预配置的镜像。关于你的问题:
你需要做两件事:设置你的实例(账户、所需软件、其他自定义设置,所以一些Linux管理指南会很有用)和准备Django应用的部署(部署Python代码,连接到web服务器)。对于后者,可以参考Django的一般部署说明( http://docs.djangoproject.com/en/dev/howto/deployment/ )。
从你喜欢的Linux发行版的AMI开始,然后从它的仓库中添加必要的软件。
尽快挂载并使用EBS来存储所有数据。因为当EC2实例重启时,它会清除所有数据,所以要做好准备。做系统快照到AMI,以便在出现故障时能快速恢复。
是的,你可以在一个实例上部署多个应用,但要注意EC2实例是虚拟化的(我认为“虚拟化税”相对较高,尤其是对于较小的实例),所以你可能会遇到一些性能问题。可以假设,过一段时间后你可能需要迁移到更大的实例或多个实例。
Virtualenv应该是你默认的部署工具。没错,你在这里也可以使用它。