มีเว็บเซิร์ฟเวอร์น้ำหนักเบาที่จะให้บริการเนื้อหาแบบไดนามิกหรือไม่


21

ฉันกำลังสร้างภาพด้วยเซิร์ฟเวอร์ Nagios หนึ่งในปัญหาของราสเบอร์รี่ปี่คือหน่วยความจำค่อนข้างเล็กในราสเบอร์รี่ปี่ ดังนั้นฉันจะใช้ส่วนต่อประสานแบบน้ำหนักเบาโดยอ้างอิงจาก php-apc แทนที่จะเป็นแบบมาตรฐาน

ฉันสงสัยว่ามีการแนะนำให้ใช้เว็บเซิร์ฟเวอร์น้ำหนักเบาแบบใด

ฉันกำลังพิจารณาเว็บเซิร์ฟเวอร์ขั้นต่ำที่สามารถทำ php และมอบ SSL ได้ ฉันคิดถึง Apache2 หรือ Nginx แม้ว่าฉันคิดว่า Apache จะยังคงเหนือกว่า Nginx เนื่องจากเนื้อหาเป็นแบบไดนามิก


1
Nginx จะมีประสิทธิภาพสูงกว่า Apache อย่างง่ายดาย
Alex Chamberlain

@AlexChamberlain เกี่ยวกับเนื้อหาแบบคงที่มันทำ แต่ไม่เกี่ยวกับไดนามิก
Lucas Kauffman

5
ข้อเรียกร้อง ขึ้นอยู่กับความหมายของการแสดง Nginx จะใช้หน่วยความจำน้อยลงรั่วน้อยลงและให้บริการไฟล์ (คงที่) ได้เร็วขึ้น ในประสบการณ์ของฉัน (มี จำกัด แต่ทางเทคนิค) เนื้อหาแบบไดนามิกจะแสดงเร็วหรือเร็วกว่า Apache ด้วยโปรไฟล์หน่วยความจำของ Nginx มันจะทำงานได้ดีขึ้นใน Raspberry Pi ข้อดีของ Apache - ไม่ใช่ที่นี่ - มีเสถียรภาพมากกว่าและมีช่างที่มีประสบการณ์มากกว่า
อเล็กซ์แชมเบอร์เลน

ฉันจะไม่พิจารณา Apache ใน 256MB เว้นแต่ว่าคุณจะมีการกำหนดค่าที่ซับซ้อนมากซึ่ง nginx หรือ lighttpd ไม่สามารถจัดการได้
John La Rooy

คำตอบ:


17

คำถามจริงที่นี่คือ "คุณต้องการคุณสมบัติทั้งหมดที่ Apache มีให้หรือไม่" (หรือที่สำคัญกว่า "คุณยินดีที่จะใช้หน่วยความจำสำหรับคุณลักษณะเหล่านี้?") - คุณสามารถกำหนดเองที่รวบรวมมากปล้นลง Apache + mod_perl หรือ mod_php ที่จะเรียกใช้อินเตอร์เฟซเว็บของคุณ Nagios (หรือÜber-Stripped Apache ว่า เพียงแค่เรียกใช้ CGIs perl) แต่แม้ในรูปแบบที่เรียบง่าย Apache อาจจะใช้หน่วยความจำมากกว่า nginx เพื่อทำงานเดียวกัน - มันไม่ได้ถูกสร้างขึ้นมาให้เล็ก

เพื่อให้แน่ใจว่า 100% คุณอาจต้องการทำ bake-off (รวบรวมทั้ง nginx และ Apache และดูว่ากิน RAM น้อยกว่าใด) แต่ประสบการณ์ของฉันในเซิร์ฟเวอร์ "ปกติ" บอกฉันว่า nginx น่าจะเป็นทางเลือกที่ดีกว่าสำหรับหน่วยความจำต่ำ การกำหนดค่า: คุณละทิ้งความยืดหยุ่นบางอย่างของ Apache แต่ถ้าคุณไม่ต้องการสิ่งนั้น (และไซต์ส่วนใหญ่ไม่ได้ทำ ) คุณจะไม่สังเกตเห็นความแตกต่าง


ประสิทธิภาพ (เวลา) ฉลาดฉันสงสัยว่าคุณจะถูก จำกัด โดยเว็บเซิร์ฟเวอร์ของคุณ - มาตรฐานทั้งหมดที่วางแผนไว้หากคุณทำปริมาณมากพอที่ประสิทธิภาพของเอ็นจิ้นเซิร์ฟเวอร์จะแจกหน้านั้นเป็นสิ่งสำคัญที่คุณอาจต้องทำ เพื่ออบราสเบอร์รี่ Pi ของคุณ (และจริงๆมีกี่คนที่จะดูข้อมูลการตรวจสอบของคุณในครั้งเดียว? :-)
มันเป็นความจริงที่คุณสามารถเพิ่มประสิทธิภาพของระบบสำหรับพื้นที่หรือเวลา แต่ไม่เคยทำทั้งสองอย่าง - และในพื้นที่ Raspberry Pi อาจเป็นข้อ จำกัด ของคุณ


ฉันสงสัยว่า Apache มีประสิทธิภาพมากกว่า Nginx ในทุกวันนี้
อเล็กซ์แชมเบอร์เลน

@AlexChamberlain หากคุณอ่านโพสต์ของฉันอย่างระมัดระวังคุณจะทราบว่าฉันไม่เคยใช้คำpowerful(เพราะเป็นคำที่ไม่ได้กำหนด) ฉันพูดว่าflexible(หมายถึงเซิร์ฟเวอร์หลักที่ไม่มีกระดูกสามารถกำหนดค่าได้หลายวิธีเพื่อตอบสนองความต้องการ) สิ่งนี้ไม่ได้หมายถึงการสะท้อนที่ไม่ดีบนเซิร์ฟเวอร์ทั้งสอง: ทั้งคู่เป็นโค้ดที่ยอดเยี่ยม แต่มีเป้าหมายการออกแบบที่แตกต่างกันอย่างมากมาย Apache ออกแบบมาเพื่อทุกสิ่งสำหรับทุกคน - รถบรรทุกที่คุณสามารถเก็บของในบ้านได้ nginx ได้รับการออกแบบให้มีขนาดเล็กและรวดเร็ว - เป็นรถสปอร์ต แต่คุณไม่สามารถพาภรรยาลูก ๆ ลูกสะใภ้และหมาครอบครัวไปด้วยได้
voretaq7

ฉันคิดว่า Nginx กำลังเติบโต ... ตอนนี้มันเป็นรถแฮทช์แบ็กและเติบโตตลอดเวลา สามารถรองรับภาษาแบบไดนามิกที่สำคัญทั้งหมดในทางใดทางหนึ่งรองรับ SSL และ SPDY ในปัจจุบันเป็นรุ่นเบต้า
อเล็กซ์แชมเบอร์เลน

15

Nginx

ฉันมีประสบการณ์ที่ดีกับNginxในฐานะเว็บเซิร์ฟเวอร์ ฉันจะร่วมมือกับwsgi framework ที่มีน้ำหนักเบาเช่นขวดหรือกระติกน้ำสำหรับการพัฒนาแอปพลิเคชันอย่างรวดเร็วใน Python

อย่าคาดหวังให้จัดการมากกว่า 10 คำขอต่อวินาทีแม้ว่า :)

การติดตั้ง

Nginx อยู่ในที่เก็บ Debian / Raspbian และ Arch ดังนั้นสามารถติดตั้งได้ด้วยคำสั่งเดียว

โค้ง

sudo pacman -Sy nginx

Debian / Raspbian

sudo apt-get install nginx

องค์ประกอบ

มีตัวอย่างมากมายของการกำหนดค่าทั่วทั้งเว็บและคำอธิบายโดยละเอียดน่าจะเกินขอบเขตของคำถามนี้ มีตัวอย่างมากมายในNginx Wikiและรายชื่อผู้รับจดหมายมีประโยชน์มาก

เมื่อคุณพูดถึง PHP คุณจะสนใจอย่างมากที่จะรู้ว่า/etc/nginx/nginx.confไฟล์มาตรฐานมีตัวอย่าง PHP


ฉันรัก Nginx ขยายได้ง่ายมากโดยใช้ระบบโมดูลาร์
อเล็กซ์แชมเบอร์เลน

1
ฉันอาจขยายคำตอบของคุณเล็กน้อยหวังว่าคุณจะไม่สนใจเหรอ?
อเล็กซ์แชมเบอร์เลน

13

lighttpd

เว็บเซิร์ฟเวอร์ที่มีทรัพยากรต่ำยอดเยี่ยมคือlighttpdซึ่งรองรับทั้ง PHP และ SSL มันดูเหมือนจะทำงานร่วมกับ PHPในราสเบอร์รี่ Pi และเป็นไปได้มากที่จะกำหนดค่า lighttpd สนับสนุน SecureHTTP


lighttpd เป็นอีกทางเลือกที่ดี ความนิยม Nginx ได้บดบังไว้ในสถานที่หลายแห่ง แต่ก็แน่นอนเกียรติ (และเล็ก) เซิร์ฟเวอร์
voretaq7

lighttpd + php-fcgi ทำได้ดีมาก
Zlatko

1

Node.js

คุณสามารถใช้ node.js เพื่อสร้างเว็บเซิร์ฟเวอร์ ดูตัวอย่างต่อไปนี้จากไซต์การสอน 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/');

โค้ดด้านบนคือจาวาสคริปต์เพื่อให้คุณสามารถเขียนตรรกะการสร้างรหัสแบบไดนามิกในจาวาสคริปต์และเริ่มใช้ในเวลาไม่นาน

คุณจะต้องดาวน์โหลดและติดตั้ง node.js จากลิงค์: http: //nodejs.org/ สำหรับ Windows หรือแพลตฟอร์มที่คุณต้องการใช้

เริ่มเว็บเซิร์ฟเวอร์โดยใช้คำสั่ง:

node hello.js

แต่ Node.js พูด php หรือไม่
ลูคัสคอฟฟ์แมน

Node.JS ใช้ในบริบทอื่น ๆ มันใช้งานไม่ได้กับเซิร์ฟเวอร์แบบสแตนด์อโลนเพราะรหัสทั้งหมดคือ C ++ แต่! เป็นสิ่งที่ยอดเยี่ยมเพราะคุณสามารถใช้โหนดเพื่อเข้าถึง GPIO โดยตรงและฮาร์ดแวร์ระดับต่ำโดยใช้ node.js '+1 เพื่อความหลากหลาย .. แต่คุณยังต้องใช้ส่วนหน้าเช่น apache / lighttpd / iis เพื่อแสดงเนื้อหาขึ้น
Piotr Kula

@LucasKauffman No - มันไม่ใช่เว็บเซิร์ฟเวอร์จริงๆ แต่เป็นเว็บแอปพลิเคชัน
อเล็กซ์แชมเบอร์เลน

1
ยินดีต้อนรับสู่ Stack Exchange คำตอบที่ดี แต่ฉันเกรงว่าฉันจะลงคะแนนเพราะฉันไม่คิดว่ามันจะแก้ปัญหาได้ OP ต้องการ PHP และผู้อ่านในอนาคตอาจต้องการเซิร์ฟเวอร์ที่มีความสามารถเพิ่มขึ้นเล็กน้อย
อเล็กซ์แชมเบอร์เลน

1
ฉันใช้ Nagios ไม่ได้พัฒนาแอปพลิเคชันของฉันเอง: p
Lucas Kauffman

0

บางทีคุณสามารถดูสิ่งที่คนอื่นใช้ในกล่องระดับล่าง

โดยทั่วไปมันคือ lighttpd + php-fcgi Lighttpd มีน้ำหนักเบาและ php-fcgi สามารถกำหนดค่าให้ใช้หน่วยความจำเพียงเล็กน้อย ฉันได้ตั้งค่าไว้ในกล่อง VPS 64MB (ไม่ใช่ nagios แต่เป็น CMS)

นอกจากนี้ฉันไม่ทราบว่าคุณยังต้องปรับแต่ง MySQL ให้ใช้หน่วยความจำขนาดเล็กตามที่ได้รับด้วยหรือไม่

มันอาจช่วยคุณได้ ฉันยังไม่ได้เริ่มใช้ Raspi ของฉัน :)


0

Mako Server และ BarracudaDrive มาจากแหล่งเดียวกันและเซิร์ฟเวอร์ทั้งสองนี้สามารถส่งเนื้อหาที่สร้างขึ้นแบบไดนามิก (โดยใช้ภาษาสคริปต์ Lua) เร็วกว่า Apache ถึง 70% ที่สามารถส่งเนื้อหาคงที่ได้ ผลการเปรียบเทียบอยู่ที่นี่: http://barracudadrive.com/blog/2013/03/Apache-Nginx-Lighttpd-Monkey-and-BarracudaDrive-Speed-Test

สามารถพบ Mako Server ได้ที่นี่: http://makoserver.net/


0

ฉันใช้การรวมกันของ Nginx / Passenger เพื่อรัน pi.gadgetoid.com แบบ Ruby โดยใช้ 24/7 บน 512Mb Raspberry Pi สิ่งนี้มีประสิทธิภาพสูงกว่าการติดตั้งแบบ Thin / Apache ที่ฉันเคยใช้มาก่อน นี่เป็นเว็บไซต์สาธารณะที่มีอัตราการเข้าชมสูงถึงแม้ว่าฉันจะโกงมากด้วยการใช้ Cloudflare (แคชพร็อกซีโดยทั่วไป) เพื่อจัดการกับไดรฟ์ข้อมูลส่วนใหญ่

ฉันค่อนข้างแน่ใจว่าการกำหนดค่านี้จะนั่งอย่างสบายใจบน 256MB Pi ด้วย แต่ฉันมีปัญหาในการรวบรวมโมดูลผู้โดยสารและ Nginx; ทำงานเป็นข้อ จำกัด ของหน่วยความจำ

ฉันรู้ว่ามันไม่ใช่ทางออกของ PHP และฉันน่าจะถูกหลอกให้แนะนำคำตอบตามธรรมชาติ; แต่ถ้าคุณกำลังมองหาพี่ที่จะผลักดันขอบเขตความรู้ของคุณและกำลังทำสิ่งนี้เพื่อแก้ไขปัญหาชั่วคราวฉันขอแนะนำให้มองหาทับทิมและซินาตร้า คุณจะมีความเกลียดชังสำหรับ PHP ภายในสองสามสัปดาห์

คุณจะไม่มีปัญหาในการใช้ PHP / Apache web stack บนเซิร์ฟเวอร์ 256MB ฉันได้ทำสิ่งนี้กับไซต์ที่ใหญ่กว่าด้วยความสามารถระดับมืออาชีพในการโฮสต์บนคลาวด์ เมื่อ MySQL มีส่วนเกี่ยวข้องกับสิ่งต่าง ๆ ที่น่าเกลียด การเรียกใช้ LAMP stack แบบเต็มบน 256MB นั้นเจ็บปวดที่จะพูดน้อย แต่ไม่สามารถทำได้สำหรับปริมาณการใช้งานที่ต่ำ

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.