The OpenNET Project / Index page

[ новости /+++ | форум | wiki | теги | ]

Небольшое введение в mod_perl (mod_perl apache perl)


<< Предыдущая ИНДЕКС Поиск в статьях src Установить закладку Перейти на закладку Следующая >>
Ключевые слова: mod_perl, apache, perl,  (найти похожие документы)
From: Техническая поддержка hosting.zenon.ru Date: Mon, 28 Feb 2004 14:31:37 +0000 (UTC) Subject: Небольшое введение в mod_perl Оригинал: http://www.hosting.zenon.ru/documentation/v-www/0026.html * Что такое mod_perl? * Преимущества использования mod_perl. * Как запускать cgi-скрипты с использованием mod_perl? * Как написать свой mod_perl модуль? * Некоторые полезные ссылки по mod_perl. ______________________________________________________________________ Что такое mod_perl? Mod_perl - проект интеграции Apache/Perl объединяющий всю мощь языка программирования Perl и http-серверa Apache. В результате данной интеграции появился удобный объектно-ориентированный интерфейс к средствам Apache API. Главное преимущество mod_perl - мощность и скорость. Вы получаете полный доступ ко внутренним ресурсам сервера и можете изменять его работу на любом этапе запроса -обработки. Например, модифицировать процедуры аутентификации, логинга, обработки запроса. Mod_perl включает в себя универсальный модуль(Apache::Registry), который позволяет запускать уже написанные на perl CGI-скрипты через mod_perl, что существенно ускоряет их работу за счет кэширования скомпиленного кода. Т.е. perl-скрипт компилируется один раз, полученный код кэшируется и при следующих обращениях к скрипту отпадает необходимость в его компиляции. Важно отметить тот факт, что отслеживается изменения кэшируемых скриптов, и не возникает проблемы с "закэшировавшимися" скриптами. С помощью mod_perl Вы можете сконфигурировать ваш httpd сервер и обработчики в Perl (использование PerlSetVar, и <Perl> секции). Вы можете даже определить Ваши собственные директивы конфигурации. Преимущества использования mod_perl. Несколькие пользователи используют на своих серверах perl-скрипты, которые требуют достаточно большое количество ресурсов от хостинговой машины. Как правило, это большие конференции. На наших машинах действуют ограничения на количество процессорного времени занимаемого одним процессом. В связи с данным ограничением возможна некорректная работа некоторых скриптов, которые недостаточно оптимизированы. Выйти из данной ситуации можно несколькими способами. Одним из способов является использование mod_perl. Вам даже не нужно вносить серьезных изменений в Ваши скрипты. Некоторые сложности, с которыми можно столкнуться при миграции с CGI на mod_perl описаны в разделе "Как запускать cgi-скрипты с использованием mod_perl?". Если Вы хотите получить доступ к ресурсам Apache API, то Вам необходимо писать mod_perl модуль. Более подробно данный вопрос описывается в разделе "Как написать свой mod_perl модуль?". Как запускать cgi-скрипты с использованием mod_perl? Для использования mod_perl как замены CGI, рекомендуется внести следующие изменения в конфигурацию сервера: В файл httpd.conf добавьте следующие строки: Alias /perl/ /real/path/to/perl-scripts/ <Location /perl> SetHandler perl-script PerlHandler Apache::Registry Options +ExecCGI </Location> Необходимо использовать именно директиву Alias, т.к. директива ScriptAlias c mod_perl не работает. После рестарта сервера все обращения к скриптам расположенным в директории /real/path/to/perl-scripts/ будут обрабатываться модулем Apache::Registry. Обращаться к скриптам нужно следующим образом: http://www.yourname.com/perl/script.pl Если Вы хотите, чтобы все perl-скрипты работали через mod_perl, то можно взять за основу расширения файлов. Внесите в httpd.conf следующие строки: <Files ~ "\.pl$"> SetHandler perl-script PerlHandler Apache::Registry Options ExecCGI </Files> и все файлы на Вашем сервере, имеющие расширение .pl будут обрабатываться через mod_perl как скрипты. При миграции на mod_perl необходимо учитывать, что переносимый скрипт должен соответствовать некоторым требованиям. В скрипте не должны использоваться: * директива require, так как Вы не сможете получить доступ к переменным и процедурам требуемого модуля, * директивы _DATA_ и _END_, * функция exit(). Вместо нее используется Apache::exit() Также необходимо знать, что скрипты осуществляющие любые прямые вызовы методов Apache->. Если Ваш скрипт удовлетворяет данным требованиям, то проблем с его запуском не возникнет. Как написать свой mod_perl модуль? Для начала необходимо написать, собственно сам модуль. Для примера возьмем следующий модуль (Test.pm): package Test; use CGI qw(:all); sub handler { print header, start_html('Handler1 in work'); print h2("Hello world!"),br('Test1'); print end_html; } sub another_handler { print header, start_html('Handler2 in work'); print h2("Hello world!"),br('Test2'); print end_html; } Данный модуль содержит два обработчика (хэндлера). Теперь добавим в файл конфигурации секцию <Perl>: # Начало секции <Perl> # В данной строке описываются директория, # в которой будут лежать модули unshift(@INC, '/bhome/part1/01/askweb/proff/mod/'); # Список модулей (если модулей несколько # указывать через запятую) @PerlModule = ('Test' ); # Описание хэндлеров и URI. %Location = ( # При обращении к /test1 '/test1' => { # Вызывается процедура handler из # модуля Test. 'PerlHandler' => 'Test', 'SetHandler' => 'perl-script' }, # При обращении к /test2 '/test2' => { # Вызывается процедура another_handler # из модуля Test. 'PerlHandler' => 'Test::another_handler', 'SetHandler' => 'perl-script' } ); # Завершение секции. </Perl> Необходимо знать, что если при описании URI какой-либо конкретный хэндлер не указан, а просто указан модуль, то в этом модуле будет запускаться процедура handler. Также важным момент является то, что после внесения изменений в модуль необходимо рестартовать сервер. В принципе, можно убрать эту необходимость используя специальный модуль Apache::StatINC, документацию на который можно получить, дав команду в Unix-shell: perldoc Apache::StatINC Некоторые полезные ссылки по mod_perl. Ниже приводится список полезных ссылок на сайты посвященные mod_perl. http://perl.apache.org - главный сайт разработчиков mod_perl, http://perl.apache.org/docs/index.html - документация по mod_perl

<< Предыдущая ИНДЕКС Поиск в статьях src Установить закладку Перейти на закладку Следующая >>

 Добавить комментарий
Имя:
E-Mail:
Заголовок:
Текст:




Спонсоры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2022 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру