Есть ли легкий веб-сервер, который будет обслуживать динамический контент?

21

Я создаю образ с помощью сервера Nagios. Одна из проблем Raspberry Pi заключается в том, что памяти у Raspberry Pi достаточно мало. Поэтому я буду использовать облегченный интерфейс на основе php-apc вместо стандартного.

Мне было интересно, какой легкий веб-сервер рекомендуется использовать?

Я рассматривал минимальный веб-сервер, который может делать php и предоставлять SSL. Я думал о Apache2 или Nginx. Хотя я думаю, что Apache все равно превзойдет Nginx, поскольку контент динамический.

Лукас Кауфман
источник
1
Nginx легко превзойдет Apache.
Алекс Чемберлен
@AlexChamberlain для статического контента, но не для динамического.
Лукас Кауфман
5
Запрос. Это зависит от того, что вы подразумеваете под производительностью. Nginx будет использовать меньше памяти, меньше утечек и быстрее обслуживать (статические) файлы. По моему (ограниченному, но техническому) опыту, динамический контент обслуживается быстрее или быстрее, чем Apache. Учитывая профиль памяти Nginx, он будет работать намного лучше на Raspberry Pi. Преимущество Apache - хотя и не здесь - это то, что он более стабилен и есть более опытные специалисты.
Алекс Чемберлен
Я бы даже не рассмотрел Apache в 256 МБ, если у вас нет очень сложной конфигурации, которой не могут управлять nginx или lighttpd
Джон Ла Рой,

Ответы:

17

Реальный вопрос здесь: «Вам нужны все функции, которые предоставляет Apache?» (или, что более важно, «Готовы ли вы использовать память для этих функций?»). Вы можете скомпилировать ОЧЕНЬ урезанный Apache + mod_perl или mod_php, чтобы запустить веб-интерфейс Nagios (или Uber-Stripped apache, который просто запускает Perl CGI), но даже в минималистском виде Apache, вероятно, потребует больше памяти, чем nginx, чтобы выполнить ту же работу - он просто не был создан, чтобы быть маленьким.

Чтобы быть на 100% уверенным, вы, возможно, захотите испечь (скомпилируйте и nginx, и Apache, и посмотрите, что потребляет меньше оперативной памяти), но мой опыт работы с «обычными» серверами говорит о том, что nginx, вероятно, лучший выбор для малой памяти. конфигурация: вы отказываетесь от некоторой гибкости Apache, но если вам все равно это не нужно (а большинство сайтов не нужно), вы никогда не заметите разницы.


С точки зрения производительности (времени), я сомневаюсь, что вы будете ограничены вашим веб-сервером - если не считать все надуманные тесты, если вы делаете достаточно много, а производительность серверного движка, раздающего страницы, настолько критична, что вы, вероятно, собираетесь чтобы испечь свой Raspberry Pi (и действительно, сколько людей будут одновременно просматривать ваши данные мониторинга? :-).
Это в значительной степени аксиома, что вы можете оптимизировать систему для пространства или времени, но никогда не для обоих - и для пространства Raspberry Pi, вероятно, ваше ограничивающее ограничение.

voretaq7
источник
Я скептически отношусь к тому, что Apache сегодня намного мощнее, чем Nginx.
Алекс Чемберлен
@AlexChamberlain Если вы внимательно прочитаете мой пост, вы заметите, что я никогда не использовал это слово powerful(потому что это неопределенный термин). Я сказал flexible(имея в виду, сколько способов можно настроить базовый сервер для нужд). Это не должно плохо отражаться на обоих серверах: оба являются отличными частями кода, но у них совершенно разные цели проектирования. Apache разработан, чтобы быть всем для всех - грузовиком, в который вы можете упаковать весь свой дом. nginx спроектирован так, чтобы быть маленьким и быстрым - спортивным автомобилем, но вы не можете взять с собой жену, детей, родственников и собаку.
voretaq7
Я думаю, что Nginx растет ... теперь он, по крайней мере, хэтчбек и постоянно растет. Он может поддерживать все основные динамические языки тем или иным образом, поддерживает SSL и SPDY в настоящее время в бета-версии.
Алекс Чемберлен
15

Nginx

У меня есть хороший опыт использования Nginx в качестве веб-сервера. Для быстрой разработки приложений на Python я использовал бы его с легковесным wsgi- фреймворком, таким как флакон или флакон .

Не ожидайте, что он будет обрабатывать более 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 на Raspberry Pi, и это очень возможно настроить LightTPD для поддержки SecureHTTP .

Прорвать
источник
lighttpd - еще один хороший выбор. Популярность nginx затмила его во многих местах, но это определенно респектабельный (и маленький) сервер
voretaq7
lighttpd + php-fcgi может отлично работать.
Златко
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/');

Выше код является сценарием Java, поэтому вы можете написать свою динамическую логику генерации кода в сценарии Java и начать использовать ее в кратчайшие сроки.

Вам нужно скачать и настроить node.js по ссылке: http: //nodejs.org/ для Windows или любой другой платформы, которую вы предпочитаете использовать.

Запустите веб-сервер с помощью команды:

node hello.js
rashid.noorani
источник
Но Node.js говорит на php?
Лукас Кауфман
Node.JS используется в других контекстах. Он не работает как отдельный сервер, потому что весь код на C ++. НО! Это замечательно, потому что вы можете использовать узел для прямого доступа к GPIO и остальному низкоуровневому оборудованию, используя node.js +1 для разнообразия. Но вам все еще нужен внешний интерфейс, такой как apache / lighttpd / iis, чтобы обслуживать контент
Piotr Кула
@ LucasKauffman Нет, это не веб-сервер, а веб-приложение.
Алекс Чемберлен
1
Добро пожаловать в Stack Exchange. Хороший ответ, но я боюсь, что я проголосовал, поскольку не думаю, что это решает вопрос. ОП хотел PHP и будущие читатели, вероятно, захотят сервер, который будет немного более способным.
Алекс Чемберлен
1
Я использую Nagios, а не разрабатываю собственное приложение: p
Лукас Кауфман
0

Может быть, вы можете взглянуть на то, что другие люди использовали на нижних ящиках .

По сути, это lighttpd + php-fcgi. Lighttpd действительно легкий, и php-fcgi может быть сконфигурирован для использования немного памяти. Я настроил его на 64-мегабайтный VPS-сервер (но не нагиос, а на CMS).

Также я не знаю, нужно ли оптимизировать MySQL, чтобы использовать как можно меньше памяти .

Это может вам помочь, а может и нет. Я еще не начал использовать мой Raspi :)

Златко
источник
0

Mako Server и BarracudaDrive получены из одного и того же источника, и эти два сервера могут доставлять динамически генерируемый контент (с использованием языка сценариев Lua) на 70% быстрее, чем Apache может доставлять статический контент. Результаты сравнительного анализа приведены здесь: http://barracudadrive.com/blog/2013/03/Apache-Nginx-Lighttpd-Monkey-and-BarracudaDrive-Speed-Test

Мако-сервер можно найти здесь: http://makoserver.net/

Будет
источник
0

Я использую комбинацию Nginx / Passenger для запуска pi.gadgetoid.com на основе Ruby 24/7 на 512Mb Raspberry Pi. Это значительно превосходит настройки Thin / Apache, которые я использовал ранее. Это общедоступный веб-сайт с достаточно высоким трафиком, хотя я много обманывал, используя Cloudflare (в основном, кеширующий прокси-сервер) для обработки большей части этого объема.

Я почти уверен, что эта конфигурация будет удобно размещаться и на 256 МБ Pi, но у меня были проблемы с компиляцией модулей Passenger и Nginx; сталкивается с ограничениями памяти.

Я знаю, что это не PHP-решение, и, скорее всего, меня будут ругать за то, что я предложил такой странный ответ; но если вы ищете Пи, чтобы раздвинуть границы ваших знаний, и делаете это для некоторой случайной работы, я настоятельно рекомендую заглянуть в Руби и Синатру. В течение нескольких недель у вас будет кипеть ненависть к PHP.

В общем, у вас не будет особых проблем с запуском веб-стека PHP / Apache на сервере 256 МБ. Я сделал это для гораздо больших сайтов на профессиональном уровне на облачном хостинге. Когда MySQL вмешивается, все становится ужасно. Выполнение полного стека LAMP на 256 МБ, по меньшей мере, болезненно, но не невозможно при низких объемах трафика.

Фил Ховард
источник