Mod_perl -- это С модуль Apache, реализующий Perl интерпретатор + набор Perl модулей, предоставляющих следующие интересные возможности:
- 1. Кэширование откомпилированых cgi скриптов (Apache::Registry.pm)
- 2. Perl интерфейс к C API Apache
mod_perl 1.0
Mod_perl - это дополнительный модуль для веб-сервера Apache, встраивающий полнофункциональный интерпретатор языка Perl в сервер.
В случае работы с mod_perl, интерпретатор Perl подгружается и запускается только один раз, при запуске процесса Apache. Выполнение программного кода происходит намного быстрее, чем при работе через mod_cgi, т.к. нет необходимости заново запускать интерпретатор Perl для каждого скрипта.
Преимущества, которые дает использование mod_perl, в сравнении с использованием стандартного интерпретатора Perl совместно с сервером Apache и mod_cgi:
- возможность создания обработчиков Apache на языке perl;
- доступ ко всем стадиям обработки http-запросов;
- увеличение скорости выполнения скриптов за счет снижения затрат времени на регулярную загрузку интерпретатора;
- увеличение скорости выполнения скриптов и снижение нагрузки на сервер за счет использования Apache::Registry;
- наличие дополнительных модулей, которые позволяют использовать в разработках сессии, пароли и базы данных с сохранением преимуществ mod_perl;
- возможность встраивания инструкций perl в конфигурационный файл сервера;
- perl-интерфейс к API Apache;
- ментальное: повышенные требования к качеству написания скриптов и как следствие - увеличение скорости выполнения программ и повышение уровня безопасности.
Недостатки mod_perl:
- высокие требования к объему памяти.
mod_perl 2.0
Mod_perl 2.0 это mod_perl, который предназначен для работы с сервером Apache 2.0. Он учитывает те изменения, которые произошли в развитии Perl и Apache с момента появления mod_perl 1.0.
Наиболее заметные изменения - это появившаяся поддержка тредов на основе ithreads, поддержка работы с Apache::Test, значительные улучшения в обеспечении быстродействия, изменения в работе с Apache API и т.п.
Установка и настройка mod_perl 2.0 для apache 2 под directadmin
Устанавливаем mod_perl.
cd /usr/local/directadmin/customapache
./build clean
rm -f configure.*
./build update
./build update_data
./build apache
./buld php n
./build mod_perl
service httpd restart
Настраиваем mod_perl:
Вносим следующие изменения в httpd.conf:
LoadModule perl_module /usr/lib/apache/mod_perl.so
Опять рестарт апача и в логах видим подобную запись:
[notice] Apache/2.0.55-dev (Unix)
mod_ssl/2.0.55-dev OpenSSL/0.9.7e DAV/2 mod_perl/2.0.2-dev
Perl/v5.8.7 configured -- resuming normal operations
Чтобы включить registry scripts добавьте следующие строки в httpd.conf:
Alias /perl/ /home/admin/domains/сайт.ru/public_html/perl/
<Location /perl/>
SetHandler perl-script
PerlResponseHandler ModPerl::Registry
PerlOptions +ParseHeaders
Options +ExecCGI
Order allow,deny
Allow from all
</Location>
и теперь создаем файл rock.pl:
# !/usr/bin/perl
print "Content-type: text/plain\n\n";
print "mod_perl 2.0 rocks!\n";
устанавливаем соответствующие права:
% chmod a+rx /home/admin/domains/сайт.ru/public_html/perl/rock.pl
перезапускаем апач-сервер и по следующему адресу h ttp://localhost/perl/rock.pl получаем ответ:
mod_perl 2.0 rocks!
Если не работает, проверяем логи ошибок.
Модули Handler
Теперь можно убедиться, что mod_perl работает.
Напишем следующий фал Rocks.pm и поместим его в директорию /perl/MyApache2/:
#file:MyApache2/Rocks.pm
#----------------------
package MyApache2::Rocks;
use strict;
use warnings;
use Apache2::RequestRec ();
use Apache2::RequestIO ();
use Apache2::Const -compile => qw(OK);
sub handler {
my $r = shift;
$r->content_type('text/plain');
print "mod_perl 2.0 rocks!\n";
return Apache2::Const::OK;
}
1;
И также создаем файл startup.pl, который размещаем в /perl/ :
use lib qw(/home/httpd/httpd-2.0/perl);
1;
Добавьляем следующие строки в httpd.conf
<Location /rocks>
SetHandler perl-script
PerlResponseHandler MyApache2::Rocks
</Location>
PerlRequire /home/admin/domains/сайт.ru/public_html/perl/startup.pl
Далее перезапускаем сервер и обращаемся к h ttp://localhost/rocks.
В ответ должны получить:
mod_perl 2.0 Rocks!
Если это не сработало - проверяем error_log файл.
Если мы хотим, чтобы скрипты выполнялись интерпретатором mod_perl и кэшировался для директории cgi-bin нужно изменить httpd.conf следующим образом:
Закомментируем следующую строку:
#### ScriptAlias /cgi-bin/ /home/сайт.ru/cgi-bin/
Следующие строки добавим:
PerlModule Apache::Registry
<Location /cgi-bin>
SetHandler perl-script
PerlHandler Apache::Registry
Options ExecCGI
allow from all
</Location>
Перезапустим Apache и убедимся, что всё работает.
Народная ссылка для регистрации:
CentOS: mod_perl, directadminКатегории:
Поделитесь этой записью или добавьте в закладки
Другие материалы и статьи
» Партнёрская программа по конвертации русского кинотрафика: Представляю новую партнерку по конвертации кинотрафика от партнерской программы DVDDOM. Пока непонятно,...
» CentOS: Тестирование памяти: Как протестовать память в CentOS? Можно использовать утилиту memtester, т.к. memtest86+ не удастся восп...
» Партнерская сеть MixMarket: MixMarket.BIZ -- полномасштабная партнерская сеть, объединяющаяя в себе огромное количество партнерских...
» Биржа статей "Seo Link": Один из первых сервисов купли-продажи статей. Дополнительный контент и доход вебмастеру, продвижен...
Комментировать