在aws上运行Django项目的最佳方式是什么?

2024-05-18 09:09:54 发布

您现在位置:Python中文网/ 问答频道 /正文

项目应该如何部署和运行。这个空间里有很多工具。应该使用哪种?为什么?在

  • 主管
  • 古诺科恩
  • Ngnix公司
  • 织物
  • 博托
  • 皮普
  • 虚拟人
  • 负载平衡器

Tags: 工具项目部署空间公司主管织物ngnix
3条回答

这取决于你的配置。我们在Rackspace上的环境中使用以下堆栈,但是您可以在AWS上使用EC2实例设置相同的东西。在

  • Ubuntu 11.04版
  • 清漆(内存缓存)以避免磁盘查找
  • NginX到服务器静态内容
  • Apache到服务器的动态内容(MOD-WSGI)
  • Python2.7.2和Django
  • 詹金斯为我们的持续建设
  • 用于版本控制的GIT
  • 用于部署的结构。在

因此,它的工作方式是,向源存储库的GIT推送是由Jenkins轮询的。然后,詹金斯把变化从原点拉下来。构建一个Python Egg,运行单元测试,使用Fabric将这个Egg部署到必要的环境中,并重新加载Apache配置,以确保分叉的Apache进程能够接收到新的Python Egg。在

希望这有帮助。在

正如Michael Klockel已经指出的,取决于您的配置,我有:

  • Ubuntu 10.04 LTS
  • Nginx公司
  • 乌兹基
  • git版本控制
  • python virtualenv和pip

您可以在此处检查部署设置: Django, Virtualenv, nginx + uwsgi import module wsgi error

为什么我在这里使用nginx和uwsgi: http://nichol.as/benchmark-of-python-web-servers

我还使用fabric来部署应用程序,并使用chef solohttp://ericholscher.com/blog/2010/nov/8/building-django-app-server-chef/

johny缓存用于sql查询,raven和sentry可以记录应用程序上发生的事情。在

我会从性能的角度使用uWSGI+Nginx(我想这个比较已经在另一个答案中链接了)、pip和virtualenv来进行部署,因为这样可以保持事物的自包含性,并有助于使用fabric或类似的方法进行干净的部署。使用git进行版本控制。Jenkins可以处理连续集成。我会在您的EC2实例前面使用AWS load balancer (ELB)来进行平衡,这样做不需要您太担心它。django-storages用于将静态文件上载到s3,这样可以省去另一台服务器分发静态文件的工作量。在

不过,这有点取决于你的管理费用。如果您正在寻找一个干净、简单的部署和扩展工具,我会放弃整个awsec2堆栈,使用Heroku作为前端,而s3用于静态文件。这节省了维护这些框的所有管理时间,并允许您专注于开发

相关问题 更多 >