在部署Django项目时,我是一个非常棒的人。我想知道部署Django项目的各种方法是什么,哪一个是最受欢迎的。
答案 0 :(得分:6)
Django文档列出了Apache / mod_wsgi,Apache / mod_python和FastCGI等。
现在不推荐使用mod_python ,应该使用mod_wsgi。
使用 mod_wsgi 的Django很容易设置,但是:
因此,对于服务器上的多个站点(针对不同的django / python版本),mod_wsgi不是 最好的解决方案。
FastCGI 可以与virtualenv一起使用,也可以与不同的python版本一起使用
./manage.py runfcgi …
然后配置您的网络服务器以使用此fcgi界面。
关于django部署的新热点似乎是 gunicorn 。它是一个实现wsgi的网络服务器,通常用作后端,“大”网络服务器作为代理。
使用 gunicorn 进行部署与fcgi非常相似:运行一个使用manage.py执行django处理的进程,以及作为世界前端的Web服务器。
但是枪支部署比fcgi有一些优势:
因此,我建议使用gunicorn解决方案,除非您在单个服务器上拥有一个流量较低的站点,而不是使用wsgi解决方案。但我认为从长远来看,你对枪炮更加满意。
如果你有一个只有django的网络服务器,我建议使用nginx作为frontendproxy,因为它是最好的表现(再次这是基于我在一些博文中读到的基准 - 没有网址了)。 我个人使用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
不幸的是我还没有博客,但经验丰富的系统管理员应该可以进行必要的设置。
答案 1 :(得分:4)
使用Nginx / Apache / mod-wsgi,你不会出错。
如果您更喜欢简单的替代方案,只需使用Apache。
有一个非常好的部署文档:http://lethain.com/entry/2009/feb/13/the-django-and-ubuntu-intrepid-almanac/
答案 2 :(得分:1)
我自己在部署Django Projects和自动化部署过程时遇到了很多问题。 Apache和mod_wsgi就像是Django Deployment的诅咒。有一些工具,如Nginx,Gunicorn,SupervisorD和Fabric,这些工具都是Django部署的趋势。起初我单独使用/配置它们没有部署自动化,这花费了大量时间(我必须为我的客户端维护测试以及生产服务器,并且必须在测试和批准新功能后立即更新它们。)但是我偶然发现django-fagungis,它完全自动化我的Django部署,将我的项目从bitbucket克隆到我的远程服务器上部署(它使用Nginx,Gunicorn,SupervisorD,Fabtic和virtualenv,并且还可以安装所有依赖项),所有这些都是只有三个命令:)你可以在我的博客文章here中找到更多相关信息。现在我甚至不必参与这个过程(过去需要花费很多时间),我的一个初级开发人员在他的本地机器上运行django-fagungis mentioned here的这三个命令,我们得到了我们项目的清晰新副本在几分钟内完成,没有任何麻烦:)