Cgi perl для windows

Perl и CGI программы — особенности использования

Содержание

Использование готовых скриптов

Если у вас уже есть написанные CGI-скрипты, то прежде чем скопировать их на сервер, вы должны сделать следующие действия:

  • Убедиться, что в скриптах указан правильный путь к интерпретатору:

Perl: /usr/bin/perl
Python: /usr/local/bin/python

  • Если вашему скрипту требуется доступ к базе данных MySQL, то необходимо указать параметры доступа (см. статью Подключение к серверу MySQL)
  • В разделе Управление веб-серверомпанели управления хостингом включить модуль CGI.

Теперь вы можете скопировать свои скрипты на сервер.

Загружать файлы необходимо в каталог ваш_домен/cgi. Файлы из данного каталога будут доступны по адресу http://ваш_домен/cgi-bin/имя_файла. Для того чтобы CGI-скрипты запускались из корневого каталога сайта ваш_домен/docs, необходимо создать в нем файл .htaccess со следующим содержимым:

AddHandler cgi-script .cgi .pl .py
Options +ExecCGI

На скрипты необходимо установить права доступа 755 или -rwxr-xr-x.
Права доступа можно изменить с помощью файлового менеджера панели управления.

Написание простейшего CGI-скрипта

Рассмотрим написание простого CGI скрипта на Perl.
Если вы работаете под управлением ОС «Windows», то для работы с кодом скриптов вам необходимо использовать специализированный текстовый редактор, например, Notepad++. Стандартную для Windows программу «Блокнот» лучше не использовать. Для демонстрации работы CGI скрипта необходимо создать два файла. Первый файл представляет собой html-документ с формой ввода текста:

Perl и CGI программы — особенности использования

1. Использование готовых скриптов

Если у вас уже есть написанные CGI-скрипты, то прежде чем скопировать их на сервер, вы должны сделать следующие действия:

  • Убедиться, что в скриптах указан правильный путь к интерпретатору:

Perl: /usr/bin/perl
Python : /usr/local/bin/python

  • Если вашему скрипту требуется доступ к базе данных MySQL , то необходимо указать параметры доступа (см. статью Подключение к серверу MySQL)
  • В разделе Управление веб-серверомпанели управления хостингом включить модуль CGI.

Теперь вы можете скопировать свои скрипты на сервер.
Загружать файлы необходимо в каталог ваш_домен/cgi. Файлы из данного каталога будут доступны по адресу http://ваш_домен/cgi-bin/имя_файла. Для того чтобы CGI-скрипты запускались из корневого каталога сайта ваш_домен/docs, необходимо создать в нем файл .htaccess со следующим содержимым:

На скрипты необходимо установить права доступа 755 или -rwxr-xr-x.
Права доступа можно изменить с помощью файлового менеджера панели управления.

2. Написание простейшего CGI-скрипта

Рассмотрим написание простого CGI скрипта на Perl.
Если вы работаете под управлением ОС «Windows», то для работы с кодом скриптов вам необходимо использовать специализированный текстовый редактор, например, Notepad++. Стандартную для Windows программу «Блокнот» лучше не использовать. Для демонстрации работы CGI скрипта необходимо создать два файла. Первый файл представляет собой html-документ с формой ввода текста:

HTML PUBLIC «-//W3C//DTD HTML 4.0//EN»>

Пример работы с Perl

Модуль CGI.pm

Модуль CGI предназначен для упрощения создания HTML документов скриптом написанным на Perl’е. Модуль CGI подключается к вашему скрипту на perl, так же, как и другие модули:

Есть два способа использования модуля CGI: это объектно-ориентированный стиль и как набор функций. при использовании объектно-ориентированного стиля, вы создаете один или несколько объектов, а потом используете их методы для формирования HTML-страницы. Вот пример использования объектно-ориентированного стиля:

Использовать CGI как набор функций, еще проще, в этом случае, вам не нужно создавать новый объект, вы просто используете функции CGI. Следующий пример демонстрирует использование CGI как набор функций, в результате его выполнения будет выдана страница аналогичная странице выдаваемой в предыдущем примере.

Читайте также:  Windows disk burn software

Синтаксис функций в CGI таков:

name — это имя функции, которое как правило совпадает с именем интересующего тэга. О тэгах, имена которых не совпадают с именами соответствующих функций, речь пойдет дальше.

atr и atr2 — это имена атрибутов данного тэга.

value и value2 — это значения тэгов.

text — это текст находящийся между открывающим и закрывающим тэгами.

Любой из указанных параметров может опускаться. Рассмотрим все изложенное на примерах.

Некоторые функции в CGI используются парами, подобно закрывающим и открывающим тэгам в HTML, например:

Вы наверное уже успели заметить, что названия функций аналогичны названиям тэгов HTML. В этом и заключается простота в освоении CGI, достаточно знать HTML, чтобы через 30 мин. свободно использовать CGI. Вот список функций, имена которых не совпадают с именами тэгов:

Сильной стороной CGI является использование параметров, передаваемых скрипту. Функция param() взращает значение любого из параметров.

CGI на Perl. Первые шаги.

Автор не будет себя утруждать вводным курсом PERL. Для этого в Сети огромное количество материала. Здесь делается акцент на особенности программирования скриптов на PERL.

На данный момент PERL является одним из самых лучших языков CGI-программирования для Web-серверов на базе Unix. Для других платформ этот язык тоже годится.

Любой CGI-скрипт должен формировать заголовок ответа. Как это делается на PERL? Очень просто

Такой заголовок мы формируем, если наш скрипт будет выводить данные в формате HTML.
Если наш скрипт при своем выполнении будет совершать какиелибо действия, но требуется не вывод а переадресацию на какую-нибудь страницу или сайт, то пишем

Скрипт сделает свое дело и перенаправит пользователя на адрес указанный после Location.

Теперь несколько замечаний по размещению скриптов на сервере.
Обычно скрипты размещаются в директории cgi-bin . Хотя это не всегда так. Ваш скрипт должен иметь права на запуск в системе (это о Unix). Делается это командой chmod +x script.cgi .

А теперь можно и начинать писать скрипт, и начать следует с приветствия миру.

Итак, простейший скрипт:

Первая строка указывает путь к интерпертатору PERL в системе (здесь указан путь, где обычно находится PERL в системе Unix.
Вторая строка выводит заголовок.
А вот третья строка передает браузеру данные, которые браузер обрабатывает соответственно типу, переданному в заголовке.

— ХА. — скажет многоуважаемый посетитель — А не проще ли просто набрать HTML файл без всяких там скриптов?

Проще! Но если Вам необходимо чтобы страница была динамической, зависимой от действий пользователя то увы :)))) скрипт писать придется.
Для этого необходимо обработать параметры приходящие от пользователя.

Параметры в CGI-скрипт передаются с помощью переменных окружения.

Для исследования переменных окружения напишем небольшой скрипт

При запуске этот скрипт выдаст Вам значения переменных окружения.
Можете набрать этот скрипт и поэкспериментировать с запросами.

Наверное самым главным в CGI скрипте является обработка полученного запроса и выполнение действий в соответствии с этим запросом. Конечно, если Вы используете простенькие запросы типа http://kudato.tuda/cgi-bin/script.cgi?zapros то особого анализа не требуется, здесь просто нужно считать переменную QUERY_STRING и уже потом в зависимости от содержания строки совершать какието действия.

Но если запрос будет выглядить так http://kudato.tuda/cgi-bin/script.cgi?par1=1&par2=val&par3=6 или Вы собираетесь обрабатывать данные из форм методом POST , то просто необходимо анализировать данные и преобразовывать их в «удобоваримый» формат.
Предлагаемый автором способ преназначен исключительно для демонстрации работы с переменными окружения. В реальной жизни следует использовать более удобный и надёжный модуль CGI.pm, входящий в стандартную поставку любого дистрибутива Perl, который к тому же обладает многими другими полезными в CGI-программировании функциями. И уж ни в коем случае не следует изобретать велосипед, пытаясь написать свой обработчик запроса, т.к. (раз вы читаете эту статью) написать лучше, чем написан CGI.pm у вас пока вряд-ли получится.

Читайте также:  Windows 10 нет флажка

После включения этого кода в Ваши скрипты Вам остается только использовать хэш $input указывая в фигурных скобках имя параметра. Например значение $input будет равно «1», $input будет равно «val» итд.

Использование модуля CGI, как уже ранее говорилось предпочтительнее, удобнее и безопаснее.

Доступ к параметрам запроса обеспечивает функция param . Без параметров эта функция возвращает массив значений, содержащих имена ключей параметра. Для получения значения по ключу, в param нужно передать имя ключа в качестве аргумента.

Следующий пример выводит полученный запрос в формате Ключ: Значение

Теперь, если вы запустите этот небольшой скрипт (предварительно назвав его params.cgi ) таким образом http://some-server.com/cgi-bin/params.cgi?a=1&b=2 , то получите следующее

Получается, что вы передали в скрипт строку запроса a=1&b=2 , скрипт ее обработал и выдал выше показанный результат.

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

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

  • Webalizer — http://www.mrunix.net/webalizer/
  • Visitors — http://www.hping.org/visitors/
  • AWStats — http://awstats.sourceforge.net/
  • Pathalizer — http://pathalizer.sourceforge.net/

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

Настройка CGI

Тестируем CGI

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Читайте также:  Системный администратор серверов linux

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Оцените статью