是否有可以提供动态内容的轻量级Web服务器?


21

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

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

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


1
Nginx将轻松胜过Apache。
亚历克斯·张伯伦

@AlexChamberlain可以处理静态内容,但不能动态处理。
卢卡斯·考夫曼

5
要求。这取决于您所说的性能。Nginx将使用更少的内存,更少的泄漏并更快地处理(静态)文件。根据我的经验(有限但技术),动态内容的投放速度比Apache快。考虑到Nginx的内存配置文件,它将在Raspberry Pi上表现更好。Apache的优势-尽管不是在这里-但它更稳定并且拥有更多经验丰富的技术人员。
亚历克斯·张伯伦

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

Answers:


17

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

为了100%的确定您可能要进行一次烘焙(编译nginx和Apache并查看它们消耗更少的RAM),但是我在“普通”服务器上的经验告诉我,对于内存不足的情况,nginx可能是更好的选择配置:你放弃一些阿帕奇的灵活性,但如果你并不需要的是反正(和大多数网站没有),你永远不会知道其中的差别。


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


我怀疑Apache 如今比Nginx 强大得多。
亚历克斯·张伯伦

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

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

15

Nginx的

我对使用Nginx作为Web服务器有一些很好的经验。我将它与轻量级的wsgi框架(例如bottleflask)组合在一起,以便在Python 快速进行应用程序开发。

但是不要指望它每秒能处理10多个左右的请求:)

安装

Nginx在Debian / Raspbian和Arch存储库中,因此可以通过单个命令进行安装。

sudo pacman -Sy nginx

Debian /树莓派

sudo apt-get install nginx

组态

整个网络上都有大量的配置示例,详细的解释可能超出了此问题的范围。Nginx Wiki上有很多示例,邮件列表非常有帮助。

自从您提到PHP以来,您将非常有兴趣知道标准/etc/nginx/nginx.conf文件包含一个PHP示例。


我爱Nginx。使用其模块化系统非常容易扩展。
亚历克斯·张伯伦

1
我可能会扩大您的答案,希望您不介意吗?
亚历克斯·张伯伦


1

node.js

您可以使用node.js创建轻型Web服务器。请参阅来自node.js教程站点的以下示例:

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/');

上面的代码是Java脚本,因此您可以使用Java脚本编写动态代码生成逻辑并立即开始使用它。

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

使用以下命令启动Web服务器:

node hello.js

但是Node.js会说PHP吗?
卢卡斯·考夫曼

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

@LucasKauffman不-它实际上不是Web服务器,而是Web应用程序。
亚历克斯·张伯伦

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

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

0

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

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

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

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



0

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

我很确定这个配置也可以舒适地安装在256MB Pi上,但是我在编译Passenger模块和Nginx时遇到了麻烦。遇到内存限制。

我知道这不是PHP解决方案,而且我可能会因为提出这样切线的答案而受到指责。但是,如果您正在寻找Pi来扩展您的知识范围,并且这样做是为了随意修改,我强烈建议您研究Ruby和Sinatra。您将在几周内对PHP产生讨厌。

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.