- Perl и CGI программы — особенности использования
- Содержание
- Использование готовых скриптов
- Написание простейшего CGI-скрипта
- Perl и CGI программы — особенности использования
- 1. Использование готовых скриптов
- 2. Написание простейшего CGI-скрипта
- Модуль CGI.pm
- CGI на Perl. Первые шаги.
- Настройка CGI. Выполнение Perl-скриптов на Apache 2
- Выбор анализатора логов
- Установка Perl для Windows
- Настройка CGI
- Тестируем CGI
- 25 Комментариев »
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 как набор функций, в результате его выполнения будет выдана страница аналогичная странице выдаваемой в предыдущем примере.
Синтаксис функций в 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 у вас пока вряд-ли получится.
После включения этого кода в Ваши скрипты Вам остается только использовать хэш $input указывая в фигурных скобках имя параметра. Например значение $input
Использование модуля 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 Комментариев »
- Автор, молодец.
Для чистоты работы надо еще только первую часть, что касаемо 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
Проблема решается пониманием базовых принципов 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