当谈到部署一个Django项目时,我非常喜欢noob。我想知道部署Django项目的各种方法以及哪一种方法是最受欢迎的。部署Django项目的不同方法及其优缺点?
回答
使用Nginx/Apache/mod-wsgi,你不会出错。
如果您更喜欢简单的替代方案,只需使用Apache即可。
有一个很好的部署文件:http://lethain.com/entry/2009/feb/13/the-django-and-ubuntu-intrepid-almanac/
Django文档中列出的Apache/mod_wsgi的,阿帕奇/ mod_python的和FastCGI等
mod_python的现在已经过时,应该改为使用mod_wsgi的。
的Django与mod_wsgi的易于安装,但: :
- 你只能在一个时间[你甚至可以只使用Python版本的mod_wsgi被编译为编辑]用一个Python版本
- [编辑:看来,如果我错了mod_wsgi的不支持的virtualenv:它确实]
所以对多个网站(针对不同的Django/Python版本)上的服务器的mod_wsgi不是 百世t解决方案。
的FastCGI可以用virtualenv中使用,也有不同的Python版本,你
./manage.py runfcgi …
运行它,然后配置你的网络服务器使用这个FCGI接口。
关于Django部署的新东西似乎是gunicorn。它是一个实现wsgi的web服务器,通常用作“代理”的“大”web服务器的后端。
使用部署gunicorn感觉很像fcgi:你运行一个进程,使用manage.py来管理django处理的东西,并将一个web服务器作为前端向全世界运行。
但gunicorn部署有超过fcgi的一些优势:
- 速度 - 我没有找到来源,但基准说FCGI是不一样快的F建议
- 配置文件,您FCGI执行manage.py命令时必须在命令行上执行所有配置。当通过一个init.d运行多个django实例(类似于unix的操作系统的系统服务启动)时,这是不方便的。它总是相同的cmdline,只有不同的配置文件
- gunicorn可以放弃特权:没有必要在你的init.d脚本来做到这一点,可以很容易地切换到每Django的情况下一个用户
- gunicorn表现得更像守护进程:写入pidfile和日志文件,分叉到后台等,使得它更容易在init.d脚本中使用。
因此,我建议使用gunicorn解决方案,除非您在单个服务器上使用低流量的单个站点,而不是使用wsgi解决方案。但我认为从长远来看,你对枪炮更加满意。
如果你只有一个django网络服务器,我会建议使用nginx作为frontendproxy,因为它是最好的表现(同样这是基于我在某些博客文章中阅读的基准测试 - 不再有url)。 我个人使用apache作为frontendproxy,因为我需要它为服务器上托管的其他网站。
Django的部署进行简单的设置指令可以在这里找到: http://ericholscher.com/blog/2010/aug/16/lessons-learned-dash-easy-django-deployment/
我对gunicorn的init.d脚本位于github上: https://gist.github.com/753053
不幸的是我并没有在博客,但经验丰富的系统管理员应该能够完成所需的设置。
我远离经验丰富的系统管理员,但非常感谢您总结各种部署方法。 – Sushi 2011-02-03 12:35:43
我自己在部署Django项目和自动部署过程中遇到了很多问题。 Apache和mod_wsgi就像Django Deployment的诅咒一样。有几种工具,如Nginx,Gunicorn,SupervisorD和正在趋向于Django部署的Fabric。起初,我单独使用/配置它们,而没有部署自动化,这花费了很多时间(我必须为客户维护测试以及生产服务器,并且必须在新功能经过测试和批准后立即更新它们)。但是,我偶然发现了django-fagungis,它将我的项目从bitbucket克隆到我的远程服务器(它使用Nginx,Gunicorn,SupervisorD,Fabtic和virtualenv,并且还安装所有依赖项),完全自动化了Django Deployment,只有三个命令:)你可以在我的博客文章here中找到更多关于它的信息。现在我甚至不必参与这个过程(过去需要花费很多时间),我的一个初级开发人员在他的本地机器上运行django-fagungis mentioned here这三个命令,我们得到一个清晰的新副本我们的项目部署在几分钟内没有任何麻烦:)
- 1. 不同的部署项目
- 2. 部署Django项目
- 3. XML解析器及其优缺点
- 4. 网站项目和WCF项目在相同或不同的解决方案:优点和缺点
- 5. Django-modpython部署项目
- 6. 类库项目VS App_Code - 优点/缺点?
- 7. 部署django项目得不到结果
- 8. 测试前提条件的不同方法的优缺点?
- 9. 将django项目部署到测试服务器的好方法?
- 10. c#中不同Dbconnectors方法的优缺点?
- 11. 从eclipse导出maven项目及其在tomcat上的部署
- 12. 寻找关于自动化部署优点/缺点的文章
- 13. Java静态方法优点和缺点
- 14. 在Heroku的部署Django项目
- 15. Aptana - 不同的PHP项目相同的部署目录
- 16. 部署项目中缺少项目依赖项
- 17. 不同配置格式的优缺点?
- 18. 垂直部署优点和缺点在Jboss/MySQL
- 19. 无法部署SQLCLR项目
- 20. 在Google App Engine上部署Django项目
- 21. 部署Django项目时导入错误
- 22. django - 将项目部署到heroku
- 23. 部署第一个Django项目
- 24. 摇篮 - 父项目缺战子项目罐子日食部署
- 25. Google App Engine优点\缺点为Django?
- 26. 有2012 SSIS部署错误,同时部署项目目录DB
- 27. 父目录及其子目录的不同Apache索引选项
- 28. Azure端点 - 不同部署
- 29. 在Java项目中组织软件包的优点和缺点
- 30. JavaFX与其他JavaFX项目部署
谢谢Lakshman。这看起来很全面。只有django有这么多的部署方法,它可以混淆任何新的django。 – Sushi 2011-02-03 07:07:06