Реклама ООО Таймвэб
Реклама ООО Таймвэб
Реклама ООО Таймвэб

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

1 комментарий

Разработчики сайтов и администраторы нередко сталкиваются со скриптами CGI (микросценариями обработки текстовых данных). Они применяются при создании интерактивных страниц, содержание которых зависит от действий пользователя. Например, это могут быть формы регистрации или отправки комментариев. Также есть «невидимая» область применения – сбор и обработка информации о посетителях при помощи файлов cookies.

Что такое CGI и PERL

Важно понимать, что CGI – не язык программирования, а протокол передачи данных веб-серверу через stdin и их прием из stdout. В качестве обработчика команд используется любая программа с поддержкой функций потокового ввода-вывода. Например, написанная на языке Perl. Главное, что от скрипта требуется «умение» заполнять таблицы в базе данных и получать данные из них путем подачи запроса, чего никогда не сделать средствами HTML.

CGI и PERL

Особенности применения языка Perl:

  1. Подходит для парсинга текстовых данных в справочных системах.
  2. Он удобен при обработке массивов непонятных данных в БД веб-ресурсов.
  3. Требуется вывод информации на экран, в файл или график на сайте.

В качестве альтернативы Perl все чаще применяется язык программирования Python, но администраторы «старой закалки» продолжают придерживаться классики создания CGI-скриптов, так как поддержка Perl «по умолчанию» имеется в большинстве дистрибутивов Linux. Поэтому программы на нем начинают работать без предварительной подготовки сервера. Формально же скрипты можно писать на чем угодно – хоть на C/C++, Pascal, Java или Visual Basic.

Комьюнити теперь в Телеграм
Подпишитесь и будьте в курсе последних IT-новостей
Подписаться

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

Если CGI-скрипт уже готов (используется стандартный модуль), перед использованием его нужно скопировать на сервер хостинга. Выполняется процедура при помощи файлового менеджера в панели управления или через FTP-доступ, например программой FileZilla. Выбор расположения остается на усмотрение пользователя; к программе можно обращаться независимо от имени каталога или подкаталога, но рекомендуется придерживаться определенных стандартов.

Так, внутри скриптов обязательно указывается путь к интерпретатору используемой платформы для программирования:

  1. Perl – /usr/bin/perl.
  2. Python – /usr/local/bin/python.

Если здесь допустить ошибку, программный код исполнятся не будет. То же происходит, если в ПО предусмотрено обращение к базе данных MySQL – пользователю понадобится внести в программу путь к ней, логин и пароль доступа. При изменении последнего корректировка CGI-скрипта обязательна, иначе он перестанет работать. Местоположение файлов в популярных CMS выясняется в службе технической поддержки или в служебной документации.

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

При работе в среде операционной системы Windows для написания кода понадобится специальная программа. Например, подойдет специализированный текстовый редактор Notepad++ (стандартный Блокнот для таких целей не подходит). Сам код строится вокруг переменных окружения и потоков ввода-вывода информации. По сути, CGI-скрипты являются обработчиками отдельных команд и не являются «полноценной» программой.

CGI и PERL скрипты

Более детально:

  1. Стандартный поток ввода (stdin) – скрипт получает информацию с клавиатуры, сокета, из локального (удаленного) файла или из результатов работы основной программы.
  2. Переменные окружения (Environment Variables) – переменные, требуемые при выполнении кода скрипта. Определяются пользователем или сервером.
  3. Стандартный поток вывода (stdout) – означает вывод на экран результатов вычислений или их сохранение в файл, передача в сокет, входной поток другой программы или на принтер.

Главное, избегать использования SHELL, который снижает безопасность сайта. В качестве примера простейшего CGI-скрипта приведем код для вывода текущей даты и команду HTML, при помощи которой будет происходить обращение к программе (из любой части страницы, хоть в нескольких местах одновременно).

#!/bin/sh

 echo Content-type: text/html

 echo

 echo "<h2>Today is "

 date

 echo "</h2>"

При помощи специального виджета, установленного в CMS, или путем ручного редактирования шаблона в нужный участок HTML вставляется код:

<a href="/cgi-bin/examples/today.cgi">

В приведенном примере решена типовая ошибка новичков. Она заключается в отсутствии метки о типе выводимого результата (строка Content-type: text/html). После нее располагается пустая строка для указания, что следом идет непосредственно программный код.

Просмотр установленных модулей PERL

Проверить ранее подключенные PERL-модули можно командой vim. Перед ее вводом необходимо подключиться к серверу хостинга по защищенному каналу SSH. После авторизации нужно ввести в консоли:

vim modules.pl

В результате будет создан файл с указанным названием. Следующий шаг – открыть его в текстовом редакторе и изменить содержимое на следующий код:

#!/usr/bin/perl -w

                use ExtUtils::Installed;


                $installed = ExtUtils::Installed->new();

                foreach $module ($installed->modules()){

                   printf "Module: %s\t\tVersion: %s\n", $module, $installed->version($module);

                }

Выйти из файла с сохранением и запустить его на исполнение можно командой perl ./modules.pl. Процедура по поиску подключенных CGI-скриптов востребована, еслина сайте возникают ошибки 403 или 500. Первая появляется из-за некорректной настройки прав доступа (необходимо установить на файлах скриптов доступ 755), вторая же происходит из-за сбоя транслятора Perl или из-за синтаксической/логической ошибки в самом коде. В любом случае сначала нужно убедиться в том, что скрипт подключен.

Hello World! Гайды и обзоры для девелоперов разных мастей.

Комментарии

Гамлиэль Фишкин +170
29 марта в 00:22
Да, Perl чаще всего находится по адресу /usr/bin/perl. Чаще всего, но не всегда. Выяснить путь к Perl'у можно очень легко:
    which perl

Если у пользователя на компьютере операционная система не того же семейства, что на сервере, то загружать скрипты следует в текстовом режиме. Устанавливать для этого дополнительное программное обеспечение не требуется; достаточно набрать ftp <сервер>, где вместо <сервер> указать hostname или IP-адрес сервера, затем командой cd перейти в нужный каталог на сервере, затем командой put загрузить скрипт на сервер. Лучше же использовать не FTP, а SFTP или SCP.

Загруженный скрипт нужно сделать исполняемым; например, файл script.cgi можно сделать исполняемым командой
    chmod +x script.cgi

И о редакторе скриптов. Простые изменения (в том числе прямо на сервере) я делаю в nano, а для сложного редактирования использую Geany. В Debian'е и его производных просмотреть информацию обо всех пакетах, в названиях которых упоминается Geany, можно командой
    apt-cache show $(echo $(apt list --all-versions 2>/dev/null | grep geany | cut -d/ -f1)) | less
С помощью соцсетей
У меня нет аккаунта Зарегистрироваться
С помощью соцсетей
У меня уже есть аккаунт Войти
Инструкции по восстановлению пароля высланы на Ваш адрес электронной почты.
Пожалуйста, укажите email вашего аккаунта
Ваш баланс 10 ТК
1 ТК = 1 ₽
О том, как заработать и потратить Таймкарму, читайте в этой статье
Чтобы потратить Таймкарму, зарегистрируйтесь на нашем сайте