Apachedev.ru » mod_perl за 30 минут. Часть 1

mod_perl за 30 минут. Часть 1


Введение

В предыдущей статье я представил в достаточной мере примечательные выложенные в сети отчеты компаний, активно использующих mod_perl. Возможно, вас это удивит, но вы с легкостью можете получить подобные удивительные результаты, если тоже переведете свои сервисы на использование mod_perl. В действительности, чтобы начать работать с mod_perl, вам потребуется не более 30 минут - то самое время, которое необходимо, чтобы прокомпилировать и настроить сервер на нормальной машине и запустить его.

В этой статье я продемонстрирую вам пошаговую установку и сценарии настройки, и готов поспорить, что вы сможете произвести первоначальную настройку статически прокомпилированного mod_perl без чтения каких-либо иных документов. Разумеется, позже вам захочется (и понадобится) прочесть документацию, но думаю, вы со мной согласитесь, что это исключительно круто, - запросто справляться с чем-либо, практически ничего не зная о новой технологии.
Установка mod_perl проводилась на многих широко известных платформах Unix, так что, даже если вы работаете с нестандартной системой, у вас не должно возникнуть проблем с построением первоначального сервера mod_perl.

Если вы пользователь Windows, то самым простым для вас будет использовать бинарный пакет, выложенный на http://perl.apache.org/distributions.html. Оттуда же вы можете скачать и RPM-версию для Linux, и текущую версию с CVS. Как бы там ни было, я всегда рекомендую начинать строить mod_perl с самого начала, и как вы сами скоро убедитесь, сделать это очень просто.

Устанавливать mod_perl легко

Чтож, давайте начнем процесс установки. Если вы опытный пользователь Unix, то вам не нужно пояснять значения приведенных ниже команд. Просто скопируйте и вставьте их, и ваш сервер будет установлен.
Я буду использовать значок % как приглашение shell’а.

% cd /usr/src
% lwp-download http://www.apache.org/dist/httpd/apache_1.3.20.tar.gz
	% lwp-download http://perl.apache.org/dist/mod_perl-1.26.tar.gz
% tar -zvxf apache_1.3.20.tar.gz
% tar -zvxf mod_perl-1.26.tar.gz
% cd mod_perl-1.26
% perl Makefile.PL APACHE_SRC=../apache_1.3.20/src \
    DO_HTTPD=1 USE_APACI=1 EVERYTHING=1
% make && make test && make install
% cd ../apache_1.3.20
% make install
Это все!
Что остается сделать - так это добавить несколько строк в файл настройки Apache httpd.conf, запустить сервер и наслаждаться mod_perl.
Если у вас возникли проблемы при выполнении какого-либо из приведенных выше пунктов - не отчаивайтесь, в следующем разделе по каждому пункту будут даны подробные пояснения.

Подробности установки mod_perl

Если у вас не хватает смелости попробовать использовать пункты, приведенные в предыдущем разделе, или вам просто необходимо побольше разобраться, прежде чем приступить к делу, тогда давайте углубимся в детали процесса установки. Если же вы успешно установили mod_perl, следуя краткому сценарию, данному в предыдущем разделе, тогда можете пропустить этот раздел и перейти к следующему.
Прежде чем мы приступим, хочу напомнить, что, чтобы установить файлы в защищенных областях, вы должны стать пользователем root. Если у вас нет прав доступа root’а, тогда вы можете установить файлы в вашу рабочую директорию home. Об особенностях данного метода мы поговорим в будущих статьях. Я также предполагаю, что у вас в наличии имеется уже установленные perl и gcc компиляторы или как эквивалент - компилятор для C.
Пусть все построения производятся в директории /home/stas/src. Тогда мы переходим в эту директорию.

% cd /home/stas/src
Теперь мы установим исходники последних дистрибутивов Apache и mod_perl. Если у вас уже установлен модуль LWP(также известный как libwww и выложенный на CPAN), тогда у вас должна быть утилита lwp-download, частично имитирующая ваш любимый браузер и позволяющая вам скачивать файлы из Internet’а. Вы можете использовать любой другой способ, чтобы раздобыть эти файлы. Просто убедитесь, что вы сохранили все файлы в директории /home/stas/src, поскольку так вам проще будет следовать процессу установки из приведенного выше примера. Разумеется, вы можете установить все пакеты где угодно в вашей системе.

% lwp-download http://www.apache.org/dist/httpd/apache_1.3.20.tar.gz
	% lwp-download http://perl.apache.org/dist/mod_perl-1.26.tar.gz
Посетив директории содержащие дистрибутив: http://www.apache.org/dist/httpd/ и http://perl.apache.org/dist/, вы можете убедиться, что устанавливаете самые новые стабильные версии. Как вы уже догадались, первая из указанных ссылок - главная директория с дистрибутивом Apache, а вторая - с mod_perl.
Распакуйте оба исходника. Вам необходимо распаковать сжатые файлы. В дополнение к непосредственной цели использования для упаковки и распаковки файлов, применив опцию -z с помощью утилиты GNU tar можно декомпрессовать файлы, сжатые утилитой gzip.

% tar -zvxf apache_1.3.20.tar.gz
             % tar -zvxf mod_perl-1.26.tar.gz
Если вы используете не GNU tar, а другую утилиту, то существует вероятность, что вам не удастся распаковать сжатые файлы, тогда вам придется делать это в два этапа. Сначала разверните сжатые пакеты с помощью:

% gzip -d apache_1.3.20.tar.gz
             % gzip -d mod_perl-1.26.tar.gz
Затем распакуйте их с помощью:

% tar -xvf apache_1.3.20.tar
       % tar -xvf mod_perl-1.26.tar
Если у вас нет утилиты tar или gzip, то установите их или их эквиваленты.
Теперь перейдем в исходную директорию дистрибутива mod_perl.

% cd mod_perl-1.26
Следующий шаг - создание Makefile.

% perl Makefile.PL APACHE_SRC=../apache_1.3.20/src \
    DO_HTTPD=1 USE_APACI=1 EVERYTHING=1
В mod_perl задается множество параметров. В данном сценарии мы собираемся использовать те, которые позволят вам делать с помощью mod_perl практически все. Когда вы узнаете о mod_perl побольше, вы сможете точно регулировать список параметров, передаваемых для Makefile.PL. В будущих статьях я подробно рассмотрю все имеющиеся опции.
Выполнение perl Makefile.PL ... проверит соответствие необходимым условиям и сообщит вам, какие пакеты программного обеспечения отсутствуют в вашей системе. Если у вас не установлены какие-либо пакеты Perl, то вам нужно их установить, прежде чем приступить к работе. Все они выложены на CPAN и их можно запросто скачать и установить.
Если вы выбрали установку mod_perl с помощью модуля CPAN.pm, то он установит вам все недостающие модули. Чтобы сделать это, укажите для CPAN.pm установить модули Bundle::Apache.
Этот шаг также выполняет скрипт ./configure из исходника дистрибутива Apache (абсолютно для вас незаметно), который создает файлы настройки Apache. Если вам нужно передать параметры для скрипта Apache ./configure, то передайте их как опции для perl Makefile.PL .... В будущих статьях мы поговорим обо всех имеющихся опциях.
Теперь вы должны построить httpd, который будет выполняться с помощью утилиты make.

% make
Эта команда создает файлы с расширением mod_perl, устанавливает их в исходное дерево Apache и строит выполняемый httpd (собственно web-сервер), компилируя все необходимые файлы. По завершении процесса выполнения команды make вернитесь в начальную директорию дистрибутива mod_perl.
Команда make test выполняет различные проверки mod_perl в только что построенном выполняемом httpd.

% make test
Эта команда запускает сервер на нестандартном порту (8529) и проверяет, все ли части построенного сервера работают корректно. Если что-нибудь не в порядке, то процесс вам об этом сообщит.
Команда make install завершает процесс установки mod_perl, устанавливая все файлы Perl, необходимые для запуска mod_perl и , конечно, документацию для сервера (man’ы).

% make install
Вы можете использовать последовательность следующего вида:

% make && make test && make install
Это упрощает установку, так как вам не приходится ждать завершения выполнения одной команды, прежде чем запустить следующую. Если же устанавливаете mod_perl впервые, то лучше делать все шаг за шагом.
Если же вы выбрали способ "все в одном", то вам следует знать, что если слетит команда make, то не выполнится ни make test, ни make install. А если упадет make test, то не выполнится make install.
В заключение, вернитесь в начальную директорию дистрибутива Apache, запустите команду make install чтобы создать дерево директорий Apache и установите заголовочные (*.h) файлы Apache, файлы настройки по умолчанию (*.conf), исполняемый файл httpd и еще несколько других программ.

% cd ../apache_1.3.20
  % make install
Имейте ввиду, что, как и при простой установке Apache, все файлы настройки, оставшиеся от предыдущей установки, не будут переписаны в процессе. Вам не нужно делать резервные копии рабочих файлов настройки перед новой установкой.
Когда завершится процесс выполнения команды make install, она сообщит вам, как запустить только что построенный сервер (путь к утилите apachectl, которая используется для осуществления контроля над сервером) и где установлены файлы настройки. Запомните, а лучше запишите и то и другое, поскольку эта информация вам понадобится. На моей машине есть два таких важных пути:

/usr/local/apache/bin/apachectl
/usr/local/apache/conf/httpd.conf
Итак, мы завершили построение и установку mod_perl для Apache. Следующими пунктами нужно будет настроить httpd.conf, написать небольшой тест-скрипт, запустить сервер и проверить, что тестовый скрипт работает.
Автор: Стас Бекмен (Stas Bekman)
Перевод: Захарова Инга (providerZ.ru)
Источник: www.perl.com

Опубликовано в: Модули Apache Ноябрь 7, 2006

23 Комментариев »

  1. первый нах :)
    У меня есть вопрос не по теме, помогите пожалуйста, вот я пишу модуль для apache 1.3.37 , в какой структуре лежит ответ который передаёться клиенту ? дело в том что я хочу пропарсить и все emailы удалить (анти спам)

    Комментарий от я — Ноябрь 7, 2006 @ 2:38 pm

  2. При сборке может возникнуть такая ошибка:
    htpasswd.c:101: error: conflicting types for 'getline'
    /usr/include/sys/stdio.h:31: error: previous declaration of 'getline' was here

    Решение в лоб:
    perl -pi -e 's|getline|my_getline|' src/support/*.c

    Комментарий от Денис Ибаев — Ноябрь 23, 2006 @ 12:17 pm

  3. что за ерунда? ну установлен у меня mod_perl уже, в дистрибутиве был. как пользоваться-то?
    засунул в .htaccess директивы:

    SetHandler perl-script
    PerlResponseHandler ModPerl::Registry
    PerlOptions +ParseHeaders
    Options +ExecCGI

    сразу сайт перестает работать, не может найти мои модули, а так же некоторые системные. где почитать-то, как хотя бы @INC установить, чтобы заработало?

    Комментарий от c001dead — Ноябрь 26, 2006 @ 6:28 am

  4. >> как хотя бы @INC установить
    kak-to mozhno bylo i @INC,
    no mozhno i symlink sdelat’

    Комментарий от rewl — Декабрь 5, 2006 @ 10:22 am

  5. установить @INC можно так
    unshift (@INC, /path_to_your_includes/);

    Комментарий от felicson — Май 21, 2007 @ 11:09 am

  6. СУПЕР!!! СПАСИБА!! ВСЕ вышло!!!! РЕСПЕКТ!!!!
    _______________
    wallpaper.zoda.ru

    Комментарий от skif1993 — Август 28, 2008 @ 4:02 pm

  7. perl -pi -e ’s|getline|my_getline|’ src/support/*.c помогло, спасиба

    Комментарий от Марат — Октябрь 26, 2008 @ 7:28 pm

  8. отлично, сейчас ещё вторую часть почитаю)

    Комментарий от Аркадий — Ноябрь 7, 2008 @ 10:47 pm

  9. первые 15 минут радуют своей доступностью

    Комментарий от tapok — Ноябрь 20, 2008 @ 12:20 pm

  10. Хотя и говорят, что mod_perl работает быстрее, и вообще, во всех отношениях лучше, но меня perl для CGI устраивает больше. Просто по моим тестам.

    Комментарий от Дмитрий — Ноябрь 21, 2008 @ 9:47 pm

  11. Значит вы просто не умеете готовить mod_perl.

    Комментарий от slam — Ноябрь 21, 2008 @ 9:49 pm

  12. А у меня никогда не получалось в линуксе компилировать софт :(

    Комментарий от neo2008 — Ноябрь 21, 2008 @ 9:59 pm

  13. При сборке может возникнуть такая ошибка:
    htpasswd.c:101: error: conflicting types for ‘getline’
    /usr/include/sys/stdio.h:31: error: previous declaration of ‘getline’ was here
    Решение в лоб:
    perl -pi -e ’s|getline|my_getline|’ src/support/*.c

    Комментарий от Аделина — Декабрь 9, 2008 @ 1:46 am

  14. У меня есть вопрос не по теме, помогите пожалуйста, вот я пишу модуль для apache 1.3.37 , в какой структуре лежит ответ который передаёться клиенту ? дело в том что я хочу пропарсить и все emailы удалить

    Комментарий от Валерия — Декабрь 9, 2008 @ 1:47 am

  15. Интересно, но не полезно для меня.

    Комментарий от Дмитрий — Декабрь 11, 2008 @ 12:57 am

  16. Спосиба класная тема.

    Комментарий от Roma — Декабрь 11, 2008 @ 10:01 pm

  17. что за ерунда? ну установлен у меня mod_perl уже, в дистрибутиве был. как пользоваться-то?
    засунул в .htaccess директивы:
    SetHandler perl-script
    PerlResponseHandler ModPerl::Registry
    PerlOptions +ParseHeaders
    Options +ExecCGI

    Комментарий от Яна — Декабрь 22, 2008 @ 1:27 am

  18. Кому за 30 минут, а кому пол дня мучаться :(

    Комментарий от Кандратьефф — Март 15, 2009 @ 3:57 am

  19. # Хотя и говорят, что mod_perl работает быстрее, и вообще, во всех отношениях лучше, но меня perl для CGI устраивает больше. Просто по моим тестам.

    Комментарий от Александр — Март 31, 2009 @ 7:39 am

  20. При сборке может возникнуть такая ошибка:
    htpasswd.c:101: error: conflicting types for ‘getline’
    /usr/include/sys/stdio.h:31: error: previous declaration of ‘getline’ was here
    Решение в лоб:
    perl -pi -e ’s|getline|my_getline|’ src/support/*.c

    Комментарий от Антон — Апрель 6, 2009 @ 4:50 pm

  21. Если я использую не GNU tar, а другую утилиту, смогу ли я потом распаковать сжатые файлы?

    Комментарий от Василий Радугин — Апрель 15, 2009 @ 11:23 am

  22. Установка mod_perl проводилась на многих широко известных платформах Unix, так что, даже если вы работаете с нестандартной системой, у вас не должно возникнуть проблем с построением первоначального сервера mod_perl.

    Комментарий от Инга — Апрель 16, 2009 @ 9:42 pm

  23. При сборке может возникнуть такая ошибка:
    htpasswd.c:101: error: conflicting types for ‘getline’
    /usr/include/sys/stdio.h:31: error: previous declaration of ‘getline’ was here
    Решение в лоб:
    perl -pi -e ’s|getline|my_getline|’ src/support/*.c

    Комментарий от Маргарита — Апрель 18, 2009 @ 7:47 pm

Оставить комментарий

You must be logged in to post a comment.

© apachedev.ru, 2005-2011