当前位置: 首页 > 面试题库 >

最干净,最快的Django服务器设置

楮庆
2023-03-14
问题内容

我将部署一个由Django驱动的中型站点。我有专用的Ubuntu服务器。

我对使用哪种服务器软件感到非常困惑。所以我对自己想:为什么不问。

我正在寻找的是:

  • 易于设置
  • 快速便捷的资源
  • 可以提供媒体文件
  • 能够在同一服务器上服务多个djangosites
  • 我宁愿不安装PHP或其他任何会占用资源的东西,而我对此毫无用处。

我听说过Apache,nginx和lighty上的mod_wsgi和mod_python。这些利弊有哪些,我想念某人吗?

@Barry :不知何故我觉得Apache对我来说是肿的。那替代品呢?

@BrianLy
:好的,我会再检查一下mod_wsgi。但是,如果我随便提供静态文件,为什么还需要Apache?我也设法轻松地为django应用提供服务。无论如何,这很糟糕吗?对不起,蜜蜂如此愚蠢:-)

更新 :lighty和nginx怎么样?当它们是最佳选择时,它们是用例?


问题答案:

由于我一直在寻找一些更深入的答案,因此我决定自己进行深入研究。如果我有误解,请告诉我。

一些一般性建议是使用单独的Web服务器来处理媒体。单独来说,我指的是未运行Django的网络服务器。该服务器可以是例如:

  • Lighttpd(浅色)
  • Nginx(EngineX)
  • 或其他轻量级服务器

然后,对于Django,您可以走不同的道路。您可以:

  • 通过 Apache 服务Django,并:

    • mod_python

这是稳定且推荐/充分记录的方式。缺点:占用大量内存。

* **mod_wsgi**

据我了解,mod_wsgi是一个较新的替代方案。在资源上似乎更快,更容易。

* **mod_fastcgi**

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

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

或者您可以:

  • 不使用Apache的情况下为 Django提供服务,但在另一台本地支持FastCGI的服务器上进行服务:

(文档中提到,如果您没有Apache的特定需求,则可以执行此操作。我想原因一定是为了节省内存。)

* **Lighttpd**

这是运行Youtube的服务器。它似乎快速且易于使用,但是我见过有关内存泄漏的报告。

* **Nginx的**

我见过一些基准测试声称该服务器比lighttpd还要快。虽然它主要是用俄语记录的。

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

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



 类似资料:
  • 问题内容: 一个没有stopServer功能的RMI服务器,可以正常工作。 每当被调用异常中的stopServer()抛出时 这是堆栈跟踪 即使我使用清理服务对象,情况也一样 有人可以提出一种干净的方法来停止服务器,这还会释放端口以供重用。 问题答案: 您需要存储结果并取消导出结果。目前,您正在尝试取消导出存根。

  • 问题内容: 从Python 2.6的迭代器中获取最后一项的最佳方法是什么?例如说 从中获取最短代码/最干净的方法是什么? 我可以这样做,但是效率似乎不高: 问题答案:

  • 问题内容: 我正在尝试从WCF服务返回一些JSON。该服务仅从我的数据库返回一些内容。我可以得到数据。但是,我担心JSON的格式。当前,返回的JSON格式如下: 实际上,我希望JSON的格式尽可能整洁。我相信(我可能是不正确的),以干净的JSON表示的相同结果集应如下所示: 我不知道“ d”来自哪里。我也不知道为什么要插入转义字符。我的实体如下所示: 负责返回内容的服务定义为: 如何从WCF服务返

  • 问题内容: 我对某些外部jar具有运行时依赖性,因此我希望将这些外部jar重新“打包”成单个jar。这些外部依赖项存储在external_jars目录中,我希望不必将它们全部列出(即,如果我的依赖项发生更改,则无需更改构建脚本)。有什么想法吗? 粗略地讲,我需要遵循以下内容,它将lib目录中的所有jar组合到out.jar中(带有一些合理的覆盖规则)。 问题答案: 只需与Ant Zip任务一起使用

  • 问题内容: 我试图将一个函数接收一个文件路径,确定它是什么,设置适当的标头,并像Apache一样提供服务。 我这样做的原因是因为在提供文件之前,我需要使用PHP处理有关请求的某些信息。 速度至关重要 virtual()不是一个选择 必须在用户无法控制Web服务器(Apache / nginx等)的共享托管环境中工作 到目前为止,这是我得到的: 问题答案: 我以前的回答是不完整的,没有很好的记录,这

  • 问题内容: 那就是我的做法: 有什么好处吗?如何避免那些意粉般的代码? 问题答案: 检出异步库,它用于控制流(异步内容),并且它有很多用于数组内容的方法:每种方法,过滤器,映射。查看github上的文档。这可能是您需要的: 每个(arr,迭代器,回调) 将迭代器函数并行应用于数组中的每个项目。调用迭代器时,将使用列表中的项目以及完成时的回调。如果迭代器将错误传递给此回调,则该函数的主回调将立即被错

  • 问题内容: 我想使用socket.io将数据从服务器推送到浏览器,但是该项目是java tomcat之一,并且 Github中 有许多实现的服务器实现。他们中的大多数人都说 过时了, 或者有更好的版本可用。谁能建议我一个好的实现。 而且,我看到了许多有关使用广播的演示和示例代码。我的要求是将不同的消息推送到不同的客户端。有人可以指出一些有关此类内容的优秀演示或教程吗? 谢谢 问题答案: 作为作者,

  • 我正在用纯javascript为.NET 6中的最小API发出请求,但是当我在浏览器中打开它时,我收到以下消息: “获取”的访问权限https://localhost:7252/v1/todosCORS策略已阻止“来自源”的“null”:请求的资源上不存在“访问控制允许源”标头。不透明响应满足您的需求,将请求的模式设置为“无cors”以获取禁用cors的资源。 我已经在API中添加了CORS配置,