Пять лучших открытых веб-серверов. Веб-сервер (Web Server): для чего он нужен, как устроен и как работает Популярные web серверы

08.03.2020 Разное

Во времена моей юности в русскоязычном сегменте сети интернет был популярен только один единственный локальный веб-сервер. Это, как вы уже догадались, старый добрый Denwer. Он прочно обосновался на моём компьютере еще в далёком 2003 году. Другие альтернативы если и существовали в то время, то были известны в узких кругах и были не столь популярны.

Давайте посмотрим на то, что мы можем использовать сегодня, спустя столько лет. Я предлагаю рассмотреть, протестировать и сравнить 14-ть! программных комплексов предназначенных для использования в качестве локального веб-сервера для Windows.

1. AMPPS

Последняя версия: 1.7
Русский язык: есть (частично)
Portable версия: Нет
Домашняя страница: http://www.ampps.com/

Базовый комплект:

  • Softaculous AMPPS 1.7
  • Apache 2.2.22
  • MySQL 5.5.22
  • PHP 5.3.10 and 5.2.17
  • PERL 5.10.1
  • Python 2.7.2
  • MongoDB 2.0.4

AMPPS - это не просто локальный сервер, это целая библиотека приложений, где каждое из них можно быстро установить, повертеть и поковырять не отходя от кассы. Всё это хозяйство кропотливо каталогизировано и подробно описано.

Несомненным плюсом данной сборки является поддержка многих распространенных CMS, блог-платформ, веб-форумов, досок объявлений, фотогалерей и проч. Всего доступных приложений более 200! Набор включённых в пакет компонентов так же не отстает от жизни, все модули довольно свежие и, что примечательно, здесь мы можем найти такую экзотику как Python и MongoDB.

Из минусов я хочу отметить частичный русский перевод, который присутствует только в каталоге скриптов, да и то не везде. После перезапуска Apache трей-меню отказалось работать, перезагрузка Windows не помогла. Еще одним минусом является отсутствие портативности. На мой взгляд AMPPS больше пригодится новичкам для изучения скриптов, нежели серьёзным разработчикам. Работать с этим сервером мне было не очень комфортно, есть варианты и получше.

Последняя версия: 2.5.10
Русский язык: Нет
Portable версия: Нет
Домашняя страница: http://www.appservnetwork.com/


Базовый комплект:

  • Apache 2.2.8
  • PHP 5.2.6
  • MySQL 5.0.51b
  • phpMyAdmin-2.10.3

Apache и MySQL устанавливаются как сервисы. Никакой управляющей программы нет, только страница сомнительного дизайна со ссылкой на PhpMyAdmin. По своей сути AppServ является графическим установщиком Apache, PHP, MySQL и более ничем. Если тот же Denwer сам запускает компоненты, то здесь они просто устанавливаются в качестве сервисов и управляются самой Windows.

Последняя версия: 3.2010-11-07
Русский язык: Есть
Portable версия: Да
Домашняя страница: http://www.denwer.ru/


Базовый комплект:

  • Apache 2.2
  • PHP 5.3.3
  • MySQL 5.1.40
  • phpMyAdmin 3.2.3

Denwer… старый добрый Denwer. Мы видим всё тот же скудный набор не очень свежих компонентов (урезанных по самые яйца), чёрное окно и никакого GUI. К плюсам этого локального веб-сервера можно отнести его предельно малый размер и хорошую «базу знаний» на форуме, накопленную за многие годы. Фактически управление сервером осуществляется через выполнение.BAT скриптов по запуску и остановке модулей, как таковой управляющей программы нет вообще.

Denwer предельно прост и понятен, а потому имеет самую большую армию поклонников среди «чайников». Наиболее полным описанием данного веб-сервера будет следующая фраза, сказанная одним из пользователей: «Денвер выполняет основные задачи и ладно, а чем больше примочек тем больше заморочек (никто ими на все 100 не пользуется)».

Последняя версия: 5.3.9
Русский язык: Да
Portable версия: Да
Домашняя страница: http://www.easyphp.org/


Базовый комплект:

  • PHP 5.3.9
  • PhpMyAdmin 3.4.9
  • Apache 2.2.21
  • MySQL 5.5.20

Довольно простая и ничем не примечательная сборка. Нам предлагают обычное трей-меню без излишеств, незамысловатые настройки и запутанную стартовую страницу без русского языка. Данный программный комплекс не произвел на меня какого-либо впечатления, работает и то хорошо. EasyPHP вполне подходит в качестве замены Denwer на «версию с окошками» (если не пугает стартовая страница).

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

Последняя версия: 2.0.2.0
Русский язык: Есть
Portable версия: Нет
Домашняя страница: http://eleanor-cms.ru/server


Базовый комплект:

  • Apache 2.2.19
  • PHP 5.3.6
  • MySQL: MariaDB 5.2.6
  • PhpMyAdmin 3.4.2
  • SlimFTPd 3.1.81
  • DNS Unbound 1.4.10

EleanorServ сперва показался мне тёмной лошадкой, а точнее неким специализированным сервером для одноименной Eleanor CMS. После рассмотрения оказалось что это обычный локальный веб-сервер.

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

Радость от использования этого программного комплекса длилась не долго. После создания нового домена панель управления просто исчезла. Да да, она просто испарилась и в папке./www/localhost/ я даже не нашел каких-либо файлов кроме заглушки index.php. Еще одним огорчением было невозможность открыть папку с доменами из трей-меню, мне пришлось искать куда же я установил EleanorServ…

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

6. Nimp

Последняя версия: 1.5.0
Русский язык: Есть
Portable версия: Да
Домашняя страница: http://nimpbox.ru/


Базовый комплект:

  • Apache 2.2.17
  • Nginx 0.9.3
  • MySQL 5.5.8
  • PHP 5.3.5
  • Sendmail 31
  • phpMyAdmin 3.3.9
  • Sypex Dumper 2.0.8
  • FileZilla 0.9.37 beta
  • Memcached 1.2.4

Здесь мы видим ужасную реализацию панели управления с элементами порнографии, но есть довольно интересное трей-меню. Самое странное в этой сборке - это аж целых 4! иконки в трее с абсолютно одинаковым меню. Заставить работать сервер мне удалось далеко не с первого раза. Как оказалось Nimp может работать только из корня диска, что без сомнения является ещё одним жирным минусом этого программного комплекса.

Во время использования этого сервера постоянно что-то сбоило, FileZilla никогда сам не останавливался (пришлось убивать через диспетчер задач), а Memcached вообще не запускался. Некоторое недоумение вызвали слова автора программы о том, что «данная сборка прекрасно подойдет для высоко нагруженных сайтов в корпоративных и городских сетях», программе явно далеко до использования в корпоративной среде.

«Фишка» этого локального веб-сервера в том, что Nginx работает как frontend и предназначен для раздачи статического контента, а Apache работает в качестве backend для генерации динамического контента. В целом моё впечатление от этой сборки осталось двояким, оно плавно менялось от резко негативного вначале до нормально-приемлемого в процессе работы с программой.

Последняя версия: 4.5.2
Русский язык: Есть
Portable версия: Да
Домашняя страница: http://open-server.ru/


Базовый комплект:

  • Apache 2.2.22;
  • Apache 2.4.2;
  • Nginx 1.2.0;
  • MySQL 5.1.63;
  • MySQL 5.5.24;
  • PostgreSQL 9.1.2;
  • PHP 5.2.17 (IMagick 2.2.1, Zend Optimizer 3.3.3, IonCube Loader 4.0.7, Memcache 2.2.4);
  • PHP 5.3.13 (IMagick 2.3.0, Xdebug 2.2.0, IonCube Loader 4.0.14, Memcache 2.2.6);
  • PHP 5.4.3 (Xdebug 2.2.0);
  • Perl 5.12.3.0 (расширение);
  • SlimFTPd 3.181;
  • Fake Sendmail 32;
  • NNCron Lite 1.17;
  • Memcached 1.2.6;
  • Adminer 3.3.4;
  • HeidiSQL 7.0;
  • Webgrind 1.0;
  • PHPMyAdmin 3.5.1;
  • PHPPgAdmin 5.0.4;
  • PHPMemcachedAdmin 1.2.1;

В противовес другим участникам нашего обзора Open Server имеет наиболее приятный и продуманный интерфейс, обладает мощными возможностями по настройке и администрированию компонентов. К несомненным плюсам можно отнести поддержку профилей настроек, переключение HTTP/MySQL/PHP модулей, планировщик заданий (cron), удобное управление доменами и алиасами, а для «чайников» имеется толковое руководство пользователя.

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

Последняя версия: 1.8.2
Русский язык: Нет
Portable версия: Да
Домашняя страница: http://www.server2go-web.de/


Базовый комплект:

  • Apache 2.2
  • PHP 5.3.2
  • SQLITE
  • MYSQL 5.1.46
  • PERL 5.8

От этой гадости я долго плевался и несколько минут занимался поиском и убийством дочерних процессов. Оказалось что при запуске программы Server2go локальный веб-сервер просто стартует и всё. ВСЁ - в прямом смысле этого слова, нет никакой управляющей программы, никакого монитора, сервер нельзя ни остановить, ни даже просто перезапустить. Всё что есть у этого программного комплекса - это стартовая страница, где можно посмотреть безобидную информацию на подобие вывода PHP Info.

Впечатление крайне отрицательное, хотя казалось бы: сервер стартует, PhpMyadmin открывается, а что ещё надо? Нет, сервер который нельзя остановить - это не для меня. Гори оно в аду!

Последняя версия: 8.5.4
Русский язык: Да
Portable версия: Нет
Домашняя страница: http://www.uniformserver.com/


Базовый комплект:

  • Apache 2.4.2
  • PHP 5.4.0
  • MySQL 5.5.24
  • phpMyAdmin 3.5.1

Uniformserver - это очередная поделка на коленке и сказать хоть что-либо хорошее о ней я не могу. Кривой русский перевод, огромный уродский логотип в трей-меню, само меню совершенно не продумано, а из-за кривого перевода вообще невозможно что-либо понять. Все что может эта сборка - запуститься и открыть PhpMyadmin. С помощью меню еще можно добраться до логов и файлов конфигурации. Единственной приятной неожиданностью было найти там Сron.

Последняя версия: 8.5
Русский язык: Нет
Portable версия: Да
Домашняя страница: http://www.usbwebserver.net/


Базовый комплект:

  • Apache 2.2.21
  • MySQL 5.5
  • PHP 5.3.9
  • PhpMyAdmin 3.4.9.0

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

По своей функциональности USBWebserver напоминает Denwer, разве что Perl не хватает. В панели управления можно выполнить запуск/остановку модулей, открыть логи, еще есть парочка полезных функций и настроек, на этом всё. Я бы рекомендовал эту сборку как GUI замену Denwer-а для тех, кому необходима схожая функциональность, но хочется иметь панель управления с кнопочками и рюшечками.

Последняя версия: 2.27
Русский язык: Нет
Portable версия: Нет
Домашняя страница:


Базовый комплект:

  • Apache 2.2.22
  • PHP 5.3.10
  • MySQL 5.5.20
  • SQLite 3.7.10
  • Smarty 3.1.7
  • PhpMyAdmin 3.4.9
  • Xdebug 2.1.3
  • SQLiteManager 1.2.4

Хороший и функциональный локальный веб-сервер, довольно известный, простой в освоении. Имеет удобное меню, хорошие возможности по настройке PHP и Apache. Сборка мне очень понравилась, в своё время я использовал Vertrigo довольно длительное время.

Но не всё так радужно в нашем королевстве, конечно же есть и минусы. Самый главный и существенный минус - сервер не портативен, его нельзя установить на флешку и использовать на разных машинах. Из других проблем хочу отметить трудности с созданием домена или алиаса, а так же отсутствие русского языка.

Последняя версия: 2.2d
Русский язык: Да
Portable версия: Нет
Домашняя страница: http://www.wampserver.com/

Базовый комплект:

  • Apache 2.2.21
  • Php 5.3.10
  • Mysql 5.5.20
  • XDebug 2.1.2
  • XDC 1.5
  • PhpMyadmin 3.4.10.1
  • SQLBuddy 1.3.3
  • webGrind 1.0

Как и XAMPP, эта сборка широко известна на западе. Возможно причиной тому является поддержка большого количества языков, возможность установить любую версию Apache, MySQL и PHP в качестве аддона и привлекательная домашняя страница, чего нельзя сказать о самой управляющей программе.

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

Последняя версия: 0.4.0.4
Русский язык: Есть
Portable версия: Да
Домашняя страница: http://winginx.ru/


Базовый комплект:

  • Nginx 1.2.0;
  • PHP 5.3.13;
  • PHP 5.4.3;
  • Node.js 0.6.17;
  • MySQL 5.1.62;
  • MongoDB 2.0.5;
  • memcached 1.2.6;
  • phpMyAdmin 3.5.0;
  • Adminer 3.3.3;
  • RockMongo 1.1.1;
  • phpMemcachedAdmin 1.2.1;
  • Xdebug 2.2.0.5, Zend Guard Loader 5.5, ionCube 4.0.14

Данная сборка может похвастаться наличием MongoDB и Node.js, а так же быстро набирающего популярность веб-сервера Nginx. Меня так же порадовало наличие нормального трей-меню и раздела настроек, однако в процессе работы оказалось что окно с настройками имеет 3 вкладки где всего по 1-2 опции (зачем?).

Довольно странно в Winginx выглядит работа с логами. Для их просмотра нам предлагается меню выбора файлов вида error.log, access.log и так далее, однако к какому именно модулю относятся эти логи понять невозможно: Nginx, PHP, а может Node.js?

Хоть Winginx и имеет управляющую программу, однако командование самим веб-сервером, так же как и в Denwer, осуществляется через.BAT файлы. Я сделал такой вывод по всплывающим из ниоткуда чёрным окнам во время запуска или остановки сервера.

Возможно, что кому-то (в первую очередь новичкам) будет очень полезна функция автоматической установки скриптов (PhpBB, WordPress, Joomla и т.д.) при создании домена, особенно если учитывать что скрипты сконфигурированы для работы с Nginx (переписывать правила реврайта самому довольно сложно). Однако лично я такими функциями никогда не пользуюсь и предпочитаю выполнять инсталляцию сам, поскольку никогда не знаешь что и как там устанавливается и какие сюрпризы могут поджидать тебя в будущем.

14. Xampp USB Lite

Последняя версия: 1.7.7
Русский язык: Нет
Portable версия: Да
Домашняя страница: http://www.apachefriends.org/en/xampp-windows.html


Базовый комплект:

  • Apache 2.2.21
  • MySQL 5.5.16
  • PHP 5.3.8
  • phpMyAdmin 3.4.5

XAMPP - это очень популярный за рубежом локальный веб-сервер. Думаю популярность обусловлена тем, что эта сборка довольно надёжна и имеет версии под все основные операционные системы: Windows, Linux, Mac OS X и даже Solaris.

Старт и остановка модулей происходят достаточно быстро, страница приветствия не запутана и понятна, хоть и на английском. В целом довольно хороший программный комплекс (с кучей плюшек в desktop версии) в котором нет ничего лишнего или отталкивающего. Чёрные окна из-за угла не атакуют, панель управления вполне обычная, однако малополезная.

Из минусов этого программного комплекса я могу отметить как раз эту панель управления, а точнее отсутствие этого самого управления, в ней нет ничего кроме запуска и остановки сервера. Здесь нет удобного меню со списком сайтов, нет раздела настроек веб-сервера, отсутствуют какие-либо полезные инструменты. Настраивать рабочее окружение в этой сборке вам придется вручную.

Сравнение

Portable Русский язык Наличие GUI Полезный GUI Просмотр логов
AMPPS - + + - +
- - - - -
+ + - - -
+ + + + +
- + + + +
Nimp + + + + -
+ + + + +
+ - - - -
- + + - +
+ - + - -
- - + + +
- + + + +
+ + + + +
Xampp USB Lite + - + - -

Лучшие результаты: EasyPHP, Open Server, Winginx.

Тестирование

Тест №1 - Ложный запуск

Суть теста заключается в преднамеренной порче конфигурации Apache с целью проверить получим ли мы какое-либо предупреждение или все индикаторы будут гореть зеленым светом, а работать ничего не будет. Согласитесь, что использовать сборку, которая обманчиво сообщает об успешном запуске и выставляет вас идиотом, желания мало. Если сервер не подаёт никаких сигналов или работает скрытно, то тест так же будет считаться проваленным.

Тест №2 - Сложные пути

Суть теста заключается в преднамеренной установке сервера в папку со сложным именем, в нашем тесте мы будем использовать папку с именем «C:testMys$ka!._-()zlo{}+~%&2% Files». Если PhpMyAdmin (он взят просто для удобства, поскольку есть в каждой сборке) не откроется, то тест соответственно будет провален. Каждый человек - это индивидуальность, папки порой называют самыми неожиданными именами. Название папки, выбранное для теста, корректно для Windows и должно быть правильно обработано.

Тест №3 - SSL из коробки

Тест предельно простой - запускаем сервер и пытаемся открыть PhpMyAdmin по SSL протоколу.

Обозначения: "+" означает что тест пройден успешно, "-" означает что тест провален.

Ложный запуск Сложные пути SSL из коробки
AMPPS + + +
- + -
- + +
+ + -
+ + -
Nimp + - -
+ + +
- + -
+ - -
+ - -
+ + -
+ + -
- - -
Xampp USB Lite + - +

Лучшие результаты: AMPPS, Open Server.

Заключение

Рассмотрев и протестировав столько программных комплексов возникает вопрос - а что же в итоге выбрать для повседневной работы? Ответить на этот вопрос не так-то просто, каждая сборка будет хороша для определённого типа задач.

Для новичков я предлагаю использовать Denwer, как самый простой и проверенный временем локальный веб-сервер. Всем остальным веб-разработчикам, а так же и тем новичкам, кому недостаточно функциональности Denwer, я рекомендую использовать Open Server.

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

В случае если у кого-то возникнет необходимость использовать такие редкие модули как локальный почтовый сервер, Node.js, MongoDB и т.д., то я думаю каждый сможет подобрать себе подходящий вариант среди других участников нашего обзора.

Привет, эта статья рассматривает 5 наиболее популярных вариантов настройки сервера для веб-приложения. Какие варианты бывают и какой из них выбрать?

Существует множество факторов, которые необходимо учитывать при выборе серверного окружения (environment), такие как производительность, масштабируемость, доступность, надежность, стоимость и простота управления.

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

1. Все на одном сервере

Окружение находится на одном сервере. Для типичного веб-приложения она будет включать в себя веб-сервер, сервер приложений и сервер баз данных. Частным случаем реализации этого набора является , название которого представляет собой сокращение от Linux, Apache, MySQL и PHP, на одном сервере.

Пример использования: Хорошо подходит для быстрого развертывания приложения, так как это простейшая конфигурация из всех, однако она дает мало возможностей в плане масштабируемости и изоляции компонентов.

Плюсы:

  • Простота

Минусы:

  • Приложение и база данных используют одни и те же ресурсы сервера (CPU, память, I/O и т.д.), что, помимо потенциально низкой производительности, затрудняет определение источника (приложение или база данных) этой самой низкой производительности.
  • Затруднительно осуществлять горизонтальное масштабирование.

2. Выделенный сервер баз данных

Система управления базами данных (СУБД) может быть отделена от остального окружения, чтобы исключить конкуренцию за ресурсы сервера между приложением и базой данных и усилить безопасность, убрав базу данных из DMZ, общедоступного интернета.

Пример использования: Хорошо подходит для быстрого развертывания приложения, но при этом устраняет проблему конкуренции приложения и базы данных за одни системные ресурсы.

Плюсы:

  • Приложение и база данных не конкурируют за одни и те же ресурсы сервера (CPU, память, I/O и т.д.).
  • Вы можете вертикально масштабировать каждый компонент (приложение и базу данных) независимо друг от друга, добавляя дополнительные ресурсы к нужному серверу.
  • При определенных настройках это может повысить безопасность, убрав базу данных из DMZ.

Минусы:

  • Процесс установки чуть более сложный, чем в случае использования одного сервера.
  • Могут возникать проблемы с производительностью, если сетевое соединение между двумя серверами имеет большое время отклика (например, серверы географически удалены друг от друга) или пропускная способность недостаточна для передаваемых данных.

3. Балансировщик нагрузки (обратный прокси)

Балансировщики нагрузки могут быть добавлены в окружение сервера для увеличения производительности и надежности путем распределения нагрузки между несколькими серверами. Если один из серверов упадет, то другие серверы будут обрабатывать входящий трафик, пока упавший сервер снова не заработает. Балансировщик нагрузки так же может быть использован для обслуживания нескольких приложение через один и тот же домен и порт при помощи обратного прокси.

Примеры программного обеспечения, поддерживающего обратный прокси: HAProxy, и Varnish.

Пример использования: Полезен для окружения, которое требует масштабирования путем добавления дополнительных серверов, так же известное как горизонтальное масштабирование.

Плюсы:

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

Минусы:

  • Балансировщик нагрузки может стать узким местом в производительности, если он испытывает нехватку ресурсов или плохо настроен.
  • Может создать дополнительные сложности, требующие дополнительных усилий от администратора, например, работа с приложениями, которые требуют так называемых «липких сессий» (sticky session).

4. HTTP Accelerator (кэширующий обратный прокси)

HTTP accelerator, или кэширующий HTTP-запросы обратный прокси-сервер, может быть использован для уменьшения времени, необходимого для предоставления контента пользователю, с помощью различных методов. Основой метод, используемый с HTTP accelerator, это кэширование ответов от веб-сервера или сервера приложений в памяти, при этом последующие запросы на тот же самый контент могут быть обработаны быстро и меньшим количеством лишних взаимодействий с веб-сервером или сервером приложений.

Примеры программного обеспечения, поддерживающего HTTP acceleration: Varnish, Squid, Nginx.

Пример использования: Полезен для динамических веб-приложений с тяжелым контентом или с большим количеством файлов, к которым возможен одновременный доступ.

Плюсы:

  • Повышает производительность сайта путем снижения нагрузки на процессор веб-сервера за счет кэширования и сжатия, тем самым увеличивая количество обслуживаемый пользователей.
  • Может быть использован как балансировщик нагрузки обратного прокси.
  • Некоторое программное обеспечение для кэширования может защищать от DDOS атак.

Минусы:

  • Требуется настройка для достижения наилучшей производительности.
  • Если сам характер запросов пользователей не предполагает возможности эффективного кэширования, это может снизить производительность сервера.

5. Репликация базы данных по схеме ведущий-ведомый (Master-Slave)

Одним из способов улучшения производительности системы базы данных, к которой запросов на чтение происходит гораздо больше, чем на запись, как, например, в системах управления контентом (CMS), является использование репликации базы данных по схеме ведущий-ведомый. Такая схема предполагает наличие одного ведущего и одного и более ведомых узлов. В таком случае, все записи направляются на ведущий узел, а запросы на чтение могут быть распределены между всеми узлами.

Пример использования: Дает хорошее увеличение производительности приложения в части чтения из базы данных.

Вот пример репликации базы данных по схеме ведущий-ведомый с одним ведомым узлом:

Плюсы:

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

Минусы:

  • Приложение, работающее с базой данных, должно иметь механизм определения узлов, на которые необходимо отправлять запросы на чтение и запись.
  • Обновления ведомых узлов асинхронны, поэтому есть вероятность получить не самые свежие данные при запросе.
  • Если ведущий узел перестает работать, нельзя делать какие-либо обновления базы, пока проблема не будет устранена.
  • Не имеет встроенных резервных средств на случай выхода из строя главного узла.

Пример: комбинирование концепций

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

Вот примерная диаграмма того, как может выглядеть серверное окружение:

Давайте предположим, что балансировщик нагрузки настроен на распознавание статических запросов (таких как изображения, CSS, JavaScript и т.д.) и отправляет эти запросы к серверам кэширования, а все другие запросы — к серверам приложений.

Вот что будет происходить, когда пользователь отправит запрос на динамический контент:

  1. Пользователь запрашивает динамический контент с http://example.com/ (балансировщик нагрузки).
  2. Балансировщик нагрузки посылает запрос на сервер приложения (app-backend).

Если пользователь запрашивает статический контент:

  1. Балансировщик нагрузки проверяет кэш (cache-backend) на предмет того, закэширован ли запрашиваемый контент.
  2. Если закэширован , то запрашиваемый контент возвращается балансирощику нагрузки, переходим в шагу 7. Если не закэширован , то сервер кэширование перенаправит запрос на сервер приложения через балансировщик нагрузки.
  3. Балансировщик нагрузки перенаправит запрос на сервер приложения.
  4. Сервер приложения (app-backend) читает из базы и возвращает запрашиваемый контент обратно балансировщику нагрузки.
  5. Балансировщик нагрузки перенаправляет ответ к серверу кэширования (cache-backend).
  6. Сервер кэширования кэширует полученный контент и возвращает его балансировщику нагрузки.
  7. Балансировщик нагрузки возвращает запрашиваемый контент пользователю.

Данное окружение имеет две возможные точки отказа (балансировщик нагрузки и ведущий сервер базы данных), но обеспечивает другие преимущества в области надежности и производительности, описанные ранее в каждом из пунктов.

Теперь вы должны иметь хорошее представление о том, что именно вы будете использовать для вашего собственного приложения или приложений. Если вы работаете над улучшением своего окружения, помните, что лучше идти итерационным путем во избежание излишнего усложнения.

Согласно статистическим данным проекта W3techs, более 80% веб-приложений и сайтов работают на серверах с открытым исходным кодом. Не зря именно о «доминировании в сети» чаще всего говорят сторонники Open Source, когда заходит речь о доле Linux на рынке.

На какие проекты следует обратить внимание в первую очередь? Какие открытые серверы лучше всего подойдут для решения пользовательских задач?

Эксперт в области e-Government Робин Мульвижк на страницах сайта OpenSource.com предлагает пять наиболее популярных открытых веб-серверов.

Apache HTTP Server

В феврале 2015 года этот проект отметил своё двадцатилетие. Это самый популярный веб-сервер в мире - по данным W3techs, на нём работает 52% всех сайтов в мире.

Чаще всего платформой для Apache HTTP Server является Linux. Но приложение мультиплатформенное - сервер можно развернуть на OS X или Windows. Решение построено по модульному принципу, поэтому при необходимости его функциональность расширяется. Например, при помощи модуля mod_proxy на сервере создаётся шлюз, модуль mod_proxy_balancer сбалансирует нагрузку для всех поддерживаемых протоколов, а модуль mod_http2 отвечает за поддержку HTTP/2.

Проект сопровождается прекрасной документацией и комплексной поддержкой со стороны других пользователей. Распространяется решение на условиях Apache License v. 2.

NGINX

Разработка этого сервера началась в 2002 году российским программистом Игорем Сысоевым. Первый публичный выпуск приложения состоялся в 2004 году и по сути являлся ответом на проблему C10K - задачи по построению высокопроизводительного сервера, способного одновременно обслуживать 10 тысяч соединений.

Согласно данным W3techs, этот сервер занимает второе место по популярности в мире среди решений с открытым исходным кодом. На нём работает чуть больше 30% всех сайтов.

Чаще всего системные администраторы выбирают NGINX из-за высокой производительности и способности к масштабированию. Решение прекрасно подходит для обработки множества параллельных сеансов.

Распространяется приложение на условиях очень короткой BSD-подобной лицензии.

Apache Tomcat

Apache Tomcat - открытое приложение, разрабатываемое Apache Software Foundation и представляющее собой контейнер сервлетов, который функционирует в качестве веб-сервера, расширяя таким образом его функциональность. Написан на языке Java. Изначально права на решение принадлежали компании Sun Microsystems, которая в 1999 году безвозмездно передала их фонду.

Как правило, Apache Tomcat используется либо как обслуживающий локальные файлы самостоятельный веб-сервер, либо как сервер приложений на Apache HTTP Server. По данным W3techs, он применяется на 1% всех сайтов Интернета.

Распространяется приложение на условиях Apache License v. 2.

Node.js

Разработка Node.js началась в 2009 году Райаном Далем. В настоящее время проектом управляет Node.js Foundation при поддержке Linux Foundation. Согласно данным W3techs, рыночная доля решения составляет 0,2%.

Node.js представляет собой платформу для выполнения сетевых приложений и зачастую играет роль самостоятельного веб-сервера. Благодаря своим конструктивным особенностям он позволяет добиться высокой пропускной способности и масштабируемости веб-приложений, работающих в режиме реального времени, что весьма актуально для браузерных игр.

Распространяется приложение на условиях оригинальной лицензии.

Lighttpd

Первый выпуск этого приложения датирован мартом 2003 года. Как и NGINX, веб-сервер Lighttpd способен поддерживать 10 тыс. соединений одновременно, что стало возможно благодаря их асинхронной обработке. По данным W3techs, этот сервер обслуживает 0,1% всех сайтов.

Отличительные особенности Lighttpd - небольшая нагрузка на процессор и высокая скорость оптимизации. Заложенные в его работу принципы позволяют сделать загруженность платформы независимой от числа текущих соединений.

Распространяется решение на условиях лицензии BSD.

Как правило, у рядового пользователя такие понятия, как «веб-сервер» или «хостинг», ассоциируются с чем-то абсолютно непонятным. Между тем, ничего сложного в этом вопросе нет. Попытаемся объяснить, что собой представляет web server, зачем он нужен и как работает, особо не вдаваясь в технические подробности, а, так сказать, на пальцах. Отдельно остановимся на вопросе о том, как создать и настроить такой сервер на домашнем компьютерном терминале или ноутбуке.

Что такое веб-сервер?

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

Но это абсолютно не значит, что в домашних условиях нельзя создать собственную конфигурацию. Поскольку у нас более распространенными являются операционные системы Windows, вопросы о том, как создать веб-сервер на Ubuntu (Linux), рассматриваться не будут.

Для чего нужны web-серверы?

На серверах этого типа в интернете хранится много информации. При этом те же антивирусы для обновления собственных баз данных обращаются именно к ним. Пользователь также имеет непосредственное отношение к таким серверам, оформляя запросы в браузере (поиск информации, обращение к какой-то странице и т. д.).

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

Как это все работает?

Все пользователи привыкли, что для входа на какой-то ресурс в интернете (веб-страницу), на котором располагается информация определенного типа, в адресной строке просто вводится префикс www (или http) и последующее имя. Но никто не задумывается о том, каким образом web server понимает запрос и выдает результат.

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

Для доступа в интернет применяются программы, называемые веб-браузерами. Они переводят пользовательский запрос в цифровой код, распознаваемый веб-сервером. Сервер его обрабатывает и выдает ответ в соответствующем коде, а браузер уже преобразует миллионы нулей и единиц в нормальный вид с текстовой, графической, звуковой или видеоинформацией, которая размещается на странице.

Самые популярные web-серверы

Из всего серверного программного обеспечения, как считается, самыми распространенными являются Apache и Microsoft IIS. Первый является более популярным и в большей степени используется в UNIX-подобных системах, хотя и может устанавливаться в среду Windows. Кроме того, сервер Apache является абсолютно бесплатным программрным обеспечением и совместим практически со всеми известными операционными системами. Однако, как отмечается, предназначено это ПО в основном для профессиональных программистов и разработчиков.

Программный продукт от Microsoft рассчитан на среднестатистического пользователя, который установить и настроить такой веб-сервер для Windows сможет без дополнительной помощи квалифицированного специалиста.

Тем не менее, если исходить из официальной статистики, программное обеспечение Apache использует порядка 60% всех существующих серверов, поэтому вопрос установки и настройки начальной конфигурации рассмотрим именно на его примере.

Веб-сервер на домашнем компьютере: установка

Для инсталляции потребуется скачать специальный серверный пакет, сокращенно обозначаемый как WAMP, в который входит три основных компонента:

  • Apache - программная оболочка сервера, которая может работать самостоятельно, но только в случае отсутствия на размещаемых страницах динамического контента.
  • PHP - язык программирования, используемый надстройками для управления серверами с динамическим содержимым вроде WordPress, Joomla, Drupal.
  • MySQL - унифицированная система управления базами данных, используемая, опять же, при создании сайтов с динамическим контентом.

Инсталляцию можно произвести из пакета WampServer. Для этого достаточно следовать указаниям «Мастера», который на одной из стадий предложит выбрать интернет-браузер, который будет использоваться по умолчанию.

Для этого нужно будет перейти в папку с исполняемым файлом браузера (если это не Internet Explorer, обычно она располагается в директории Program Files). Попутно сам браузер следует добавить в список исключений брэндмауэра Windows. На финишной стадии ставится галочка напротив пункта немедленного запуска, после чего в системном трее появится соответствующий значок, на который нужно нажать и изменю выбрать запуск локального хоста (localhost).

Если все сделано правильно, появится домашняя страница сервера. Далее будет предложено инсталлировать дополнительные компоненты (если этого не сделать, система выдаст ошибку). В основном инсталляция касается дополнительных надстроек, элементов и компонентов, которые будут использоваться сервером в дальнейшем.

Пример настройки и тестирования сервера

Настройка веб-сервера несколько сложнее. Сначала в меню системного трея выбирается переход в папку WWW (место хранения надстроек или файлов HTML). После этого прописать следующий текст в «Блокноте»:

WAMP тест!

Привет!

"; ?>

Можете просто скопировать текст в «Блокнот» и сохранить файл под именем index.php в той самой папке WWW (хотя можно обойтись и без того, поскольку этот шаг применяется исключительно для проверки локального хоста). Вместо приветствия можете вставить любой другой текст или фразу.

Затем в браузере нужно обновить страницу (F5), после чего на экране отобразится содержимое. Но для других компьютеров страница будет недоступна.

Чтобы открыть доступ, нужно изменить файл httpd.conf, прописав в разделе, который начинается с следующие строки:

Order Allow,Deny

Вместо послесловия

Конечно, что касается понимания сути функционирования или настроек домашнего веб-сервера, здесь приведена только самая начальная и краткая информация, так сказать, для общего понимания. На самом же деле все процессы являются намного более сложными, особенно в части преобразования запросов и выдачи ответов, не говоря уже о настройках сервера в домашних условиях. Если у пользователя есть желание разобраться в этих вопросах, тут не обойтись хотя бы без начальных знаний той же надстройки WordPress и языка PHP. С другой стороны, для публикации примитивных страниц, содержащих в основном только текстовую информацию, можно использовать и эти начальные сведения.

|

Приложения, разработанные в Ruby, можно развернуть в общий доступ при помощи одного из множества веб-серверов. Каждый веб-сервер уникален и имеет свои преимущества, однако у всех них есть кое-что общее: они основаны на интерфейсе Rack.

Данная статья предлагает краткий обзор популярных веб-серверов для приложений Ruby, а также ознакомит вас со спецификацией Rack и связующим программным обеспечением.

Примечание : Более подробную информацию о связующем программном обеспечении можно узнать .

Интерфейс Rack

В современном мире разработки веб-приложений возможность комбинировать и подбирать соответствующие веб-серверы и другие программы и технологии крайне необходима. В действительности, это чуть ли не самый востребованный аспект любого языка программирования или фреймворка. Пожалуй, проще всего в качестве примера здесь можно привести среды разработки, тестирования и производства приложения – все они должны быть разными.

Для этого в 2007 вышел Rack, модульный интерфейс веб-серверов Ruby. Сегодня он используется многими веб-серверами и фреймворками (Espresso, Mack, Ruby on Rails, Sinatra и т.п.).

Несмотря на соглашения об именовании и различные объяснения для разных языков программирования и доменов, спецификации для взаимодействия приложений очень похожи (если не идентичны). Хотя в отличие от спецификации Python WSGI, по примеру которой созданы Rack и множество других спецификаций, Rack является ещё и промежуточным программным обеспечением.

Промежуточное программное обеспечение Rack (доступно как gem) реализует спецификацию Rack; оно делит входящие HTTP-запросы на различные этапы, затем обрабатывает их по частям, после чего посылает ответ веб-приложения (контроллера). Программа Rack состоит из двух отдельных компонентов: обработчика и адаптера, с помощью которых происходит обмен данными между веб-серверами и приложениями (фреймворками).

Обзор веб-серверов для Ruby

Теперь можно поговорить о наиболее популярных современных веб-серверах, понять их особенности и подобрать наиболее подходящее решение для своего приложения.

Примечание : Веб-серверы расположены в алфавитном порядке.

Phusion Passenger: быстрый веб-сервер и сервер приложений

Многие разработчики Ruby on Rails рекомендуют использовать для поддержки приложений именно Passenger. Это зрелый и многофункциональный сервер, который отвечает самым строгим требованиям развёртывания и позволяет упростить установку и запуск приложения. Он устраняет традиционную архитектуру на основе сервера-посредника путём прямой интеграции в веб-серверы Apache и Nginx. Поэтому в сообществе Ruby (Rails) он также часто упоминается как mod_rails и mod_rack.

Особенности Passenger

Passenger предоставляет возможность работать с несколькими приложениями, размещёнными на одном сервере.

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

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

Версия Passenger с открытым исходным кодом предоставляет мультипроцессный однопоточный режим, а коммерческая версия поддерживает однопоточный и многопоточный режимы.

Также коммерческая версия предоставляет множество «продвинутых» функций: параллелизм, многопоточность, массовое развертывание, управление ресурсами, ограничение ресурсов и др.

Примечание : Больше информации о Passenger можно найти на сайте проекта . О версии Passenger Enterprise – .

Puma: современный веб-сервер для Ruby

Puma – это высокопроизводительный веб-сервер для приложений Ruby. Он основан на веб-сервере Mongrel, который в своё время добавил несколько революционных функций и во многом повлиял на разработку приложений Ruby. Разработчик Puma (Evan Phoenix) трансформировал операционную структуру Mongrel, перейдя на Rack (и, таким образом, устраняя некоторые проблемы с производительностью), и разработал приложение для поддержки параллелизма.

Особенности Puma

Puma не требует много места и использует мало ресурсов.

Веб-сервер Puma предоставляет несколько режимов работы: он позволяет задать минимальное и максимальное количество потоков, а также поддерживает кластерный режим, в котором вы можете использовать разветвлённые процессы для одновременной обработки запросов.

Он основан на парсере Mongrel и во многом унаследовал его код.

Веб-сервер Puma разработан для Rubinius, но может работать и с JRuby

Он предоставляет простой, но довольно обширный и гибкий набор конфигураций, что позволяет легко подготовить веб-сервер как к разработке, так и к окружению.

«Из коробки» Puma не поддерживает размещения и производства нескольких приложений, но это можно сделать с помощью специального инструмента Jungle.

Thin: простой и быстрый HTTP-сервер

Thin – это очень популярный сервер приложений; его создатели утверждают, что это наиболее «безопасный, стабильный, быстрый и расширяемый веб-сервер Ruby». Thin активно развивается. Он основан на трех основных библиотеках Ruby:

  • Парсер Mongrel.
  • Сетевая библиотека EventMachine
  • Промежуточное программное обеспечение Rack

Особенности Thin

HTTP-сервер Thin предназначен для работы с любым фреймворком, который реализует спецификацию Rack. Для этого он загружает конфигурационные файлы Rack.

Будучи основанным на EventMachine,Thin может обрабатывать длинные запросы без помощи обратного прокси-сервера (в отличие от некоторых других веб-серверов).

Примечание : Чтобы узнать о Thin больше, перейдите на сайт проекта .

Unicorn: HTTP-сервер на основе Rack для быстрых клиентов и Unix

Unicorn – это зрелый полнофункциональный сервер приложений для Ruby. Позже он был адаптирован для работы с Python. Принцип работы Unicorn таков: веб-сервер выполняет не все задачи, а только те, за которые отвечает непосредственно он, остальные задачи он передаёт другим программам, которые лучше справляются с их выполнением.

Особенности Unicorn

Главный процесс Unicorn порождает рабочие процессы для обработки запросов согласно заданным параметрам. Также этот процесс отслеживает рабочие процессы, чтобы предотвратить проблемы с ресурсами. То есть, если процесс требует много времени или ресурсов, сервер остановит его Unicorn.

Как уже упоминалось выше, Unicorn использует операционную систему для балансировки нагрузки; для этого он может передавать задачи другим сервисам. Благодаря этому запросы не скапливаются.

Как и NGINX, Unicorn позволяет развертывать приложения, не сбрасывая текущих подключений клиентов. Это очень полезная функция при обновлении приложения.

Другие полезные функции Unicorn:

  • Все рабочие процессы запускаются в пределах определенного изолированного адресного пространства и обслуживают запросы по одному.
  • Хуки before_fork и after_fork позволяют бороться с ветвлением процессов.
  • Механизм копирования при записи для управления памятью позволяет экономить память.
  • Веб-сервер может прослушивать несколько интерфейсов.

Примечание : Больше о Unicorn – .

Tags: ,