我正在使用Nagios服务器构建映像。树莓派的问题之一是树莓派的内存很小。因此,我将使用基于php-apc的轻量级接口,而不是标准接口。
我想知道建议使用哪种轻型Web服务器?
我正在考虑可以使用php并提供SSL的最小网络服务器。我在考虑Apache2或Nginx。尽管我认为Apache的内容是动态的,但仍将胜过Nginx。
我正在使用Nagios服务器构建映像。树莓派的问题之一是树莓派的内存很小。因此,我将使用基于php-apc的轻量级接口,而不是标准接口。
我想知道建议使用哪种轻型Web服务器?
我正在考虑可以使用php并提供SSL的最小网络服务器。我在考虑Apache2或Nginx。尽管我认为Apache的内容是动态的,但仍将胜过Nginx。
Answers:
真正的问题是“您需要Apache提供的所有功能吗?” (或更重要的是,“您是否愿意用完这些功能的内存?”)-您可以自定义编译非常精简的Apache + mod_perl或mod_php以运行Nagios Web界面(或Über精简的Apache只运行perl CGI),但是即使以极简形式,Apache可能比nginx占用更多的内存来完成相同的工作-并不是说它很小。
为了100%的确定您可能要进行一次烘焙(编译nginx和Apache并查看它们消耗更少的RAM),但是我在“普通”服务器上的经验告诉我,对于内存不足的情况,nginx可能是更好的选择配置:你放弃一些阿帕奇的灵活性,但如果你并不需要的是反正(和大多数网站没有),你永远不会知道其中的差别。
性能(时间)方面,我怀疑您是否会受到Web服务器的限制-除了人为设计的基准测试之外,如果您做的工作量足够大,而服务器引擎分发页面的性能至关重要,那么您可能正在使用来烘烤您的Raspberry Pi(实际上,有多少人将同时查看您的监视数据?:-)。
您可以根据空间或时间来优化系统,这几乎是一个公理,但不能同时针对两者进行优化-在Raspberry Pi上,空间可能是您的限制条件。
powerful
(因为它是未定义的术语)。我说过flexible
(指的是可以配置裸机核心服务器满足需求的方式)。这并不是要在任何一台服务器上都反映不好:它们都是优秀的代码,但是它们的设计目标却大不相同。Apache旨在为所有人提供万物-一辆卡车,您可以在其中装满整个房子。nginx的设计既小巧又快速-跑车,但您不能随身携带妻子,孩子,公婆和家庭犬。
我对使用Nginx作为Web服务器有一些很好的经验。我将它与轻量级的wsgi框架(例如bottle或flask)组合在一起,以便在Python 中快速进行应用程序开发。
但是不要指望它每秒能处理10多个左右的请求:)
Nginx在Debian / Raspbian和Arch存储库中,因此可以通过单个命令进行安装。
sudo pacman -Sy nginx
sudo apt-get install nginx
整个网络上都有大量的配置示例,详细的解释可能超出了此问题的范围。Nginx Wiki上有很多示例,邮件列表非常有帮助。
自从您提到PHP以来,您将非常有兴趣知道标准/etc/nginx/nginx.conf
文件包含一个PHP示例。
您可以使用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
Mako服务器和BarracudaDrive源自同一来源,这两个服务器(通过使用Lua脚本语言)交付动态生成的内容的速度比Apache交付静态内容的速度快70%。基准测试结果在这里:http : //barracudadrive.com/blog/2013/03/Apache-Nginx-Lighttpd-Monkey-and-BarracudaDrive-Speed-Test
可以在以下位置找到Mako服务器:http : //makoserver.net/
我使用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堆栈是很痛苦的,但对于低流量来说并非没有可能。