适用于 Django 的轻量级 Web 服务器,工作负载较小

适用于 Django 的轻量级 Web 服务器,工作负载较小

我正在用 Django 编写一个小应用程序,它将用作通常由文本文件配置的一组应用程序的管理界面。它不会做太多事情(解析用户输入、将数据库条目转换为平面文件并显示带有信息的漂亮表格),并且很可能一次最多由一个用户使用。

唯一的限制是运行该程序的服务器配置较低(Pentium M 1,8GHz,512MB RAM),而且我希望其大部分计算能力可用于托管应用程序而不是管理界面。顺便说一下,我使用的是 CentOS 5。

我可以使用什么网络服务器?到目前为止,我收集了以下选项和意见:

  • Apache 可能对于这种部署来说太大了
  • lighttpd + FCGI - 可能不稳定
  • lighttpd/nginx 作为 rev 代​​理 + django web 服务器 - 对我来说看起来很奇怪,因为我一直认为 django web 服务器是用于开发/调试目的的

您能为我推荐一种适合这种环境的好的解决方案吗?我并不关注大工作负载或并发性(大多数问类似问题的人都是这样),我只是希望它在空闲或单个会话时使用尽可能少的 RAM 和 CPU 时间。

此外,请注意,我在部署 Web 服务器、反向代理等方面没有太多经验(尽管我知道基础知识,也可以通过谷歌找到解决方法),所以我非常感谢有此类问题经验的人的帮助。

答案1

在我看来,最简单的安装解决方案之一,并且性能相当好,就是nginx使用gunicorn

对于''gunicorn'',你只需要执行以下操作:

$ cd path/to/yourdjangoproject
$ gunicorn_django --workers=4

一个标准的 nginx 设置如下:

server {
    ...

    location / {
        proxy_pass http://127.0.0.1:8000;
        break;
    }
}

当然比使用 fcgi 并依赖 flup 要好,但如果您不介意弄脏您的手,我建议您尝试nginx+ uwsgi,正如 zaub3r3r 所建议的那样。

答案2

考虑到你缺乏经验,并且华丽的管理 GUI,我推荐切诺基。一个快速、易于使用的 Web 服务器,带有用于配置 Django 项目的内置向导。

答案3

使用 Apache 并禁用您不需要的模块,并确保您一开始就不会产生太多的进程。

Apache 核心是重量级的这一想法在某种程度上是一种神话——由于采用了模块化设计,它可以根据您的需要变得强大或轻量级。

这具有与您现有的分发包装和更新系统协同工作的额外好处。

PS:当应用程序正在运行但 Web 服务器的管理界面未被访问时,操作系统会很乐意将未使用的页面交换到磁盘。相信操作系统会在需要时保留所需的内容。

PPS:2GB DIMM 的成本比您输入此查询所花的时间还低。花点时间对您的问题进行综合分析。

答案4

Django (Python) + webserver?那么也许可以看看龙卷风(尽管它可以处理比你想要的多得多的事情)。

相关内容