В этой статье, я дам вам начальное представление о mod_perl, после
чего вы обязательно захотите работать с ним, а также покажу несколько
примеров очень популярных сайтов, которые используют mod_perl в связке
с Apache.
Что такое mod_perl?
mod_perl это сердце проекта по интеграции Apache и Perl, который
предоставляет всю мощь языка программирования Perl и веб-сервера
Apache.
Начиная с самого начала, Apache разрабатывался так, чтобы вы могли
расширять его, добавляя модули. Модули могут делать все, что вы
захотите, например, переделать HTTP запросы, ограничить доступ к
определенным страницам или выполнить поиск по базе данных. Модули
обычно пишутся на С. mod_perl это модуль, который позволяет вам делать
все эти вещи, используя Perl - тем самым, делая разработку гораздо
быстрее, чем на С. Apache наиболее популярный веб-сервер в Интернет, a
mod_perl один из самых популярных модулей для расширения его
возможностей.
Почему mod_perl столь популярен?
Если вы любите Perl и ваш любимый веб-сервер это Apache, то вы
полюбите mod_perl с первого взгляда. После того, как вы попробуете его
в действии, вы больше никогда не откажитесь от него - вы поймете, что
mod_perl это все, что вам надо. Даже если вы не найдете что-нибудь,
просто расскажите об этом. И до того, как вы успеете сосчитать до
трех, кто-нибудь уже сделает это для вас. Что, безусловно, заставит
вас захотеть сделать что-нибудь в ответ. Тем самым вы сделаете свой
вклад, и это сохранит время для огромного сообщества mod_perl для
того, чтобы они могли создать больше вещей для общего пользования.
С помощью mod_perl можно писать модули Apache полностью. Он позволит
вам легко делать такие вещи, которые сделать гораздо сложнее или даже
невозможно с помощью обычных CGI программ, например выполнение
подзапросов, написание собственных обработчиков авторизации и
логирования.
Основные достоинства mod_perl это мощь и скорость. Вы получите полный
доступ к внутренним механизмам веб-сервера и можете работать на любом
этапе обработки HTTP запросов. Это позволит вам изменить обработку
различных этапов обработки запроса; например, преобразование URI
файла, идентификация, генерация ответов сервера и логирование.
Большие преимущества mod_perl дает при запуске и во время компиляции.
Имея интерпретатор Perl, встроенный в сервер, позволяет избежать
затраты времени на запуск внешнего интерпретатора для каждого запроса,
которому необходимо выполнение Perl кода. Не менее важно кеширование
кода: модули и скрипты загружаются и компилируются только единожды,
при старте сервера. Затем, для уменьшения нагрузки сервера, скрипты
обрабатываются из кеша, а серверу остается только выполнить
подготовленный (pre-compiled) код. Во многих случаях, это происходит
также быстро как и выполнение скомпилированных программ на С.
При исполнении Perl кода происходит минимальная задержка. В частности,
в mod_perl, не требуется запуск отдельных процессов на каждый запрос,
что часто делается у других модулях веб-сервера. Наиболее
распространенный механизм расширения сервера является CGI (Common
Gateway Interface), полностью интегрированный в код Perl, который
обрабатывает фазу генерации ответа при обслуживании запроса к серверу.
В связке с mod_perl они являются основными модулями для достижения
заданной цели: Apache::Registry, который может прозрачно выполнять
существующие Perl CGI скрипты и Apache::PerlRun, который выполняет
похожую работу, но позволяет вам выполнять скрипты, которые в
некоторой степени более "грязные".
mod_perl позволит вам сконфигурировать ваш сервер Apache и обработчики
Perl (используя директиву PerlSetVar и секцию). Это делает
администрацию серверов с множеством виртуальных хостов и сложной
конфигурацией простым делом. Вы даже можете определить ваши
собственные директивы!
Насколько быстр и стабилен mod_perl?
Многие люди спросят "Насколько mod_perl повысит производительность?".
Ответим, что все зависит того, что вы собрались делать с помощью
mod_perl и возможно от того, кто об этом спрашивает. Отчеты
производителей заявляют о росте производительности от 200% до 2000%.
Лучший путь измерить это попробовать самому. (также смотрите
http://perl.apache.org/tidbits.html )
Каждую секунду каждого дня, тысячи веб-сайтов по всему миру используют
mod_perl для обработки сотни тысяч веб страниц. Apache и mod_perl одни
из самых хорошо оттестированных программ, когда либо написанных.
Конечно, они продолжаются разрабатываться и улучшаться, но вам не
обязательно использовать последние результаты разработки - на своих
сайтах вы можете пользоваться стабильными версиями продуктов и
позволить другим тестировать новые версии продуктов для вас.
Я хочу показать вам несколько наиболее загруженных и популярных
сайтов, использующих mod_perl. Тысячи слов не могут заменить реального
опыта. Посетите эти сайты и почувствуйте разницу. Они убедят вас, что
mod_perl - это вещь!
ValueClick -- http://www.valueclick.com/ серверы на 20 машинах с
более чем 70 миллионами запросов в день. Каждый ответ сервера
динамический, со всевозможными расчетами, сохранениями, логированием.
Вся программная часть написана на Perl.
Singles Heaven -- http://singlesheaven.com/ сайт-клуб с более
чем 35000 членами. Сайт использует mod_perl, DBI, Apache::DBI
(предоставляющее устойчивое соединение с БД) и MySQL. Скорость просто
огромная, чат на mod_perl - одно удовольствие. Каждая страница
генерируется с использованием около 10 SQL запросов, что позволяет
делать множество динамических проверок на каждой странице - например
проверка новых писем, отображение активных пользователей и многое
другое. Вы не почувствуете выполнение этих запросов - скорость будет
такая быстрая, как скрипт "Hello, World".
Internet Movie Database (Ltd) -- http://www.moviedatabase.com/
серверы с более чем 2 миллионами просмотрами в день. Весь поиск по
базе данных обрабатывается на Apache с помощью mod_perl. Каждый запрос
проходит несколько обработчиков mod_perl, а на выходе форматируется на
лету также с помощью mod_perl SSI для вставки рекламных баннеров и
получения различных видов сайта, в зависимости от используемого адреса
(hostname).
CMPnet -- http://www.cmpnet.com/ Технологическая информационная
сеть, обслуживающая более 600 тысяч просмотров страниц в день.
CitySearch.com -- http://www.citysearch.com/ предоставляет
онлайн-гидов по более чем 100 городам всего мира. Citysearch.com
помогает людям найти и спланировать то, что они хотят посетить, а
также подготовится к путешествию, предлагая такие услуги как: заказ
билетов, бронирование номеров и поиск ресторанов. Их трафик превышает
100 миллионов просмотров страниц в месяц.
Сколько сайтов используют Apache с установленным mod_perl?
В соответствии со статистикой Netcraft (http://netcraft.com) в
августе 2001 - 18 миллионов серверов использовали сервер Apache. Вот
график "Используемые серверы".
А что насчет mod_perl?
http://perl.apache.org/outstanding/stats/netcraft.html показывает,
что число сайтов, использующих mod_perl, составляет 4,567,088.
Несомненно, что число явно недооценено, проверялись только серверы на
следующих портах (80, 81, 8080 и некоторых других). Если сервер
работал на других портах, то он не подсчитывался, хотя владелец мог
сам добавить его в базу. Вот возрастающих график использование
mod_perl:
За последними данными обращайтесь на
http://perl.apache.org/outstanding/stats/netcraft.html
Дорога вперед
Вы вероятно в курсе насчет релиза Apache 2.0 - следующего поколения
лучшего веб-сервера. Главным достоинством нового поколения
веб-серверов будут многонитевые процессы, которые сделают сервер более
гибким. Также вам наверно мало известно о релизе Perl 5.6, главным
достоинством которого будет стабильная поддержка нитей, что было уже
реализовано в предыдущей версии Perl, но довольно невыразительно.
Вы верите в совпадения? И Perl 5.6 и Apache 2.0 были выпущены в одну и
ту же неделю в марте 2000. Выглядит очень подозрительно. Если вы
знаете больше об этом очевидном заговоре, дайте мне знать пожалуйста.
Конечно, пройдет некоторое время, перед тем как все наши приложения
смогут воспользоваться достоинствами нитей. Главная причина этого в
том, что большинство доступных модулей нестабильны при работе с
нитями. Но не стоит отчаиваться. Вы можете отключить использование
нитей для Perl-кода или для модулей, которые нестабильно работают с
нитями.
Я немедленно хочу mod_perl, Где мне его достать?
Домашняя страница mod_perl http://perl.apache.org. C этого сайта
вы сможете скачать последнюю версию mod_perl и различную документацию.
Также там вы найдете коммерческие продукты и сторонние модули;
прочитаете истории успеха; и выучите больше о mod_perl.
Также достаточно разумно подписаться на рассылку о mod_perl. Если вы
хотите знать, что происходит с mod_perl, если вы хотите знать, какие
новые возможности разрабатываются, если вы хотите влиять и
содействовать или просто помогать, то вы не должны пропустить эту
рассылку. Для подписки на эту рассылку просто отправьте пустое письмо
на адрес modperl-subscribe@apache.org.
А есть ли книги или документация о mod_perl?
Линкольн Стейн (Lincoln Stein) и Даг МакИчерн (Doug MacEachern)
написали книгу "Writing Apache Modules with Perl and C"
(http://apachedev.ru/Files/apache_c_mod_perl.rar)
Вы найдете огромный список документации mod_perl на домашней странице
mod_perl: http://perl.apache.org/ .
Я люблю mod_perl и хочу знать кто написал сей великий бесплатный продукт!
Даг МакИчерн во всем виноват. :) Это тот парень, который дал mod_perl
сообществу mod_perl. Он Линус проекта mod_perl.
Но, как вы знаете, в большом сообществе всегда есть люди, которые
любят помогать, и тут образовалось ядро разработчиков по всему миру,
кто разрабатывает mod_perl, разрабатывает модули для него, отлаживает
сервер и занимается поддержкой. Я боюсь, что список разработчиков
слишком большой, чтобы вставить его сюда. Но вы можете присоединиться
к списку рассылки и увидеть всех этих людей в действии. Я обещаю вам,
что вы не пожалеете о сделанном. До встречи в нем!
Завершаем.
Если вы используете mod_perl или планируете использовать его, тогда
неплохой идей будет подписка на рассылку для пользователей mod_perl.
Для этого вам необходимо послать письмо на
modperl-subscribe@apache.org
Если вы заинтересовались в помощи в разработке mod_perl 2.0, тогда
добро пожаловать к нам. Есть множество возможностей, которые еще не
реализованы, а также много еще должно быть оттестировано. Итак, есть
много работы и для профессиональных разработчиков и для начинающих. Вы
можете подписаться на рассылку разработчиков, отправив e-mail на адрес
dev-subscribe@perl.apache.org.
Если вы хорошо разбираетесь в mod_perl, то вы вероятно знаете об
огромном руководстве пользователя mod_perl. Оно является весьма
полезным для многих пользователей (http://perl.apache.org/guide/).
Для проверки обновлений документации - посещаете сайт
http://perl.apache.org/ и подпишитесь на рассылку о документации,
отправив письмо на docs-dev-subscribe@perl.apache.org .