Недавно я захотел попробовать какую-нибудь альтернативу для домашнего веб-сервиса. Не то чтобы меня чем-то не устраивал "станартный" Apache - просто хотелось расширить кругозор ну и, возможно, найти альтернативу получше.
Кандидат должен был отвечать нехитрым требованиям - малое потребление ресурсов и высокая скорость работы. Так как Nginx, lighthttpd и LiteSpeed я уже в своё время трогал, и примерно знал, чего от них можно ожидать - выбор пал на испанскую разработку Cherokee.
Изначально статья планировалась как сравнение двух "индейцев" - но в процессе установки и настройки Cherokee я столкнулся с парой подводных камней. Так что эта статья - так сказать вводная. Сравнение производительности тоже будет - но чуть позже.
Итак, Cherokee. Как написано на официальном сайте - это инновационный, легко конфигурируемый веб-сервер с большим количеством фич. Давайте приступим к установке и посмотрим на него поближе. И сразу же нас ждёт первый подводный камень.
Подводный камень №1
Заключается он в выборе источника для установки. Вариантов, как обычно, 3:
- Использовать стандартные репозитории системы
- Использовать ppa
- Собирать из исходных кодов
Третий вариант я отмёл сразу - чай, не Gentoo, и решил поставить из стандартного репозитория:
1
|
sudo
apt
-
get
install
cherokee
php5
-
fpm
|
Как выяснилось позже - в стандартном репозитории Ubuntu лежит достаточно старая версия, которая толком не работает с PHP-fpm (старый баг 2010 года - конфигуратор Cherokee не может отыскать конфиг PHP-fpm в системе).
Посему - ставить нужно из PPA:
1
2
3
|
sudo
add
-
apt
-
repository
ppa
:
cherokee
-
webserver
/
ppa
sudo
apt
-
get
update
sudo
apt
-
get
install
cherokee
cherokee
-
admin
|
После установки - запускаем админку Cherokee (отдельный Python-based веб-сервис, запускать его нужно только на время конфигурирования Cherokee - постоянно работающий он не нужен) и идём по URL, который отдаст команда (по-умолчанию - /127.0.0.1:9090):
1
|
sudo
cherokee
-
admin
|
На домашнем сервере у меня крутится мой стенделон-блог на WordPress - посему нам нужно сконфигурить Cherokee для работы с PHP-fpm, и для обслуживания WordPress. В сети масса мануалов о том, как это сделать, но подробной пошаговой инструкции я не нашёл и потратил пару часов на то, чтобы привести всё в рабочее состояние.
Подводный камень №2
Behavior для обработки файлов php должен быть всегда сверху (настоящий мужик, чо). Вот так должны выглядеть настройки Behavior для WordPress:
Обратите внимание, что правила обработки директорий содержат относительные пути. То есть, в терминах Apache, если у вас DocumentRoot для VirtualHost WordPress`а показывает в /var/www/html/blog/ - полностью путь указывать не надо, работать не будет. Указывайте как на скриншоте: /wp-content, /wp-includes, /wp-admin.
Подведём итог
Для настройки Cherokee для обслуживания WordPress нужно установить сам Cherokee, PHP-fpm, и настроить веб-сервис через cherokee-admin:
Добавляем новый Source для PHP-fpm (если Cherokee не подхватил его сам), для этого вверху в меню идём в Sources, слева жмём на знак "+" и заполняем поля:
- Nick: PHP Interpreter
- Connection: 127.0.0.1:9000
- Type: Local Interpreter
- Interpreter: /usr/sbin/php5-fpm --fpm-config /etc/php5/fpm/main.conf
Пути правим в соответствии с вашим окружением.
Добавляем Virtual Server, для этого идём вверху в меню vServers, жмём на знак "+" слева и заполняем поля:
- Nick: yoursite.com (аналог ServerName в Apache)
- Document root: /absolute/path/to/files
Жмём на Add, переходим на вкладку Basics прописываем index.php в поле Directory Indexes.
Переходим на вкладку Behavior, жмём на Rule Management, добавляем правило для PHP:
- Rule type: Extensions
- Extensions: php
Вкладка Handler:
- Handler: FastCGI
- Balancer: Round Robin (при выборе пункта ниже должен подгрузится наш Source)
Точно так же добавляем правила типа Directory для wp-admin, wp-includes и wp-content, в качествеHandler выбираем List&Send.
Всё, жмём SAVE и проверяем в браузере что сайт работает.
В следующей статье я рассмотрю разницу в производительности Apache и Cherokee на основе всё того же WordPress, не переключайтесь.