Buduję obraz na serwerze Nagios. Jednym z problemów Raspberry Pi jest to, że pamięć na Raspberry Pi jest dość mała. Więc użyję lekkiego interfejsu opartego na php-apc zamiast standardowego.
Zastanawiałem się, jaki lekki serwer WWW jest zalecany?
Zastanawiałem się nad minimalnym serwerem internetowym, który może zrobić php i zapewnić SSL. Myślałem o Apache2 lub Nginx. Chociaż myślę, że Apache nadal przewyższa Nginx, ponieważ zawartość jest dynamiczna.
web-server
Lucas Kauffman
źródło
źródło
Odpowiedzi:
Prawdziwe pytanie brzmi: „Czy potrzebujesz wszystkich funkcji, które zapewnia Apache?” (lub co ważniejsze: „Czy chcesz zużyć pamięć na te funkcje?”) - Możesz skompilować BARDZO zredukowaną Apache + mod_perl lub mod_php, aby uruchomić interfejs sieciowy Nagios (lub apache Über-Stripped, który po prostu uruchamia perg CGI), ale nawet w minimalistycznej formie Apache prawdopodobnie zajmie więcej pamięci niż nginx, aby wykonać tę samą pracę - po prostu nie został zbudowany jako mały.
Aby być w 100% pewnym, możesz chcieć zrobić wypalenie (skompiluj zarówno nginx, jak i Apache i sprawdź, które zjadają mniej pamięci RAM), ale moje doświadczenie na „normalnych” serwerach mówi mi, że nginx jest prawdopodobnie lepszym wyborem dla małej pamięci konfiguracja: rezygnujesz z pewnej elastyczności Apache, ale jeśli i tak nie potrzebujesz (a większość stron tego nie robi ), nigdy nie zauważysz różnicy.
Wydajność (czasowa) Wątpię, czy ograniczy cię serwer internetowy - Wszystkie wymyślone testy porównawcze na bok, jeśli robisz wystarczająco dużo, gdy wydajność silnika serwera rozdającego strony jest tak ważna, że prawdopodobnie idziesz do pieczenia twojego Raspberry Pi (i tak naprawdę, ile osób będzie jednocześnie patrzeć na twoje dane monitorowania? :-).
To prawie aksjomat, że możesz zoptymalizować system pod kątem przestrzeni lub czasu, ale nigdy jedno i drugie - a na przestrzeni Raspberry Pi jest prawdopodobnie twoim ograniczeniem.
źródło
powerful
(ponieważ jest to niezdefiniowany termin). Powiedziałemflexible
(odnosząc się do tego, na ile sposobów można skonfigurować serwer podstawowy bez kości, aby spełnić potrzeby). Nie ma to źle odzwierciedlać żadnego z serwerów: oba są doskonałymi fragmentami kodu, ale mają bardzo różne cele projektowe. Apache został zaprojektowany tak, aby być wszystkim dla wszystkich - ciężarówką, w której można spakować cały dom. nginx ma być mały i szybki - samochód sportowy, ale nie możesz zabrać ze sobą żony, dzieci, teściów i rodzinnego psa.Nginx
Mam dobre doświadczenia z Nginx jako serwerem internetowym. Połączyłem go z lekkim frameworkiem WSGI , takim jak butelka lub kolba, do szybkiego tworzenia aplikacji w Pythonie.
Nie oczekuj jednak, że będzie on obsługiwał więcej niż 10 żądań na sekundę :)
Instalacja
Nginx znajduje się zarówno w repozytoriach Debian / Raspbian, jak i Arch, więc można go zainstalować za pomocą jednego polecenia.
Łuk
Debian / Raspbian
Konfiguracja
Istnieje wiele przykładów konfiguracji w całym Internecie, a szczegółowe wyjaśnienie prawdopodobnie wykracza poza zakres tego pytania. Istnieje wiele przykładów na Wiki Nginx, a lista mailingowa jest bardzo pomocna.
Ponieważ wspomniałeś o PHP, bardzo zainteresuje Cię informacja, że standardowy
/etc/nginx/nginx.conf
plik zawiera przykład PHP.źródło
lighttpd
Świetnym serwerem WWW o niskim poziomie zasobów jest lighttpd , który obsługuje zarówno PHP, jak i SSL. To wydaje się być pracy z PHP na Raspberry Pi, i to jest bardzo możliwe, aby skonfigurować lighttpd wspierać SecureHTTP .
źródło
node.js
Możesz użyć node.js, aby stworzyć serwer WWW o niskiej gramaturze. Zobacz następujący przykład z witryny z samouczkiem node.js:
Powyższy kod to skrypt Java, dzięki czemu można napisać dynamiczną logikę generowania kodu w skrypcie Java i natychmiast zacząć z niego korzystać.
Będziesz musiał pobrać i skonfigurować node.js z linku: http: //nodejs.org/ dla Windows lub dowolnej platformy, której wolisz używać.
Uruchom serwer WWW za pomocą polecenia:
źródło
Być może możesz rzucić okiem na to, co niektórzy ludzie używali w niskiej jakości pudełkach .
Zasadniczo jest to lighttpd + php-fcgi. Lighttpd jest naprawdę lekki, a php-fcgi można skonfigurować tak, aby używał tylko odrobiny pamięci. Miałem to ustawione na 64 MB VPS (nie nagios, ale CMS).
Nie wiem też, czy trzeba zoptymalizować MySQL, aby zużywał jak najmniej pamięci .
Może ci to pomóc, może nie. Jeszcze nie zacząłem używać mojego Raspi :)
źródło
Mako Server i BarracudaDrive pochodzą z tego samego źródła i te dwa serwery mogą dostarczać dynamicznie generowaną zawartość (przy użyciu języka skryptowego Lua) o 70% szybciej niż Apache może dostarczać zawartość statyczną. Wyniki testów porównawczych są tutaj: http://barracudadrive.com/blog/2013/03/Apache-Nginx-Lighttpd-Monkey-and-BarracudaDrive-Speed-Test
Serwer Mako można znaleźć tutaj: http://makoserver.net/
źródło
Używam kombinacji Nginx / Passenger do uruchamiania opartego na Ruby pi.gadgetoid.com 24/7 na 512Mb Raspberry Pi. To drastycznie przewyższa konfigurację Thin / Apache, której wcześniej używałem. Jest to publicznie dostępna strona o dość dużym natężeniu ruchu, chociaż dużo oszukiwałem, używając Cloudflare (proxy buforowania) do obsługi większości tego woluminu.
Jestem prawie pewien, że ta konfiguracja również byłaby wygodna na 256 MB Pi, ale miałem problemy ze skompilowaniem modułów Passenger i Nginx; napotyka ograniczenia pamięci.
Wiem, że to nie jest rozwiązanie PHP, i zapewne zostanę obalony za sugerowanie tak stycznej odpowiedzi; ale jeśli szukasz Pi, aby przekroczyć granice swojej wiedzy i robisz to dla jakiegoś swobodnego majsterkowania, zdecydowanie sugeruję przyjrzenie się Ruby i Sinatrze. W ciągu kilku tygodni będziesz kipiał nienawiścią do PHP.
Zasadniczo nie będziesz miał problemu z uruchomieniem stosu sieciowego PHP / Apache na serwerze 256 MB. Zrobiłem to w przypadku znacznie większych witryn w profesjonalnym charakterze w zakresie hostingu w chmurze. Kiedy MySQL się angażuje, robi się brzydko. Uruchamianie pełnego stosu LAMP na 256 MB jest co najmniej bolesne, ale nie jest niemożliwe w przypadku małego natężenia ruchu.
źródło