LINUX.ORG.RU

Установка Apache+mod_perl на FreeBSD.


0

0

В свое время намучившись с устанвокой mod_perl к Apache2 на FreeBSD 6.2 и не найдя у гугла вразумительного ответа искал овтета на http://perl.apache.org, но там достаточно все зумедрено и много лишего, так что человеку выполняющему данную операцию в первый раз на голову вывалится куча бесполезнйо инфы, в которой он тту же запутается. Пишу эту тсатью людям таким же как и я, которые хоятт получить ответ на данный вопрос ПРОСТО и ПОНЯТНО. Без лишней "воды". Итак начнем. 1. Устанавливаем сам perl - его не мудрствовая лукаво, ставим из портов.

#cd /usr/ports/lang/perl5.8 #make install clean

2. Apache2 и mod_perl ставим из исходников, ибо другово вразумительного пути полд FreeBSD не знаю и заморачиваться не буду. Для начала создадим дирректорию куда сольем сорцы

#mkdir -p /work/src

Теперь тянем исходникеи сначала апача

#fetch http://apache.rinet.ru/dist/httpd/httpd-2.2.6.tar.bz2

Теперь mod_perl

#fetch http://perl.apache.org/dist/mod_perl-2.0-current.tar.gz

Далее распаковываем архивы

#tar zxvf httpd-2.2.6.tar.bz2 #tar zxvf mod_perl-2.0-current.tar.gz

Теперь переходим к конфигурации и компиляции. #cd mod_perl-2.0.3 #/usr/bin/perl Makefile.PL \ MP_USE_STATIC=1 \ MP_AP_PREFIX="/work/src/httpd-2.2.6" \ MP_AP_CONFIGURE="--with-prefix=/usr/local/apache2 --with-mpm=prefork" #make #make install

Теперь немного пояснений. Вопервых опущена команда make test - под FreeBSD 6.2 она благополучно вываливалась с ошибкой. Теперь паораметры. MP_USE_STATIC=1 - значит что собираем mod_perl статично MP_AP_PREFIX="/work/src/httpd-2.2.6" - путь до дирректории с исходниками апача (для mod_perl2 - необходим apache2 дял mod_perl1 - соответсвенно первый апач) MP_AP_CONFIGURE="--with-prefix=/usr/local/apache2 --with-mpm=prefork" - указываем параметры, которые будут переданы скрипту конфигурации сервера Apache.

3. Запуск. Для анчала сделаем так чтобы наш сервер понял что за скрипты ледат в cgi-bin. Для этого в файле https.conf (в нашем случае он тут /usr/local/apache2/conf/httpd.conf) ищем строку

ScriptAlias /cgi-bin/ "/usr/local/apache2/cgi-bin/"

и после ней вставляем следующий блок текста

PerlModule ModPerl::Registry <Location /cgi-bin/> SetHandler perl-script PerlHandler ModPerl::Registry Options ExecCGI allow from all </Location> </IfModule>

Теперь пробуем запустить Apache.

#/usr/local/apache2/bin/httpd Если вылезла ошибка что то со словами No such file or directory: Failed to enable the 'httpready' Accept Filter (на работу апача она не влияет но лучше от ней избавится - апачу не нравится что не подгружен модуль ядра accf_http) то выполняем

#kldload accf_http

Перезаупскаем Apache

#killall -9 httpd #/usr/local/apache2/bin/httpd

4. Теперь необходимо проверить работоспособность perl скриптов. #ee /usr/local/apache2/cgi-bin/test.pl

вставляем туда следующий код

#!/usr/bin/perl print "Content-type: text/plain; charset=iso-8859-1\n\n"; foreach $var (sort(keys(%ENV))) { $val = $ENV{$var}; $val =~ s|\n|\\n|g; $val =~ s|"|\\"|g; print "${var}=\"${val}\"\n"; }

Далее в броузере набираем http://host/cgi-bin/test.pl На экране должно отобразится что то вроде

Content-type: text/plain; charset=iso-8859-1

DOCUMENT_ROOT="/usr/local/apache2/htdocs" GATEWAY_INTERFACE="CGI/1.1" HTTP_ACCEPT="text/html, application/xml;q=0.9, application/xhtml+xml, image/png, image/jpeg, image/gif, image/x-xbitmap, */*;q=0.1" HTTP_ACCEPT_CHARSET="iso-8859-1, utf-8, utf-16, *;q=0.1" HTTP_ACCEPT_ENCODING="deflate, gzip, x-gzip, identity, *;q=0" HTTP_ACCEPT_LANGUAGE="ru-RU,ru;q=0.9,en;q=0.8" HTTP_CACHE_CONTROL="no-cache" HTTP_CONNECTION="Keep-Alive, TE" HTTP_HOST="utmsrv.itk" HTTP_TE="deflate, gzip, chunked, identity, trailers" HTTP_USER_AGENT="Opera/9.23 (X11; Linux i686; U; ru)" MOD_PERL="mod_perl/2.0.3" MOD_PERL_API_VERSION="2" PATH="/sbin:/bin:/usr/sbin:/usr/bin:/usr/games:/usr/local/sbin:/usr/local/bin:/ usr/X11R6/bin:/root/bin" QUERY_STRING="" REMOTE_ADDR="192.168.1.40" REMOTE_PORT="43034" REQUEST_METHOD="GET" REQUEST_URI="/cgi-bin/printenv" SCRIPT_FILENAME="/usr/local/apache2/cgi-bin/printenv" SCRIPT_NAME="/cgi-bin/printenv" SERVER_ADDR="192.168.10.42" SERVER_ADMIN="you@example.com" SERVER_NAME="utmsrv.itk" SERVER_PORT="80" SERVER_PROTOCOL="HTTP/1.1" SERVER_SIGNATURE="" SERVER_SOFTWARE="Apache/2.2.6 (Unix) mod_perl/2.0.3 Perl/v5.8.8"

Если такое видим - значит мы можем начинаеть писать на Perl свои web-приложения!


ЗЫ. Чтобы проверить установился ли нормально mod_perl делаем #/usr/local/apache2/bin/httpd -l | grep perl если видим mod_perl.c Значит все ок.

hamlo
() автор топика
Ответ на: комментарий от hamlo

ззы Для автоматической подгрузки accf_http при перезапуске системы выполняем echo apache22_http_accept_enable=YES >> /etc/rc.conf Для автозапуска апача при перезагрузки пишем shell-скрипт

#!/bin/sh /usr/local/www/apache2/bin/httpd

И помещаем его в /usr/local/etc/rc.d (называем например apache.sh незабывая делат ему chomd +x apache.sh)

hamlo
() автор топика

> Apache2 и mod_perl ставим из исходников, ибо другово вразумительного пути полд FreeBSD не знаю и заморачиваться не буду

Далпайоп. А все поставить из портов религия не позволяет?

boombick ★★★★★
()
Ответ на: комментарий от boombick

Вот выражение типичного человека - с философией - пофиг как лиш бы работало! Если тебя устраивают те настройки которые предлагаются при установки из портов - то впуть и попитного ветра в спину! Слово ВРАЗУМИТЕЛЬНОГО имелась ввиду тонкая настройка и конфигурация под себя "КАК НАДО". А вообще это нормально такие как ты наверное тока хаять умеют чужие статьи а сотворить что нить полезное - увы.

anonymous
()
Ответ на: комментарий от anonymous

Вообще-то, тонкая настройка и конфигурация делается, в основном, в httpd.conf и .htaccess после установки.

Miguel ★★★★★
()
Ответ на: комментарий от anonymous

Значит, тонкую настройку порта ниасилил, зато соплей полный кулак. Мальчег, уж насколько редко мне приходится иметь дело с фрей, и то я умею собрать приложение из коллекции портов именно с теми опциями, которые мне нужны. Ты же даже ниасилил документацию, однако прешь вперед и придумываешь какие-то космические велосипеды. А то, что ты понаписал ни в коем случае не тянет на полезность.. А тянет на success story неудачника "Посмотрите как не надо"

boombick ★★★★★
()
Ответ на: комментарий от boombick

IMHO умный бы человек промолчал бы просто. Говарить как лчше и как хуже можно бесконечно. По факту настрйоки из портов - ну могу сказать одно - у вас недостаточные знания о возможностях mod_perl. Это едисвенный вывод который я делаю по вашим словам. "Мальчик" это мне тоже понравилось выражение - видимо Вы мудрый гуру-"дядя". Ну да неважно - оставим это на ващей совести предвзятое отношение к людям. Могу сказать одно что эта статья помогла без лишенго гемора рабобраться уже в первичной установке mod_perl нескольким людям, а так же с самого начала получить представление о сруктуре работы данного модуля, что очень важно, когда человек ТОЛЬКО начинает работать с каким то ПО. Если вы к ним не относитесь - просто не надо тут валить всякий хлам и флуд. Выскажите свое мненние,когда его у вас ДЕЙСТВИТЕЛЬНО спросят.

hamlo
() автор топика
Ответ на: комментарий от phasma

Уважаемый - если вы видите что статья не для вас или она вам не нравится тут есть 2 выхода - в ответ молча берем и пишем аналогичную статью - простую и понятную и говарим НАДО ТАК, тогда это будет весомо и честно. В противном случае - если вам н-ть, просто проходим мимо, не тратя вашего драгоценного времени на всякие фразы, не несцщие в себе хоть сколь нибудь смысловой нагрузки.

hamlo
() автор топика
Ответ на: комментарий от r_asian

Зато теперь большинство новичков в этом деле получили наконец что возможность пользоваться аналогичной ссылкой. Мне пряитно, что теперь на данный запрос у гугла будет честный ответ =) http://www.google.ru/search?hl=ru&q=Apache+mod_perl+FreeBSD&btnG=%D0%...

hamlo
() автор топика
Ответ на: комментарий от hamlo

Ну да, в принципе.. Чего еще ожидать от человека с таким ником... Один из признаков непрофессионализма - неумение прислушиваться к чужому мнению. Откровенно жаль тех новичков, которые придут читать этот опус из гугла. Надеюсь, что они еще и комментарии почитают, а потом возьмут себе за труд хотя бы хендбук внимательно прочитать, чего автор статьи, видимо, так и не удосужился сделать

> Выскажите свое мненние,когда его у вас ДЕЙСТВИТЕЛЬНО спросят

А вас кто-нибудь просил писать сей бред? Нет, все сам.. Своими руками. А в ответ на критику сразу оружие к бою. Так что мальчег, заведи блог на каком-нить бесплатном ресурсе (их щас много) и испражняйся там.

boombick ★★★★★
()
Ответ на: комментарий от hamlo

1. Зачем писать еще одну, если их и так кучи ? 2. Как надо уже определились без меня, mod_* - это глобально и надежно(с), на примере пыхпыха уже доказано 3. Что бы не тратить время людей, пусть сразу переходят на fastcgi/wsgi

phasma ★☆
()
Ответ на: комментарий от phasma

С какхи это пор fastcgi==CGI (mod_perl)? Вообще 2 разные вещи!

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.