Настройка CGI. Выполнение Perl-скриптов на Apache 2


Пару дней назад у меня появилась проблема - истек срок работы триальной версии анализатора лог файлов от AlterWind. Работать с ним я начал около месяца назад, когда окончательно надоел анализатор, предоставляемый моим провайдером. Выбором долго не мучался и стал пользоваться анализатором, который красовался на первой строчке выдачи Яндекса по запросу "анализатор логов" - AlterWind Log Analyzer.

Большую часть времени я работаю с операционной системой Windows XP, поэтому и анализатор искал для этой ОС.
Никаких особых требований к анализатору логов я не предъявлял, поэтому результатами работы AlterWind Log Analyzer остался полностью удовлетворен. Но после 30 дней работы программа для продолжения своего дальнейшего функционирования стала требовать покупки лицензии :( .

Я не являюсь противником платного софта (также используют термин Проприетарное ПО), но, если на рынке существуют open source продукты, которые не уступают по функциональности своим платным аналогам, тогда выбор мой остается за open source.

Выбор анализатора логов

После недолгого поиска я нашел несколько open source решений:
Бегло оценив эти продукты, я остановился на AWStats. В нем меня подкупила хорошая интеграция с Apache и возможность полного управления через браузер. Но для своей работы он требует интерпретатор Perl! Вот мы, наконец, и подошли к основной теме сегодняшней статьи :)

Установка Perl для Windows

Одним из портов Perl для Windows является порт от фирмы ActiveSate - ActivePerl. Его мы и будем использовать. Скачать дистрибутив последней версии ActivePerl можно по адресу http://www.activestate.com/Products/ActivePerl/. Процесс установки очень прост. Достаточно указать только путь установки. Также инсталлятор добавит путь к perl.exe в системную переменную PATH. Теперь вы сможете запускать Perl-скрипты, просто вводя в командной строке: perl /path_to_script/script.pl.
Но, чтобы Apache смог использовать Perl в качестве обработчика CGI скриптов, необходимо правильно сконфигурировать сервер.

Настройка CGI

Есть два способа настройки сервера на выполнение Perl-скриптов.
Первый - использовать директиву ScriptAlias. Директива ScriptAlias очень похоже на директиву Alias, она также связывает URL с некоторым каталогом файловой системы. Однако, в случае со SriptAlias, предполагается, что данный каталог содержит CGI-скрипты, которые необходимо обработать обработчиком cgi-script модуля mod_cgi. Например:
ScriptAlias /cgi-1/ "C:/www/cgi-scripts/1/"
<Directory "C:/www/cgi-scripts/1/">
Order allow,deny
Allow from all
</Directory>
Теперь все файлы из каталога /cgi-scripts/1/ будут обрабатываться как CGI-скрипты.
Второй способ используется, когда необходимо выполнять скрипты, находящиеся вне ScriptAlias каталога. Для этого необходимо явно указать обработчик cgi-script. Делается это либо с помощью директивы AddHandler, либо SetHandler. Первая связывает обработчик с расширением файла, например AddHandler cgi-script .cgi, а вторая связывает с обработчиком все файлы в текущей блочной директиве, например:
<Directory "C:/www/cgi-scripts/2/">
SetHandler cgi-script
</Directory>
Однако AddHandler и SetHandler, в отличие от ScriptAlias, не имеют полномочий на выполнение CGI-скриптов. Такие полномочия задаются с помощью аргумента ExecCGI директивы Options. Например:
Alias /cgi-2/ "C:/www/cgi-scripts/2/"
<Directory "C:/www/cgi-scripts/2/">
SetHandler cgi-script
Options +ExecCGI
Order allow,deny
Allow from all
</Directory>
Полномочия на выполнение CGI-скриптов добавлены к наследуемым опциям с помощью символа +

Тестируем CGI

Для этого создадим тестовый Perl-скрипт test.pl со следующим содержанием:
#!perl.exe
print "Content-type: text/plain\r\n\r\n";
print "Server’s environment\n";
foreach ( keys %ENV ) {
print "$_\t$ENV{$_}\n";
}
Первая строка должна указывать на путь, где находится интерпретатор Perl (в нашем случае, так как путь к Perl.exe прописан в системной переменной PATH, можно обойтись строчкой #!perl.exe), в противном случае вы получите ошибку: Invalid argument: couldn’t create child process.
Теперь копируйте этот файл в каталог C:/www/cgi-scripts/1/ или в C:/www/cgi-scripts/2/ и вводите в браузере: http://yoursite/cgi-1/test.pl или http://yoursite/cgi-2/test.pl соответственно.
В результате вы должны увидеть список серверных переменных:
Server’s environment
SCRIPT_NAME /cgi-bin/test.pl
SERVER_NAME localhost
SERVER_ADMIN your@e-mail.ru
HTTP_ACCEPT_ENCODING gzip,deflate
HTTP_CONNECTION keep-alive
Если это так, то все ок - CGI-скрипты работают. Ну, а если нет, тогда пишите мне на e-mail: info@apachedev.ru - попробую помочь.
Ну, а в следующей статье расскажу вам как установить анализатор логов - AWStats.
Автор: Сипягин Максим
Источник: ApacheDev.ru

These icons link to social bookmarking sites where readers can share and discover new web pages.
  • News2.ru
  • NewsLand.ru
  • del.icio.us
  • BobrDobr.ru
  • Ma.gnolia
  • Digg
  • Reddit
  • Technorati
  • Slashdot
  • Netscape
  • DZone
  • ThisNext
  • Furl
  • YahooMyWeb
Опубликовано в: Модули Apache Сентябрь 11, 2006

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

  1. Автор, молодец. :)
    Для чистоты работы надо еще только первую часть, что касаемо AWStats. Это чисто и красиво ляжет в следующую статью.
    Извини, что напрягаю. :)

    Комментарий от Alexey A. Ukhov — Сентябрь 12, 2006 @ 7:39 am

  2. 2Alexey. Тебе спасибо за своевременный фидбек.

    Комментарий от Администратор — Сентябрь 12, 2006 @ 10:39 am

  3. Необходимо добавить, что в настройках безопасности браузера необходимо отключить возможность открытия браузером файла на основе содержимого (в 6-ой версии IE эта настройка установлена для среднего уровня по умолчанию). Необходимо чтобы он работал с файлом на основе расширения. Иначе скрипт будет обрабатываться командным интерпертатором в отдельном окошке и выводится в виде текста html не будет.

    Комментарий от Danila — Октябрь 25, 2006 @ 9:52 pm

  4. Приветик всем! Пользуюсь ВебАлайзером (webalizer). И чем плоха программа. Нормально всё показывает. Если кому надо, пишите! Меня Zend Optim просто достал. Что-то у него с библиотекой php4 не вяжется. Не находит в dll какую - то точку входа. Если кто поборол это и как опишитесь, очень прошу! Спасибки! (Или автор данного сайта может что замутит!?)

    Комментарий от Raduga — Декабрь 26, 2006 @ 10:34 am

  5. [guote=Danila]Необходимо добавить, что в настройках безопасности браузера необходимо отключить возможность открытия браузером файла на основе содержимого (в 6-ой версии IE эта настройка установлена для среднего уровня по умолчанию). Необходимо чтобы он работал с файлом на основе расширения. Иначе скрипт будет обрабатываться командным интерпертатором в отдельном окошке и выводится в виде текста html не будет.[/quote] Данила! А посетителю такого сайта тоже надо бъяснять, что и как ему изменить в своём браузере? Право, смешно!

    Комментарий от Raduga — Декабрь 26, 2006 @ 10:37 am

  6. Я из этойстатьи так и не понял:
    1. как в виндоусе настроить локалный сервер на на выполнение Perl-скриптов.
    2. Как задать права на скрипт и на папку где будет лежать скрипт
    Тотал команер просто пишет чот не находит файла

    Комментарий от bumba — Июль 17, 2007 @ 11:30 pm

  7. А я Думаю можно ешё статью по настройке Webalizer.

    Комментарий от Dmitry — Июль 24, 2007 @ 7:09 am

  8. Набиваю в браузере http://site.com/awstats/awstats.pl -
    Firefox хочет открыть/сохранить файл awstats.pl.
    Как сделать чтобы он выполнялся на сервере ?
    AddHandler, AddType - прописано
    LoadModule perl_module - это на всякий случай, но и без него должно работать.
    Помогите. Спасибо.

    Комментарий от Sasha — Август 13, 2007 @ 6:18 pm

  9. Sasha, такая же проблема… хз как решить =((
    Подскажите плиз, кто знает))

    Комментарий от MuRADiN — Декабрь 5, 2007 @ 6:46 pm

  10. Проблема решается пониманием базовых принципов http.
    В данном случае, как и в примере автора, нужно прописывать заголовок объясняющий браузеру что вы ему подсовываете:
    print “Content-type: text/plain\r\n\r\n”; (или text/html, понятно зачем?)

    Комментарий от Max — Июль 30, 2008 @ 12:10 pm

  11. Очень классная статья респект!!!
    _______________________________
    http://www.automobileit.info/

    Комментарий от андрюха — Сентябрь 4, 2008 @ 7:30 pm

  12. всё четко и ясно. спасибо

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

  13. Необходимо добавить, что в настройках безопасности браузера необходимо отключить возможность открытия браузером файла на основе содержимого (в 6-ой версии IE эта настройка установлена для среднего уровня по умолчанию).

    Комментарий от Георгий — Декабрь 10, 2008 @ 10:28 am

  14. уважаемый, подскажи плиз, а возможно ли установить awstats на виртуальный хостинг самому для своего домена? в виде скрипта чтоли…

    Комментарий от Арни — Январь 5, 2009 @ 4:16 pm

  15. Необходимо добавить, что в настройках безопасности браузера необходимо отключить возможность открытия браузером файла на основе содержимого (в 6-ой версии IE эта настройка установлена для среднего уровня по умолчанию). Необходимо чтобы он работал с файлом на основе расширения. Иначе скрипт будет обрабатываться командным интерпертатором в отдельном окошке и выводится в виде текста html не будет.

    Комментарий от Людмила — Февраль 11, 2009 @ 9:26 pm

  16. Sasha, такая же проблема… хз как решить =((
    Подскажите плиз, кто знает)))

    Комментарий от Юрий — Февраль 27, 2009 @ 8:39 pm

  17. Спасибо, спасибо большое, хорошая информация для меня!!!
    Мини-игры
    Дети
    Юмор

    Комментарий от Мини-игры бесплатные — Март 2, 2009 @ 2:37 pm

  18. Необходимо добавить, что в настройках безопасности браузера необходимо отключить возможность открытия браузером файла на основе содержимого (в 6-ой версии IE эта настройка установлена для среднего уровня по умолчанию). Необходимо чтобы он работал с файлом на основе расширения. Иначе скрипт будет обрабатываться командным интерпертатором в отдельном окошке и выводится в виде текста html не будет.

    Комментарий от Злата — Март 2, 2009 @ 6:44 pm

  19. Приветик всем! Пользуюсь ВебАлайзером (webalizer). И чем плоха программа. Нормально всё показывает. Если кому надо, пишите! Меня Zend Optim просто достал. Что-то у него с библиотекой php4 не вяжется. Не находит в dll какую - то точку входа. Если кто поборол это и как опишитесь, очень прошу! Спасибки! (Или автор данного сайта может что замутит!?)

    Комментарий от Валерий — Март 5, 2009 @ 11:17 am

  20. Необходимо добавить, что в настройках безопасности браузера необходимо отключить возможность открытия браузером файла на основе содержимого (в 6-ой версии IE эта настройка установлена для среднего уровня по умолчанию)

    Комментарий от Юрия — Март 15, 2009 @ 12:19 am

  21. уважаемый, подскажи плиз, а возможно ли установить awstats на виртуальный хостинг самому для своего домена? в виде скрипта чтоли…

    Комментарий от Арина — Март 15, 2009 @ 9:59 pm

  22. Я из этойстатьи так и не понял:
    1. как в виндоусе настроить локалный сервер на на выполнение Perl-скриптов.
    2. Как задать права на скрипт и на папку где будет лежать скрипт
    Тотал команер просто пишет чот не находит файла

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

  23. А что необходимо сделать, чтобы Apache смог использовать Perl в качестве обработчика CGI скриптов

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

  24. Необходимо добавить, что в настройках безопасности браузера необходимо отключить возможность открытия браузером файла на основе содержимого (в 6-ой версии IE эта настройка установлена для среднего уровня по умолчанию

    Комментарий от Ярослав — Апрель 17, 2009 @ 6:29 pm

  25. А что необходимо сделать, чтобы Apache смог использовать Perl в качестве обработчика CGI скриптов?

    Комментарий от Аделина — Апрель 20, 2009 @ 11:20 am

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

You must be logged in to post a comment.

Работает на WordPress