- Подписка на печатную версию:
- Подписка на электронную версию:
- Подшивки старых номеров журнала (печатные версии)
LXF142:Cherokee
Материал из Linuxformat.
- Hardcore Linux Проверьте себя на крутом проекте для продвинутых пользователей [Категория:Учебники]
Содержание |
Cherokee: Web-сервер
- Apache – не единственный на свете web-сервер. Клаудио Танчони учит обращаться с Cherokee, подчеркнув его потрясающую скорость.
Для Интернет скорость очень важна. Контент сайтов должен загружаться быстро, чтобы не отогнать нетерпеливых пользователей, а для этого требуется Cherokee – web-сервер с высокой производительностью. На время написания статьи в серверной болтали, что он быстрее всех – и, однозначно, таких авторитетов, как Apache, Nginx и Lighttpd. Верится с трудом? Ну, мы сравнили Cherokee с его конкурентами и результаты покажем позже – они вас поразят. Cherokee также поддерживает широкий диапазон современных технологий, включая, но не ограничиваясь такими, как соединения с шифрованием TLS и SSL, FastCGI, SCGI, PHP, CGI, SSI, виртуальные хосты, аутентификация, шифрование на лету, выравнивание нагрузки, обновления в часы малой нагрузки и обратный прокси HTTP.
Такая мощь вселяет робость, но в Cherokee она укрощается дружелюбным интерфейсом под названием Cherokee Admin. Это превосходный инструмент, доступ к которому можно получить через браузер; здесь можно настроить все функции web-сервера, не вникая в синтаксис текстовых файлов конфигурации и тому подобное. Конечно, если вы любите поиграть с настройками в редакторе, типа Vi, Nano или Emacs, то и на здоровье.
Запуск Cherokee-admin
Запуск Cherokee Admin из командной строки довольно прост. Просто откройте терминал и введите от имени root команду
cherokee-admin
После запуска Cherokee Admin и перехода на localhost:9090, запустите web-сервер зеленой кнопкой Запуск Сервера. Иногда web-сервер уже запущен сам, особенно если вы использовали для установки преднастроенный пакет Cherokee. Запускаются два процесса: cherokee и cherokee-worker. Последний, как следует из названия, отвечает за соединения с сервером и очень эффективен, особенно при пиковых нагрузках.
Прежде чем идти дальше, стоит отметить, что какие бы изменения вы ни сделали через интерфейс Cherokee Admin, сохраняйте их нажатием кнопки Сохранить. Если web-сервер уже запущен, может возникнуть проблема, потому что новые настройки не будут доступны до следующего перезапуска сервера. Чтобы обойти это ограничение, Cherokee Admin предоставляет два способа перезапустить web-сервер, в виде опций Полная и Поэтапная перезагрузка. Первая довольно стандартна: вы изменяете файл настройки, затем останавливаете и перезапускаете процесс. Полная перезагрузка неудобна тем, что придется закрыть все запущенные соединения, и они будут прерваны до следующей перезагрузки. Альтернатива – Поэтапная перезагрузка, осуществляемая процессами Cherokee и Cherokee-worker совместно. Поэтапная перезагрузка сохранит старые параметры для действующих соединений, а новые будут устанавливаться уже с новыми параметрами. В результате мы избегнем простоя.
Виртуальные серверы
Как мы отметили, во вкладке VServer вы найдете свой web-сервер по умолчанию и все другие виртуальные серверы, которые вы создадите. При первом запуске там будет только один виртуальный сервер под названием «по умолчанию». Так что же такое VServer на самом деле? Это виртуальный сервер – механизм абстракции, позволяющий определить необходимый набор параметров и правил для одного или нескольких доменов. Таким образом, если кроме web-сервера по умолчанию нет никаких других, поведение web-сервера будет определяться только параметрами по умолчанию.
В ранних релизах Cherokee запускался под root по умолчанию, что создавало определенный риск. Теперь в разделе Permissions используется User Directive в сочетании с Group Directive, которые велят демону переключиться на определенного пользователя или группу как можно скорее (www-data).
Предположим, однако, что мы создали новый VServer и определили набор правил для гипотетического домена linuxformat.is.cool. В этом случае, данный VServer будет вызываться каждый раз, когда адрес совпадает с нашим именем домена. Чтобы проиллюстрировать этот процесс, давайте вместе создадим VServer linuxformat.is.cool. Во-первых, создадим следующую папку в корне документов web-сервера (обычно /var/www):
mkdir /var/www/linuxformat.is.cool
Теперь зайдем на страницу VServer Cherokee Admin и выберем сервер по умолчанию. Нажмите на кнопку Клонировать выбранный виртуальный сервер [Clone Selected Virtual Server] рядом со значком плюс и нажмите Подтвердить [Confirm]. Вернитесь на вкладку Основные [Basic] и замените имя виртуального сервера на нечто более запоминающееся для вас – мы выбрали linuxformat.is.cool. Затем измените корневой каталог документов на /var/www/linuxformat.is.cool.
Набрав http://linuxformat.is.cool в вашем браузере, вы увидите сообщение об ошибке. Чтобы этого избежать, добавьте следующую строку в файл /etc/hosts:
127.0.0.1 linuxformat.is.cool
Правило по умолчанию во вкладке Host Match [Совпадение названия] будет отлично работать, и результатом будет содержимое папки linuxformat.is.cool, которая пуста по умолчанию.
Правила Поведения
Самой деликатной и значимой частью в разделах VServer Cherokee Admin является вкладка Поведение. Таблица Правила Поведения показывает, какие правила будут применяться к определенному домену и в какой последовательности (сверху вниз). В нашем случае, поскольку мы клонировали VServer по умолчанию, мы взяли за основу пять правил, которые уже настроены.
Рассмотрим одно из этих правил, чтобы понять их работу. Например, правило Directory/about велит web-серверу делать что-нибудь, если кто-то загружает адрес http://linuxformat.is.cool/about.
Нажмите на ссылку Каталог/о для доступа к детальной информации по правилу и его настройкам. Например, перейдите на вкладку Обработчик – и вы увидите, что web-сервер использует обработчик информации о сервере, чтобы собрать контент, возвращаемый клиентам, запросившим папку .../abоut. В этом случае предустановленный обработчик предлагает три возможных варианта для выбора из выпадающего списка: Информация о сервере, Только информация о версии и Информация о сервере + Соединения. Эти названия говорят сами за себя. Чтобы поменять состав вывода, просто выберите одну из опций, не используемую в данный момент, затем сохраните, используя Поэтапную перезагрузку, затем перейдите снова по ссылке http://linuxformat.is.cool/about, чтобы увидеть изменения на странице.
Правила для соответствующего им VServer оцениваются сверху вниз. Если правило удовлетворяет условиям, или Истинно, запускается обработчик правила. Если запущенное правило помечено как Окончательное, оценка сверху-вниз сразу же прекрашается. Процесс объединения сверху-вниз чрезвычайно мощный и гибкий, он позволяет создать виртуальные серверы с высокой степенью настраиваемости. Поэкспериментируйте, добиваясь нужной вам функциональности.
Личные папки
Весь проект прекрасно документирован онлайн на http://сайте www.cherokee-project.com/doc, но если вы хотите воспользоваться преимуществом контекстной подсказки в правом верхнем углу интерфейса Cherokee Admin, рекомендуем установить Cherokee-doc. Этот пакет регулярно обновляется и может вам очень пригодиться.
Мы установили и запустили виртуальные серверы; что дальше? Наверное, вам не помешает приватная папка для авторизованных пользователей, чтобы скачивать документы повышенной секретности? Это легко осуществить, создав новое правило поверх существующих. Во-первых, создайте подпапку в домене под названием Private, затем перейдите в VServers > Поведение > Управление правилами и нажмите на кнопку Добавить Правило Поведения (кнопка со значком «плюс» в верхнем правом углу). В следующем окне выберите Папку из выпадающего списка и добавьте /private в поле web-папки. Затем потребуется перейти на вкладку Обработчик и выбрать запись List & Send из выпадающего списка. Наконец, во вкладке Безопасность выберите предпочитаемый Механизм Авторизации, заполните обязательное поле Realm и сохраните настройки.
Этот каталог можно настроить по-разному. Во-первых, как неокончательную версию и без обработчика – в этом случае соответствующее правило будет работать как фильтр, чтобы исключить неавторизованных пользователей; во-вторых, как окончательную версию с настроенным обработчиком List & Send. Мы тестировали механизм Fixed List с базовой авторизацией, добавив несколько пар пользователь/пароль в конце страницы, и все работало прекрасно. Конечно, если вам нужно шифрование пользовательского пароля для снижения рисков безопасности, основной метод авторизации, возможно, не самый лучший вариант. Не паникуйте, есть и альтернативы, включая Digest Method.
Wildcards
Теперь посмотрим, как настроить VServer сразу на два домена: linuxformat.is.cool и linuxformat.is.great. При создании первого VServer мы не касались вкладки Host Match, потому что хотели сравнивать имя виртуального сервера с его собственным доменным именем. Что произойдет, если у вас более одного домена – .com и .org, например – и вы хотели их оба привязать к одному сайту? Это довольно легко осуществить на вкладке Host Match: смените Метод на Wildcards, затем добавьте полные имена доменов при помощи кнопки Add New Wildcard… В нашем случае мы добавили и .cool, и .great и отредактировали файл /etc/hosts, вписав строку
127.0.0.1 linuxformat.is.cool linuxformat.is.great
Предыдущая модификация файла /ets/hosts – это все, что требуется, потому что это только имитация и этот файл будет выступать в качестве нашего DNS для разрешения имен доменов. Страница VServers довольно интуитивна, но если вам потребуется дополнительная помощь, зайдите на сайт http://www.cherokee-project.com/doc/config_virtual_servers.html.
Власть – ничто, если вы не можете ее контролировать, и это одна из причин, почему интерфейс Cherokee Admin включает множество Мастеров. Это помогает web-администраторам выполнять общие задачи лучше и быстрее. Сейчас мы переведем наш статический web-сервер в динамический, включив PHP с помощью мастера PHP. Отметим, что это действие не повлияет на web-сервер по умолчанию, только на наш .cool VServer. Для начала, нажмите на ссылку VServers, выберите виртуальный сервер linuxformat.is.cool и откройте вкладку Поведение. Затем нажмите на кнопку Управление правилами, и далее на кнопку «плюс» в левом верхнем углу. В разделе Языки выберите PHP, затем нажмите на кнопки Добавить и Создать. Теперь у вашего VServer есть новое правило поверх всех остальных, под названием Расширения PHP. Взглянув на вкладку Правила и Обработчик, вы увидите, что делает мастер. Каждый файл с расширением PHP на этом VServer передается обработчику FastCGI, а особый интерепретор PHP настроен автоматически на странице Источники и привязан к этому правилу внизу вкладки Обработчик.
Перейдя к странице Источники, вы увидите, что она больше не пуста – доступен наш первый и единственный источник информации. Источники могут быть различных типов, в том числе локальными и удаленными. Однотипные источники могут стать дополнением к стратегиям балансировки и отказоустойчивости.
Потоковое медиа и обратный прокси
Установить web-сервер Cherokee в качестве потокового медиа-сервера с помощью встроенного мастера plug-and-play тоже поразительно легко. Как обычно, перейдите на страницу VServers и выберите виртуальный сервер, затем перейдите на вкладку Поведение и нажмите на кнопку Управление Правилами. Нажмите на кнопку «плюс», и появится всплывающее окно. В этом новом окне перейдите к разделу Потоковый медиа-файл. Теперь нужно только добавить правило, и медиа-сервер готов.
По завершении работы мастера вы увидите новое правило, выше всех остальных: оно отвечает за обработку медиа-файлов с предустановленными расширениями, например, MP3, OGV, FLV, MOV, OGG и MP4. Конечно, список файловых расширений можно и расширить, и уменьшить. Во вкладке Поведение вы найдете несколько опций для наилучшей настройки медиа-сервера.
Представьте себе, что наш сервер с потоковым медиа стал достаточно хорошо (или печально) известен и образует внушительный трафик. Мудрый web-администратор должен задуматься, как увеличить ресурсы, чтобы улучшить производительность и создать резервную копию на случай, если основной сервер рухнет. Cherokee поможет нам и с этой непростой задачей. HTTP Reverse Proxy – это компонент Cherokee, который раcталкивает входящий сетевой трафик по серверам и представляет единый интерфейс по запросам. Это можно сделать с переписыванием заголовков пакетов или без него. В первом случае клиент даже не узнает, что действия выполняются на другом сервере из пула.
На Фазе 1, клиент отправляет запрос на обратный прокси, который воспользуется выбранной стратегией балансировки нагрузки, преобразует заголовок пакета и отправит его на один из внутренних серверов из пула. На Фазе 2 ответ от внутреннего сервера прибывает на обратный прокси, который отправляет ответ обратно запрашивающему клиенту без всяких ненужных заголовков HTTP.
Еще одна интересная функция, также использующая балансировку нагрузки – это так называемый Мост базы данных. Если ваш сайт перегружен и к базе данных подключено много соединений, создание более одной базы данных действительно будет выходом. С Cherokee можно использовать уровень абстракции базы данных – Мост базы данных – и задать ему обработку пула баз данных. Механизм моста опять-таки позволяет сбалансировать нагрузку, и может выступать также как прокси, кэшируя запросы базы данных. Он выполняет фрагментированное кодирование при постоянных соединениях базой данных между мостом и серверами баз данных, а также выдает архивированные Gzip результаты для сохранения пропускной способности. Разве не здорово?
Установив мост, вы можете выбрать один из языков JSON, PHP, Ruby и Python в качестве средства для взаимодействия со всеми вашими серверами баз данных MySQL в пуле.
Выиграть гонку
Мы осветили часть того, что Cherokee можно сделать, но что еще он предлагает? Как мы намекнули в начале этой статьи – скорость. Чтобы продемонстрировать разницу, мы решили протестировать Apache, Nginx, Lighttpd и, конечно, Cherokee, стрессовым инструментом Apache Bench. В тестах для всех web-серверов мы использовали настройки по умолчанию.
Если вы хотите посмотреть рабочие потоки на вашей машине, запустите следующую команду и попытайтесь сгенерировать трафик на web-сервере с выбранным стрессовым инструментом:
top -D1 -u www-data -H
Выше, -d устанавливает задержку, в результате чего команда top обновляется ежесекундно, а -u www-data показывает только процессы, принадлежащие www-data пользователю. Наконец, -H включает потоки.
Для моделирования применялись две машины, соединенные кабелем Ethernet. Сервер работал под процессором Pentium Dual-Core T4300 на 2,10 ГГц с 4 ГБ оперативной памяти, а клиентская машина, где тестировались web-сервера, работала под 2‑ГГц процессором Pentium M с 1 ГБ оперативной памяти. Обе станции имели интерфейс Gigabit Ethernet.
В ходе испытаний мы сделали небольшой статический файл (100 байт), чтобы предотвратить сужение пропускной способности сети и показать производительность ПО web-сервера, а не ядра. Затем мы провели следующие два сценария: в первом клиент, запрашивающий файл 100.html, не использует постоянное соединение или обмен дежурными сообщениями, а во втором этот обмен включен:
ab [-k] -n 10000 -c <concurrency_level> http://<server_IP>/100.html
Здесь опция -к включает обмен, -n 10000 генерирует 10 000 HTTP-запросов, а -C определяет, сколько запросов можно одновременно сделать целевому web-серверу. Уровень параллелизма является здесь критическим параметром. В реальности загруженный web-сервер должен работать во много худших условиях, поэтому их тестирование с многочисленными запросами в одно и то же время является хорошим упражнением.
Мы повторяли наши тесты при одинаковых условиях для всех четырех вышеупомянутых web-серверов, и Cherokee стал победителем с большим отрывом. Взгляните на графики и убедитесь в этом сами.
Эти графики отображают запросы в секунду одновременно, и Cherokee здесь, несомненно, в лидерах (без дежурного обмена).
Результаты теста с дежурным обменом показали, что web-сервер Cherokee способен обслуживать чуть ли не вдвое больше запросов, чем Apache!
Домашняя страница Cherokee Admin
Разбираем вывод Cherokee-admin
Запустите Cherokee-admin, и вы увидите два выходных раздела: Логин и Web-интерфейс.
Раздел Логин выдает вам логин с паролем и одноразовый пароль, который можно использовать для входа в интерфейс администратора. В разделе Web вы можете найти информацию о том, какая ссылка используется для доступа к Cherokee Admin. Сперва процесс хронического ввода в интерфейсе сложного пароля может показаться немного нудным, но это необходимо, если вы цените безопасность. В противном случае каждый пользователь, которому разрешено зайти на сервер, сможет легко изменить его настройки, набрав localhost:9090 в качестве адреса. Однако если вы почему-либо хотите избежать процесса авторизации, его можно исключить, добавив в команду -u. Другая опция интерфейса администратора – -b. Она дает cherokee-admin разрешение на соединение удаленных IP-адресов с web-интерфейсом и выполнение административных задач, не заходя под учетной записью на физический сервер, где запущен сherokee-admin. Но гораздо более безопасный способ разрешить удаленное администрирование – использовать туннелирование SSH командой
ssh -L 9090:localhost:9090 remote_IP
Она дает хосту remote_IP доступ к интерфейсу Cherokee Admin, используя URL http://localhost:9090.