我正在使用Nagios服务器构建映像。树莓派的问题之一是树莓派的内存很小。因此,我将使用基于php-apc的轻量级接口,而不是标准接口。

我想知道建议使用哪种轻量级Web服务器?

我正在考虑可以使用php并提供SSL的最小网络服务器。我在考虑Apache2或Nginx。尽管我认为Apache的内容是动态的,但仍会胜过Nginx。

评论

Nginx将轻松胜过Apache。

@AlexChamberlain可以处理静态内容,但不能处理动态内容。

要求。这取决于您所说的性能。 Nginx将使用更少的内存,更少的泄漏并更快地处理(静态)文件。以我的经验(有限但技术),动态内容的提供速度比Apache快。鉴于Nginx的内存配置文件,它将在Raspberry Pi上表现更好。 Apache的优势-尽管不是在这里-但它更稳定并且有更多经验丰富的技术人员。

除非您具有nginx或lighttpd无法管理的非常复杂的配置,否则我什至不会考虑256MB的Apache。

#1 楼

真正的问题是“您需要Apache提供的所有功能吗?” (或更重要的是,“您是否愿意用完这些功能的内存?”)-您可以自定义编译非常精简的Apache + mod_perl或mod_php以运行Nagios Web界面(或Über精简的Apache只是运行perl CGI),但即使是极简形式,Apache也会比nginx占用更多的内存来完成相同的工作-并不是说它的体积很小。

要确保100%确定您可能需要做些准备工作(编译nginx和Apache并查看它们消耗更少的RAM),但是我在“普通”服务器上的经验告诉我,nginx可能是低内存配置的更好选择: Apache的一些灵活性,但是如果仍然不需要(大多数站点都不需要),您将永远不会注意到它们之间的差异。


性能(时间)明智怀疑您是否会受到网络服务器的限制-除了人为地制定的基准测试之外,如果您做的工作量足够大,则服务器引擎分发页面的性能至关重要。可能将要烘烤您的Raspberry Pi(实际上,有多少人会一次查看您的监视数据? :-)。
这是一个公理,您可以针对空间或时间优化系统,但不能同时针对两者进行优化-在Raspberry Pi上,空间可能是您的限制条件。

评论


我怀疑Apache如今比Nginx强大得多。

–亚历山大·张伯伦
2012年8月8日在9:35

@AlexChamberlain如果您仔细阅读我的文章,您会注意到我从未使用过“强大”一词(因为它是未定义的术语)。我说的很灵活(指的是配置裸机核心服务器以满足需求的方式)。这并不是要在任何一台服务器上都反映不好:它们都是出色的代码,但是它们的设计目标却大不相同。 Apache旨在为所有人提供万物-一辆卡车,您可以在其中装满整个房子。 nginx的设计既小巧又快速-跑车,但您不能随身携带妻子,孩子,公婆和家庭犬。

–voretaq7
2012年8月8日13:45

我认为Nginx正在增长……现在至少是掀背车并且一直在增长。它可以以一种或另一种方式支持所有主要的动态语言,支持SSL,并且SPDY当前处于Beta中。

–亚历山大·张伯伦
2012年8月8日14:11

#2 楼

Nginx
我对Nginx作为Web服务器有一些很好的经验。我将其与轻量级的wsgi框架(例如bottle或flask)组合在一起,以便在Python中快速进行应用程序开发。
尽管它每秒处理的请求数不要超过10个左右: br /> Nginx在Debian / Raspbian和Arch存储库中,因此可以通过单个命令进行安装。
Arch
sudo pacman -Sy nginx

Debian / Raspbian
sudo apt-get install nginx

配置
网络上有很多配置示例,详细的解释可能超出了此问题的范围。 Nginx Wiki上有很多示例,邮件列表非常有帮助。
由于您提到了PHP,因此您将非常有兴趣知道标准/etc/nginx/nginx.conf文件包含一个PHP示例。

评论


我爱Nginx。使用其模块化系统非常容易扩展。

–亚历山大·张伯伦
2012年8月8日在9:28

我可能会扩大您的答案,希望您不介意吗?

–亚历山大·张伯伦
2012年8月8日在9:34

#3 楼

lighttpd
lighttpd是一个很棒的低资源Web服务器,它同时支持PHP和SSL。它似乎可以在Raspberry Pi上与PHP一起使用,并且很可能将lighttpd配置为支持SecureHTTP。

评论


lighttpd是另一个不错的选择。 nginx的流行在很多地方使它黯然失色,但它绝对是一台受人尊敬的(小型)服务器

–voretaq7
2012年8月8日在1:50

lighttpd + php-fcgi可以做得很好。

– Zlatko
2012年8月9日7:09

#4 楼

node.js

您可以使用node.js创建轻型Web服务器。请参阅来自node.js教程网站的以下示例:上面的代码是Java脚本,因此您可以在Java脚本中编写动态代码生成逻辑并在其中使用它没时间。

您将必须从链接:http://nodejs.org/下载并设置node.js(适用于Windows或您希望使用的任何平台)。

启动Web服务器使用命令:

var http = require('http');
  http.createServer(function (req, res) {
      res.writeHead(200, {'Content-Type': 'text/plain'});
      res.write("Dynamic contents...");
      res.end('Hello World\n');
  }).listen(1337, "127.0.0.1");

console.log('Server running at http://127.0.0.1:1337/');


评论


但是Node.js会说PHP吗?

–卢卡斯·考夫曼(Lucas Kauffman)
2012年8月8日在8:31

Node.JS在其他上下文中使用。它不能用作独立服务器,因为所有代码都是C ++。但!太好了,因为您可以使用node.js'+1来直接使用node来访问GPIO和其余的低级硬件。.但是您仍然需要apache / lighttpd / iis之类的前端来提供内容

– Piotr Kula
2012年8月8日在8:47



@LucasKauffman不-它实际上不是Web服务器,而是Web应用程序。

–亚历山大·张伯伦
2012年8月8日在9:27

欢迎使用Stack Exchange。好的答案,但是我担心我投票不足,因为我认为这不能解决问题。 OP希望使用PHP,未来的读者可能会希望使用功能更强大的服务器。

–亚历山大·张伯伦
2012年8月8日在9:28

我正在运行Nagios,而不是开发自己的应用程序:p

–卢卡斯·考夫曼(Lucas Kauffman)
2012年8月8日在17:51

#5 楼

也许您可以看看其他人在低端机顶盒上使用了什么。

基本上是lighttpd + php-fcgi。 Lighttpd真的很轻,可以将php-fcgi配置为仅使用一点内存。我已经在64MB VPS盒上安装了它(不是nagios,但是是CMS)。

我也不知道您是否还需要优化MySQL以使用尽可能少的内存。

它可能会帮助您,但可能没有帮助。我还没有开始使用Raspi :)

#6 楼

Mako服务器和BarracudaDrive源自同一来源,这两个服务器(通过使用Lua脚本语言)交付动态生成的内容的速度比Apache交付静态内容的速度快70%。基准测试结果在这里:
http://barracudadrive.com/blog/2013/03/Apache-Nginx-Lighttpd-Monkey-and-BarracudaDrive-Speed-Test

Mako服务器可以可以在这里找到:
http://makoserver.net/

#7 楼

我正在使用Nginx / Passenger的组合在512Mb Raspberry Pi上以24/7运行基于Ruby的pi.gadgetoid.com。这大大优于我以前使用的Thin / Apache设置。尽管我通过使用Cloudflare(基本上是一个缓存代理)来处理大部分内容,但是这确实是一个人流量大的公共网站。

我很确定此配置会也可以舒适地坐在256MB Pi上,但是我在编译Passenger模块和Nginx时遇到了麻烦;我遇到了内存限制。但是,如果您正在寻找Pi来扩展您的知识范围,并且这样做是为了随意修改,我强烈建议您研究Ruby和Sinatra。几周之内您就会对PHP产生仇恨。

大体上,在256MB服务器上运行PHP / Apache Web堆栈不会有太大麻烦。我已经为大型站点提供了专业的基于云托管的功能。当MySQL介入时,事情变得很丑陋。至少可以说,在256MB上运行完整的LAMP堆栈是很痛苦的,但对于低流量来说并非没有可能。