我想知道建议使用哪种轻量级Web服务器?
我正在考虑可以使用php并提供SSL的最小网络服务器。我在考虑Apache2或Nginx。尽管我认为Apache的内容是动态的,但仍会胜过Nginx。
#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 楼
lighttpdlighttpd是一个很棒的低资源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堆栈是很痛苦的,但对于低流量来说并非没有可能。
评论
Nginx将轻松胜过Apache。@AlexChamberlain可以处理静态内容,但不能处理动态内容。
要求。这取决于您所说的性能。 Nginx将使用更少的内存,更少的泄漏并更快地处理(静态)文件。以我的经验(有限但技术),动态内容的提供速度比Apache快。鉴于Nginx的内存配置文件,它将在Raspberry Pi上表现更好。 Apache的优势-尽管不是在这里-但它更稳定并且有更多经验丰富的技术人员。
除非您具有nginx或lighttpd无法管理的非常复杂的配置,否则我什至不会考虑256MB的Apache。