Có một máy chủ web nhẹ sẽ phục vụ nội dung động?


21

Tôi đang xây dựng một hình ảnh với một máy chủ Nagios. Một trong những vấn đề của pi mâm xôi là bộ nhớ khá nhỏ trên pi mâm xôi. Vì vậy, tôi sẽ sử dụng giao diện trọng lượng nhẹ dựa trên php-apc thay vì giao diện chuẩn.

Tôi đã tự hỏi những gì máy chủ web nhẹ được khuyến khích sử dụng?

Tôi đã xem xét một máy chủ web tối thiểu có thể làm php và cung cấp SSL. Tôi đã nghĩ về Apache2 hoặc Nginx. Mặc dù tôi nghĩ Apache vẫn sẽ vượt trội hơn Nginx vì nội dung rất năng động.


1
Nginx sẽ dễ dàng vượt trội hơn Apache.
Alex Chamberlain

@AlexChamberlain về nội dung tĩnh, nhưng không phải trên động.
Lucas Kauffman

5
Yêu cầu. Nó phụ thuộc vào những gì bạn có nghĩa là hiệu suất. Nginx sẽ sử dụng ít bộ nhớ hơn, ít rò rỉ hơn và phục vụ các tệp (tĩnh) nhanh hơn. Theo kinh nghiệm (hạn chế, nhưng kỹ thuật) của tôi, nội dung động được phục vụ nhanh hoặc nhanh hơn Apache. Với hồ sơ bộ nhớ của Nginx, nó sẽ hoạt động tốt hơn trên Raspberry Pi. Lợi thế của Apache - mặc dù không phải ở đây - là nó ổn định hơn và có nhiều kỹ thuật viên giàu kinh nghiệm hơn.
Alex Chamberlain

Tôi thậm chí sẽ không xem xét Apache trong 256 MB trừ khi bạn có một cấu hình rất phức tạp mà nginx hoặc lighttpd không thể quản lý
John La Rooy

Câu trả lời:


17

Câu hỏi thực sự ở đây là "Bạn có cần tất cả các tính năng mà Apache cung cấp không?" (hoặc quan trọng hơn là "Bạn có sẵn sàng sử dụng hết bộ nhớ cho các tính năng này không?") - Bạn có thể biên dịch tùy chỉnh một RẤT bị loại bỏ Apache + mod_perl hoặc mod_php để chạy giao diện web Nagios của bạn (hoặc một apache bị tước ber-tước chỉ chạy các CGI perl), nhưng ngay cả ở dạng tối giản, Apache có thể sẽ chiếm nhiều bộ nhớ hơn nginx để thực hiện cùng một công việc - Nó chỉ không được xây dựng để trở nên nhỏ bé.

Để chắc chắn 100% bạn có thể muốn thực hiện tắt (biên dịch cả nginx và Apache và xem cái nào ăn ít RAM hơn), nhưng kinh nghiệm của tôi trên các máy chủ "bình thường" cho tôi biết rằng nginx có lẽ là lựa chọn tốt hơn cho bộ nhớ thấp cấu hình: Bạn từ bỏ tính linh hoạt của Apache, nhưng nếu bạn không cần điều đó (và hầu hết các trang web thì không ) bạn sẽ không bao giờ nhận thấy sự khác biệt.


Hiệu suất (thời gian) khôn ngoan Tôi nghi ngờ bạn sẽ bị giới hạn bởi máy chủ web của mình - Tất cả các điểm chuẩn bị bỏ qua một bên, nếu bạn đang làm đủ âm lượng trong đó hiệu suất của công cụ máy chủ đưa ra các trang là điều quan trọng mà bạn có thể sẽ đi để nướng Raspberry Pi của bạn (và thực sự, có bao nhiêu người sẽ xem xét dữ liệu giám sát của bạn cùng một lúc? :-).
Đó là một tiên đề mà bạn có thể tối ưu hóa một hệ thống về không gian hoặc thời gian, nhưng không bao giờ cả hai - và trên không gian Raspberry Pi có lẽ là hạn chế hạn chế của bạn.


Tôi nghi ngờ rằng Apache mạnh hơn nhiều so với Nginx ngày nay.
Alex Chamberlain

@AlexChamberlain Nếu bạn đọc kỹ bài viết của tôi, bạn sẽ lưu ý rằng tôi không bao giờ sử dụng từ này powerful(vì đó là một thuật ngữ không xác định). Tôi đã nói flexible(đề cập đến có bao nhiêu cách máy chủ lõi trần có thể được cấu hình để đáp ứng nhu cầu). Điều này không có nghĩa là phản ánh xấu trên cả hai máy chủ: cả hai đều là những đoạn mã tuyệt vời, nhưng chúng có mục tiêu thiết kế rất khác nhau. Apache được thiết kế để trở thành tất cả mọi thứ cho tất cả mọi người - một chiếc xe tải mà bạn có thể đóng gói toàn bộ ngôi nhà của mình. nginx được thiết kế nhỏ và nhanh - một chiếc xe thể thao, nhưng bạn không thể mang theo vợ, con, vợ và con chó của gia đình.
voretaq7

Tôi nghĩ rằng Nginx đang phát triển ... bây giờ ít nhất là một chiếc hatchback và phát triển mọi lúc. Nó có thể hỗ trợ tất cả các ngôn ngữ động chính bằng cách này hay cách khác, hỗ trợ SSL và SPDY hiện đang ở bản Beta.
Alex Chamberlain

15

Nginx

Tôi đã có một số trải nghiệm tốt với Nginx với tư cách là một máy chủ web. Tôi sẽ hợp tác với một khung wsgi nhẹ như chai hoặc bình để phát triển ứng dụng nhanh trong Python.

Đừng mong đợi nó sẽ xử lý hơn 10 yêu cầu mỗi giây :)

Cài đặt

Nginx nằm trong cả kho lưu trữ Debian / Raspbian và Arch, do đó có thể được cài đặt bằng một lệnh duy nhất.

Cổng vòm

sudo pacman -Sy nginx

Debian / Raspbian

sudo apt-get install nginx

Cấu hình

Có rất nhiều ví dụ về cấu hình trên tất cả các trang web và một lời giải thích chi tiết có lẽ nằm ngoài phạm vi của câu hỏi này. Có rất nhiều ví dụ trên Nginx Wiki và danh sách gửi thư rất hữu ích.

Vì bạn đã đề cập đến PHP, bạn sẽ rất thích thú khi biết rằng /etc/nginx/nginx.conftệp tiêu chuẩn chứa một ví dụ về PHP.


Tôi yêu Nginx. Rất dễ dàng để mở rộng bằng cách sử dụng hệ thống mô-đun của nó.
Alex Chamberlain

1
Tôi có thể đã mở rộng câu trả lời của bạn một chút, hy vọng bạn không phiền chứ?
Alex Chamberlain

13

lighttpd

Một máy chủ web tài nguyên thấp tuyệt vời là lighttpd , hỗ trợ cả PHP và SSL. Nó dường như đang hoạt động với PHP trên Raspberry Pi và rất có thể định cấu hình lighttpd để hỗ trợ SecureHTTP .


lighttpd là một lựa chọn tốt khác. Sự phổ biến của nginx đã làm lu mờ nó ở rất nhiều nơi nhưng nó chắc chắn là một máy chủ đáng kính (và nhỏ)
voretaq7

lighttpd + php-fcgi có thể làm rất tốt.
Zlatko

1

node.js

Bạn có thể sử dụng node.js để tạo máy chủ web waight nhẹ. Xem ví dụ sau từ trang hướng dẫn của 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/');

Mã ở trên là tập lệnh java để bạn có thể viết logic tạo mã động của mình trong tập lệnh java và bắt đầu sử dụng ngay lập tức.

Bạn sẽ phải tải xuống và thiết lập node.js từ liên kết: http: //nodejs.org/ cho Windows hoặc bất kỳ nền tảng nào bạn muốn sử dụng.

Khởi động máy chủ web bằng lệnh:

node hello.js

Nhưng Node.js có nói php không?
Lucas Kauffman

Node.JS được sử dụng trong các bối cảnh khác. Nó không hoạt động tốt như một máy chủ độc lập vì tất cả các mã là C ++. NHƯNG! Điều đó thật tuyệt vời vì bạn có thể sử dụng nút để truy cập TRỰC TIẾP GPIO và phần còn lại của phần cứng cấp thấp bằng cách sử dụng +1 của node.js .. Nhưng bạn vẫn cần một giao diện người dùng như apache / lighttpd / iis để phục vụ nội dung
Piotr Kula

@LucasKauffman Không - nó không thực sự là một máy chủ web, mà là một ứng dụng web.
Alex Chamberlain

1
Chào mừng bạn đến với Stack Exchange. Câu trả lời hay, nhưng tôi sợ tôi đã đánh giá thấp vì tôi không nghĩ nó giải quyết được câu hỏi. OP muốn PHP và những người đọc tương lai có thể sẽ muốn một máy chủ có khả năng hơn một chút.
Alex Chamberlain

1
Tôi đang điều hành Nagios, không phát triển Ứng dụng của riêng mình: p
Lucas Kauffman

0

Có lẽ bạn có thể xem những gì một số người khác đã sử dụng trên các hộp cấp thấp .

Về cơ bản, đó là lighttpd + php-fcgi. Lighttpd thực sự rất nhẹ và php-fcgi có thể được cấu hình để sử dụng chỉ một chút bộ nhớ. Tôi đã thiết lập nó trên hộp VPS 64 MB (không phải nagios, mà là CMS).

Ngoài ra tôi không biết nếu bạn cũng cần tối ưu hóa MySQL để sử dụng ít bộ nhớ nhất có thể .

Nó có thể giúp bạn, nó có thể không. Tôi vẫn chưa bắt đầu sử dụng Raspi của mình :)


0

Máy chủ Mako và BarracudaDrive có nguồn gốc từ cùng một nguồn và hai máy chủ này có thể cung cấp nội dung được tạo động (bằng cách sử dụng ngôn ngữ kịch bản lệnh Lua) nhanh hơn 70% so với Apache có thể cung cấp nội dung tĩnh. Kết quả điểm chuẩn có tại đây: http : // barrackishrive.com/blog/2013/03/Apache-Nginx-Lighttpd-Monkey-and-BarracudaDrive-Speed-Test

Máy chủ Mako có thể được tìm thấy ở đây: http://makoserver.net/


0

Tôi đang sử dụng kết hợp Nginx / Hành khách để chạy pi.gadgetoid.com dựa trên Ruby 24/7 trên Raspberry Pi 512Mb. Điều này vượt trội hoàn toàn so với thiết lập Thin / Apache mà tôi đang sử dụng trước đây. Đây là một trang web công cộng, có lưu lượng truy cập khá cao, mặc dù tôi đã gian lận rất nhiều bằng cách sử dụng Cloudflare (một proxy lưu trữ cơ bản) để xử lý hầu hết khối lượng đó.

Tôi khá chắc chắn rằng cấu hình này cũng sẽ ngồi thoải mái trên Pi 256 MB, nhưng tôi gặp khó khăn khi biên dịch các mô-đun Hành khách và Nginx; chạy vào giới hạn bộ nhớ.

Tôi biết đó không phải là một giải pháp PHP và có khả năng tôi sẽ bị mắng mỏ vì đã gợi ý một câu trả lời vô nghĩa như vậy; nhưng nếu bạn đang tìm kiếm Pi để vượt qua giới hạn kiến ​​thức của bạn và đang làm điều này cho một sự mày mò thông thường, tôi thực sự khuyên bạn nên tìm hiểu về Ruby và Sinatra. Bạn sẽ có một sự căm ghét đối với PHP trong vòng một vài tuần.

Nhìn chung, bạn sẽ không gặp nhiều khó khăn khi chạy một ngăn xếp web PHP / Apache trên máy chủ 256MB. Tôi đã thực hiện điều này cho các trang web lớn hơn nhiều trong khả năng chuyên nghiệp về lưu trữ dựa trên đám mây. Đó là khi MySQL dính líu rằng mọi thứ trở nên tồi tệ. Chạy một ngăn xếp LAMP đầy đủ trên 256MB là điều khó nói, nhưng không phải là không thể đối với lưu lượng truy cập thấp.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.