Установка и настройка ультраскоростного вебсервера Cherokee
Итак, дамы и господа, как Вы уже поняли из названия сегодня я попробую рассказать вам занимательную историю о том как бледнолицый TrueUser покорял гордых индейцев.
Предыстория статьи такова, что мне в силу обстоятельств потребовалось изобразить что то вроде очень шустрого веб приложения. Допустим (думаю актуально) что мне пришлось устанавливать на сервер ломанную Сутру (тут мы бросим камушек в огород ее автора, заверив его в том, что делиться ей я ни с кем не собираюсь).
Как известно сей коммерческий продукт требует чтобы скрипты его обрабатывались как CGI сценарии (хотя если быть до конца честными - часть из них по сути скриптами то и не является, а состоит в ряду реактивного откомпилированного софта). Итак что нам нужно:
1. Скоростной вебсервер кушающий минимум ресурсов процессора и оперативной памяти
2. Обработчик CGI
Я не буду ничего говорить об опостылевших уже Apache и Apache2, так как о них сказано уже немало и без меня. Тем более что ни первая ни вторая версия толком не удовлетворяют нашему первому требованию по крайней мере скомпилированные в режиме работы prefork MPM.
Что же, обратим свой взор к творению Нашего соотечественника - nginx webserver. Да штучка та еще скажу я вам. Действительно быстро, действительно стабильно и экономно. НО! И тут не обошлось без ложки дегтя. К сожалению текущая доступная версия НЕ умеет грамотно работать с CGI! Да, многие любители поковыряться где не надо начнут с пеной у рта доказывать мне что nginx может проксировать работу дополнительного perl скрипта-адаптера для CGI сценариев аналогично тому как работает c PHPFastCGI. Однако, к сожалению тут вся производительность скриптов сойдет на нет, да и геморроя не оберешься, а все что сложно к пониманию большинства - не является практичным.
Есть конечно и Litehttpd, и вроде поговаривают о том что он неплох, однако как то раз бездельничая и читая очередной номер журнала Хакер я наткнулся на упоминание об быстром и производительном Чероки! К черту Лайт, давайте ломать индейца, тем более по заверениям его авторов он уделывает всех своих конкурентов не только по быстродействию но и по дружелюбности интерфейса. Так как по природе я лентяй - я очень ценю простоту и нативность интерфейсов администрирования всякого разного софта.
Что же.. начнем с рекламы
Сразу скажу, что ставил я его на Debian Lenny ну наверное потому что я лентяй
Установку можно производить двумя способами в моем случае:
1. Из пакетов
2. Из сорцев
Я честно говоря пробовал оба способа, но ручная сборка меня порадовала большей стабильностью (к чему бы это интересно :blink: ).
Итак, в наших руках заветная консоль с правами рута! Начнем!
Код:
wget http://www.cherokee-project.com/cherokee-latest-tarball -O -| tar zxvf -
cd cherokee-0.99.48
./configure --localstatedir=/var \
--prefix=/usr \
--sysconfdir=/etc \
--with-wwwroot=/var/www \
--enable-nls=no
make
make install
Хочу отметить опцию сборки --enable-nls=no. Она отключает нативную поддержку языков, так как скорее всего у вас не окажется необходимых для ее работы библиотек в голой системе (но в большинстве случаев она нам нафиг не нужна).
Заводим шарманку!
Код:
cherokee-admin -ub
Дополниельные опции запуска дают нам возможность:
1. Отключить проверку дурацкого пароля при входе в админку
2. Биндить админку на внешний интерфейс (чтоб можно было зайти с удаленного компа)
Вуаля! Теперь можем че нить накрутить
Далее выкладываем волшебные скрипты в нужную папочку :crazy: . Теперь нам необходимо привязать к ней новый виртуальный сервер. Все делается буквально парой кликов мышью!
1. Тычим на кнопке vServers в меню наверху
2. Жамкаем плюсик и вводим доменное имя нового виртуального хоста и путь к папке с волшебными скриптами.
3. В закладке Basic не забываем указать в качестве Directory Indexes классические index.html
4. Переходим на вкладку Behavior. И тыкаем Rule Managment.
Наверное тут стоит сделать небольшое лирическое отступление, чтобы человек хотя бы немного понял ЧТО он делает
Во первых мы создали виртуальный хост, которому в качестве имени назначили имя домена (которое конечно же уже привязано к нашему айпишнику). В принципе на вкладке Host Match можно прикрутить дополнительные домены, вплоть до того что можно задать имена доменов которые будут привязаны к виртуальному хосту в виде регулярного выражения (Апачи нервно курят в углу). Во вторых мы сейчас будем настраивать правила, по которым будет происходить обработка (to serve) http запросов пользователей. Правила представлены в виде стека (слева их видно) Чем выше правило - тем раньше оно будет применено к запросу. По умолчанию в самом низу (или оно вообще единственное) находится правило default которому назначено в качестве Handler тупо делать List & Send. Это самая простая операция, которую может производить вебсервер - просматривать папки и выдавать содержимое файлов пользователю используя http протокол обмена.
Теперь создадим новое правило для работы с CGI сценариями.
5. Тыкаем плюсик, выбираем Manual->Rule Type = Extensions. Указываем в качестве расширения cgi. На вкладке Handler указываем в качестве обработчика CGI
Теперь при получении запроса сервер будет сначала проверять расширение запрашиваемого файла и если оно будет равно .cgi - вместо отображения содержимого файла запустит его в системе и вернет в браузер уже результаты его работы. Таким образом Сутра завелась!
Но не будем спешить. Так как файлами .htaccess теперь можно благополучно подтереть сами знаете что, нам необходимо настроить авторизацию в папку /admin для этого создадим... да да, новое правило :P
6. Повторяем процедуру 5, но указываем Manual->Rule Type = Directory. А в качестве пути собственно /admin
7. Открываем вкладку Security
Тут мы можем выбрать тип аутентификации и способ хранения паролей. Я предпочитаю таки Validation Mechanism = Fixed List, что позволяет мне админить пароли и логины непосредственно безо всяких дополнительных утилит типа passwd.
Теперь один интересный момент. В стеке правил слева на каждом из них есть специальный флажок, указывающий серверу на тот факт, стоит ли тому продолжать двигаться вниз по стеку или окончить обработку на данном правиле. По умолчанию для каждого нового правил это флажок устанавливается в FINAL, что приводит к плачевным результатам - CGI перестает работать в защищенной паролем папке. Чтобы этого избежать - нам необходимо указать правилу аутентификации что оно является NON FINAL, кликнув по флажку.
8. Теперь все готово! Жмем Кнопу SAVE в верхнем правом углу и стартуем сервер на главной странице админки кнопкой Run Server, если он не был запущен до этого или делаем Gracefull Restart (nginx нервно курит в углу :fuck: ) в выскакивающем окошке.
Теперь можно насладиться работой быстрой ТДС на быстром сервере :punk:.
Специально для любителей повтыкать на графики расскажу еще одну фичу. Сам сервер умеет вести логи своей производительности (количество трафика, запросов, подключений и пр.) и отображать их в виде красивых и полезных кому то графиков. ЧТобы все это заработало необходимо:
1. Ставим RRDTool
Код:
apt-get install rrdtool
2. Настраиваем в пункте меню General на закладке Network пункт Information Collector->raphs Type->RRDtool graphs
3. Собственно втыкаем графики в меню Status
На этом замечательном моменте позвольте откланяться, выражаю благодарность Разработчикам такого замечательного продукта, как The Fastest free Web Server Cherokee, и желаю им всех благ. А дорогим читателям - Load Average < 1
Удачи!