我正在用 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?那么也许可以看看龙卷风(尽管它可以处理比你想要的多得多的事情)。