我即将部署一个由Django提供支持的中型网站。 我有一个专用的Ubuntu服务器。

我真的很困惑使用哪些服务器软件。 所以我心想:为什么不问stackoverflow。

我正在寻找的是:

  • 易于设置
  • 资源快速简便
  • 可以提供媒体文件
  • 能够在同一台服务器上提供多个djangosites
  • 我宁愿不安装PHP或任何其他糟糕的资源,我没有用。

我在Apache,nginx和lighty上听说过mod_wsgi和mod_python。 哪些是这些的利弊,我错过了某人?

@Barry :不知怎的,我觉得Apache对我来说很臃肿。 替代方案呢?

@BrianLy :好的,我会再看一下mod_wsgi。 但是,如果我提供轻微的静态文件,为什么我需要Apache? 我还设法用轻松的方式为django应用程序服务。 反正这样糟糕吗? 对不起因为这么傻:-)

更新 :lighty和nginx怎么样 - 当这些是完美的选择时,哪些是用例?

===============>>#1 票数:26 已采纳

由于我正在寻找更深入的答案,我决定自己深入研究这个问题。 如果我误解了什么,请告诉我。

一些一般建议是使用单独的网络服务器来处理媒体。 通过单独,我的意思是一个没有运行Django的网络服务器。 这个服务器可以是例如:

  • Lighttpd(Lighty)
  • Nginx(EngineX)
  • 或者其他一些轻量级的服务器

然后,对于Django,你可以走不同的路径。 你可以:

  • 通过Apache服务Django:

    • mod_python的

      这是稳定且推荐/记录良好的方式。 缺点:使用大量内存。

    • mod_wsgi的

      据我所知,mod_wsgi是一个新的替代品。 资源似乎更快更容易。

    • 的mod_fastcgi

      使用FastCGI时,您将Django的服务委托给另一个进程。 由于mod_python在每个请求中都包含一个python解释器,因此它使用了大量内存。 这是绕过这个问题的一种方法。 还存在一些安全问题。

      你所做的是你在一个单独的进程中启动你的Django FastCGI服务器,然后通过重写配置apache以在需要时调用这个进程。

或者你可以:

  • 不使用Apache而是使用另一台本机支持FastCGI的服务器服务Django:

    (文档提到如果你没有任何Apache特定需求,你可以这样做。我想原因必须是节省内存。)

    • Lighttpd的

    这是运行Youtube的服务器。 它似乎快速且易于使用,但我已经看到有关memoryleaks的报告。

    • nginx的

    我见过基准测试声称这台服务器甚至比lighttpd更快。 它主要用俄语记录。

另一件事,由于Python的限制,您的服务器应该以分叉模式运行,而不是线程化。

所以这是我目前的研究,但我想要更多的意见和经验。

===============>>#2 票数:9

我正在使用切诺基

根据他们的基准 (与它们的盐粒),它比Lighttpd和nginx更好地处理负载......但这不是我使用它的原因。

我使用它是因为如果你键入cherokee-admin ,它会启动一个你可以登录的新服务器(使用一次性密码)并通过一个精美的webmin配置整个服务器。 这是一个杀手级的功能。 它已经为我节省了很多时间。 它为我的服务器节省了大量资源!

至于django,我将它作为线程SCGI进程运行。 效果很好。 切诺基也可以保持运转。 再次,非常好的功能。

目前的Ubuntu repo版本很老,所以我建议你使用他们的PPA 祝好运。

===============>>#3 票数:6

正如@Barry所说,文档使用mod_python 我没有使用Ubuntu作为服务器,但在Solaris上使用mod_wsgi有很好的经验。 您可以在mod_wsgi站点上找到mod_wsgi和Django的文档。

快速审查您的要求:

  • 易于设置我发现apache 2.2相当容易构建和安装。
  • 资源快速简便我会说这取决于您的使用情况和流量。 *您可能不希望使用Apache服务所有文件,并使用LightTPD (轻微)来服务器静态文件。
  • 可以提供媒体文件我假设你的意思是图像,闪存文件? Apache可以做到这一点。
  • 同一服务器上的多个站点 Apache 上的虚拟服务器托管。
  • 而不是安装其他扩展在Apache配置中注释掉你不想要的任何东西。

===============>>#4 票数:5

官方推荐的部署django项目的方法是使用mod_python和apache。 这在文档中描述 这方面的主要优点是它是最好的文档,最受支持和最常见的部署方式。 可以说它可能不是最快的。

===============>>#5 票数:2

我认为最好的配置并不是那么出名。 但这是:

  1. 使用nginx来处理请求(动态到app,直接静态内容)。
  2. 使用python Web服务器提供动态内容。

基于python的Web服务器的两个最快速的解决方案是:

您需要查看谷歌以找到django的当前最佳配置(仍处于开发阶段)。

===============>>#6 票数:2

我正在使用mod_wsgi的 nginx从Sid获取 0.6.32)。 它运作得很好,但我不能说它是否比替代品更好,因为我从来没有尝试过。 Nginx内置了memcached支持,它可以与Django缓存中间件互操作(我实际上并没有使用它,而是使用python-memcache手动填充缓存并在进行更改时使其无效),因此缓存命中完全绕过Django (我的开发机器每秒可以提供大约3000个请求)。

警告: mod_wsgi非常不喜欢命名位置(它试图在SCRIPT_NAME传递它们),因此显而易见的' error_page 404 = @django '将导致许多模糊的错误。 我不得不修补mod_wsgi来修复它。

===============>>#7 票数:2

我也很难理解所有选项。 这篇博文中,我发现mod_wsgi与mod_python相比有一些好处。

小型VPS上的多个低流量站点使RAM消耗成为主要问题,而mod_python似乎是一个不好的选择。 使用lighttpd和FastCGI,我设法将简单的Django站点的最小内存使用量降低到58MiB虚拟和6.5MiB驻留(在重新启动并提供单个非RAM大量请求之后)。

我注意到在Debian Etch上从Python 2.4升级到2.5会使Python进程的最小内存占用量增加几个百分点。 另一方面,2.5更好的内存管理可能会对长时间运行的流程产生更大的相反影响。

===============>>#8 票数:2

在我看来,最好/最快的堆栈是varnish-nginx-uwsgi-django。 而且我成功地使用了它。

===============>>#9 票数:2

保持简单: Django推荐Apache和mod_wsgi(或mod_python) 如果提供媒体文件是您服务的重要组成部分,请考虑使用Amazon S3或Rackspace CloudFiles。

===============>>#10 票数:1

我有使用切诺基的警告。 当您对Django进行更改时,Cherokee会维护OLD进程,而不是杀死它并开始新进程。

在Apache上我强烈推荐这篇文章。

http://www.djangofoo.com/17/django-mod_wsgi-deploy-exampl

它易于设置,易于删除或重置后重置。

只需输入终端即可

sudo /etc/init.d/apache2 restart

并立即看到变化。

===============>>#11 票数:1

如果你正在使用lighthttpd,你也可以使用FastCGI来提供Django服务。 我不确定速度与mod_wsgi的比较,但是如果内存正确,你可以获得mod_wsgi带来的一些好处,而mod_python是你无法获得的。 主要的一点是,您可以为每个应用程序提供自己的进程(这对于保持不同应用程序的内存分离以及利用多核计算机非常有用。

编辑:只是为了添加关于nginix的更新,如果内存再次正常,nginix使用“greenlets”来处理并发。 这意味着您可能需要更加小心,以确保一个应用程序不会占用服务器的所有时间。

===============>>#12 票数:1

有很多种方法可以做到这一点。因此,我建议仔细阅读与DjangoAdvent.com上的部署过程相关的文章:Eric Florenzano - 使用FastCGI部署Django: http ://djangoadvent.com/1.2/deploying -django-site-using-fastcgi /阅读:Mike Malone - Scaling Django Stochastictechnologies博客:完美的Django设置Mikkel Hoegh博客:35%响应时间改进 - 切换 - uwsgi-nginx

问候

===============>>#13 票数:1

我们在所有Django部署中使用nginx和FastCGI。 这主要是因为我们通常在Slicehost上部署,并且不想将所有内存捐赠给Apache。 我想这将是我们的“用例”。

关于文档主要是俄语的评论 - 我发现英语维基上的大部分信息非常有用和准确。 这个站点也有Django的示例配置,您可以从中调整自己的nginx配置。

  ask by jamting translate from so

未解决问题?本站智能推荐:

1回复

使用passenger_wsgi.py托管Django

我在使用python passenger_wsgi.py和虚拟env在dreamhost共享主机上设置django时遇到问题。 当我运行passenger_wsgi.py时,不会返回任何错误,并且外壳会打印我的项目路径。 我的网站显示500国际服务器错误。 我已经清除了缓存,因此没有缓存错
2回复

没有模块名称django.core.wsgi apache2 + ubuntu + mod_wsgi

我已经设置了wsgipythonpath和daemonprocess,但错误日志显示上述错误,没有名为django.core.wsgi的模块,我正在共享conf,可能是错误,以及如何检查apache是​​否可以访问django安装或不。 我可以在本地系统上托管相同的配置,但不能在远程服务器上托
1回复

如何使用Django和Apache设置自定义域托管?

我现在想弄清楚的是设置自定义域托管,以便用户可以在自己选择的任何域上托管个人资料页面。 我现在可以使它工作,但是需要大量的自定义工作。 我当前的设置是让用户更改其DNS设置以重定向到我的域。 然后在我的域上,我添加了另一个虚拟主机来处理这个新域,然后更新我的Django中间件以查看请求
1回复

Django 1.6提供静态文件

我正在尝试在apache / centos 6上启动django网站并在服务器上使用apache来提供内容 settings.py 我在已安装的应用程序中也具有静态功能。 但是我对所有图像,css,js都得到404 我可以从我的静态文件夹及其STATIC_ROOT文件夹
1回复

通过在Django CMS之上使用nginx可以获得多少性能提升?

静态页面内容来自Django CMS,它使其具有动态性。在这种情况下使用nginx有什么好处?
2回复

Apache | Django:如何在基本URL的背面运行网站?

我有一个基本网址。 http://baseurl.com/我正试图在它背面运行项目。 例如http://baseurl.com/mongoose/项目运行但URL无法正常工作,因为它们都引用了基本URL。 因此,对于“关于我”页面,它指向http://baseurl.com/about而不
1回复

无法在LAMP / Bitnami服务器上下载pip软件包

我正在使用XAMPP在计算机上开发应用程序,并希望托管该应用程序。 我按照apachefriends上的说明进行操作,并使用Bitnami和LAMP堆栈设置了服务器。 我有一些python脚本,需要在服务器上与cron作业一起运行,以不时地更新应用程序。 我四处阅读,发现LAMP实际上不支
2回复

在Dreamhost上使用django获取500个内部服务器错误

所以我不确定这里到底发生了什么,我是个新手。 因此,我将向您介绍到目前为止我所做的一切。 我使用自动dreamhost django设置脚本设置了django项目。 然后,在学习完教程之后,我在项目的父目录中创建了一个应用程序,然后创建了一些模型(名称等与实际的教程模型不同,但这没关
1回复

Django错误(外部IP):内部服务器错误:/favicon.ico

我在Digital Ocean托管我的网站,它让我发送这封电子邮件。 [Django]错误(外部IP):内部服务器错误:/favicon.ico 目前我没有采取任何域名和冲浪通过IP。 这是错误吗? 此外,当我尝试上传任何图像时,它不会从客户端或管理端上传。 它发送给我3个与图
2回复

Django兼容的网络托管服务[关闭]

您最喜欢(免费或不支持)与django兼容的网络托管服务(以及一般的python)是什么? PS:兼容OVH吗?