Издательский дом ООО "Гейм Лэнд"ЖУРНАЛ ХАКЕР #68, АВГУСТ 2004 г.

Perl по-mod’ному

Докучаев Дмитрий aka Forb

Xakep, номер #068, стр. 068-108-2


После того, как Perl проведет все необходимые тесты, пиши make install. При удачном раскладе mod_perl установится в систему. Финальным штрихом будет команда apachectl restart, которая перезагрузит сервер.

Теперь проверь наличие mod_perl. Напиши telnet 0 80 и два раза жмакай Enter. Если в ответе Апача присутствует подстрока mod_perl в строке Server, то спешу тебя поздравить – ты прошел первую стадию и можешь приступить к случке Apache и модуля :).

Поправляем httpd.conf

Следующий шаг, который тебе предстоит сделать, – модификация httpd.conf. В конфиг необходимо внести ряд параметров, которые укажут Apache, какие скрипты сервер будет запускать через дополнительный модуль.

Для удобства я добавил в основной httpd.conf всего одну строку: include "conf/mod_perl.conf", а все настройки указывал в файле mod_perl.conf (ну не люблю я мусорить в общем конфе :)). Несколько новых директив позволили подвязать мой будущий проект к быстрому mod_perl.

Конфиг Apache

Alias /perl/ /usr/local/www/htdocs/perl/

PerlModule Apache::Registry

PerlModule Apache::DBI

>Location /perl<

SetHandler perl-script

PerlHandler Apache::Registry

Options +ExecCGI

PerlSendHeader On

>/Location<

В первой секции я определил директорию с исполняемыми сценариями. Затем загрузил модули Apache::Registry и Apache::DBI. В секции Location я четко указал, что при обращении к каталогу /perl все скрипты будут обрабатываться модулем Apache::Registry. Этот сценарий нужен для обработки запускаемых скриптов и посылки хидеров на лету.

Теперь перезапускай сервер. Пожалуй, это вся настройка. Твой плацдарм готов для запуска быстрых скриптов :).

Кредитная база данных

Представь, что на твоем попечении находится крупный интернет-магазин либо порносайт. Либо простой псевдосайт. Неважно. Важно то, что проект должен быть раскрученным и часто обращаться к MySQL. Помнишь, я говорил про Apache::DBI? Этот модуль позволяет быстро и эффективно работать с БД через mod_perl. Пришло время проверить это на практике.

Наш проект будет состоять из двух файлов: list.cgi и register.cgi. Первый позволяет просматривать зарегистрированных пользователей по указанному идентификатору. Второй вносит информацию о клиенте в специальную таблицу MySQL. Последнюю мы сейчас и создадим.

Логинься к БД и создай таблицу CC в базе shop. Таблица должна иметь следующие столбцы: id (уникальный идентификатор клиента), name (имя клиента), info (адрес и дополнительная информация), cc (номер кредитки), type (тип кредитки), exp (дата истечения срока) и cvv2 (уникальный трехзначный номер карты). Если у тебя возникли трудности в работе с MySQL – смотри скриншот.

Теперь приступаем к кодингу сценария register.cgi. Perl-скрипты, которые будут обработаны mod_perl, должны подчиняться трем основным правилам:

1. В сценариях не должна присутствовать директива require().

Назад на стр. 068-108-1  Содержание  Вперед на стр. 068-108-3