Перейти к содержимому

Фотография

Особенности Cgi-режиссуры

- - - - -

  • Авторизуйтесь для ответа в теме

#1
daimond

Отправлено 15 ���� 2008 - 04:41

daimond

    Свояк

  • Пользователи
  • 232 сообщений
Тимур Денисов

Во время прошлой встречи мы с вами подготовились к инсталляции гостевой книги: нашли одну из популярнейших бесплатных Perl-программ, а также сервер, где будем ее устанавливать, ознакомились с техническими параметрами сервера и вооружились необходимым программным обеспечением.

Те, кто пропустил предыдущую публикацию (на нее мы будем время от времени ссылаться), смогут найти ее на сайте http://timden.hypermart.net. Там же находится и работающая гостевая книга, о которой мы ведем речь, и образцы отредактированных файлов, и архив с оригиналами — на случай, если изменится версия скрипта. Да, кстати, адрес архива с файлами гостевой книги на сайте разработчика — http://www.stud.ntnu.no/~larsell/ (размер 15 Кб) — скачивайте и приступаем...

Этапы большого пути
Настройку и установку скрипта лучше всего производить в два этапа — назовем их «первичный» и «основной». В процессе первичной настройки нам понадобится правильно установить лишь те значения, которые зависят от технических данных сервера и расположения на нем каталогов и файлов. Вот здесь-то нам и пригодится информация о сервере (эту тему мы рассматривали ранее), а именно: путь к Perl, полный путь к каталогу CGI-BIN, а также его URL (то есть ссылка). От правильности установки этих значений напрямую и в первую очередь зависит работоспособность скрипта.

А уже после того, как мы запустим его на сайте и убедимся, что он полноценно работает, можно будет перейти ко второму этапу — конфигурации параметров самой гостевой книги, таких как максимальное количество записей, язык интерфейса, формат отображения времени, шрифты сообщений и т. д. и т. п.; их достаточно много.

Выгоды поэтапной настройки очевидны: на первом этапе вы редактируете только те параметры, которые отвечают за работоспособность скрипта. Таким образом, при возникновении ошибок в работе гостевой книги (либо вообще отказе от запуска) вы гораздо быстрее обнаружите источник проблем. А по окончании первичной настройки вы получаете уже работающий скрипт, после чего конфигурация гостевой книги на втором этапе уже никак не должна влиять на ее работоспособность.

Этап первый
Создаем где-нибудь на диске компьютера папку с именем guestbook и выгружаем туда содержимое архива — пять файлов нашей гостевой книги. Один из них, guestbook.readme, как видно из его имени, содержит некую справочную информацию и не является рабочим файлом скрипта. Еще один — guestbook.data — «нулевого» размера, т. е. пустой, поэтому открываем для редактирования три остальных файла: guestbook.cgi, limit.pl и guestbook.config. Кстати, при использовании различных CGI-скриптов вы столкнетесь с тем, что файлы, входящие в их комплект, помимо традиционных CGI и PL имеют самые немыслимые расширения, на которые только способна фантазия программиста. Поэтому для удобства их открытия пользуйтесь пунктом «Отправить» контекстного меню «Проводника». Даже если там нет ссылки на текстовый редактора «Блокнот», вы легко ее можете добавить, и не только на него, но и на любую программу из вашего повседневного несессера — для этого достаточно создать ярлык на исполняемый файл в папке SendTo каталога, где установлена Windows. Кстати, попутно разрешим один вопрос, который часто задают начинающие perl-cgi-этап своей жизни веб-мастера: «Чем отличаются файлы с расширениями CGI и PL?» Ответ — абсолютно ничем. По большому счету, перечень расширений, допустимых для исполняемых cgi-файлов, определяется конфигурацией сервера — как правило, в него всегда входят и CGI и PL.

Теперь, в открытых файлах устанавливаем нужные параметры:

• В файлах guestbook.cgi и limit.pl изменяем самую первую (верхнюю) строку и приводим ее в удовлетворяющий нас вид:

#!/usr/local/bin/perl


• В файле guestbook.cgi, в блоке текста программы, начинающемся со строки 48, для переменных $script_filename, $directory_path и $scriptURL выставляем следующие значения (в кавычках):

$script_filename = 'guestbook';
$directory_path = '/home/cgi-bin/guestbook/';
$scriptURL = ' http://timden.hypermart.net/cgi-bin/guestb...tbook.cgi';


• В файле guestbook.config исправляем строку 16 (предыдущая начинается с <-guestbook.script_location->), вводим без всяких кавычек:

http://timden.hyperm...k/guestbook.cgi


Все! Теперь остается загрузить файлы на сервер и запустить скрипт. Но прежде разберемся с произведенной первичной конфигурацией.

Первое, что мы сделали, это указали верный путь к интерпретатору Perl на нашем сервере. Причем только в тех двух файлах, в которых это необходимо — их первая строка выглядела как:

#!/store/bin/perl


Узнать строку, указывающую путь к Perl, довольно просто: она всегда самая первая и начинается с двух символов — #! — которые указывают на то, что после них следует путь к интерпретатору. Как мы уже знаем, на сервере Hypermart.Net путь к Perl 5-й версии — /usr/local/bin/perl, соответственно, первая строка должна выглядеть как:

#!/usr/local/bin/perl


Будьте очень внимательны: при изменении параметров в точности повторяйте образец в тексте (имеется в виду не текст данной статьи, но текст программы), не пропуская никаких символов и не добавляя отсебятины. Особое внимание уделяйте слешам («/»), которые применяются при указании пути к файлам: пропущенный или, наоборот, лишний слеш обязательно приведет к ошибке в работе программы. Иначе говоря, СЛЕДУЙТЕ ОБРАЗЦУ!!!

Далее, мы установили значения для трех переменных в файле guestbook.cgi. В оригинале, еще до изменений, этот участок кода программы выглядел так:

$script_filename = ''; # The filename, WITHOUT ".pl" or ".cgi"
$directory_path = ''; # Full path to the dir (NOT URL!) containing the cgi
$scriptURL = ''; # The URL (http address) to the script


То есть значений не было вообще, соответственно, проверить работу скрипта-образца мы никак не могли. После знака # («диез»), который означает начало комментария, в каждой строке приведено описание параметра. Все, что следует после «диеза» до конца текущей строки, не обрабатывается интерпретатором, а значит, здесь можно писать все что угодно (лучше всего — разъяснения участков кода программы :-)). В данном случае из комментария следует, что:

• В качестве значения $script_filename нужно ввести имя текущего файла (guestbook.cgi) без расширения, т. е. 'guestbook'.

• Переменная $directory_path должна содержать полный системный путь к каталогу с файлами скрипта. Неверное определение подобного параметра — наиболее распространенная ошибка при установке CGI-скриптов. Необходимо твердо уяснить: полный путь, или FULL PATH, — это не ссылка (NOT URL!) на файл, а, говоря упрощенно, его расположение в дереве каталогов сервера. Согласно имеющимся у нас данным о сервере, полный путь к CGI-BIN директории имеет вид /home/cgi-bin/. Файлы нашей гостевой книги мы загрузим в каталог guestbook, созданный в директории cgi-bin. Таким образом, полный путь к каталогу с файлами скрипта равен /home/cgi-bin/guestbook/, что мы и указали в качестве значения переменной $directory_path.

• $scriptURL — согласно комментарию, ссылка на скрипт гостевой книги, то есть URL файла guestbook.cgi. Нам известно из информации о сервере, что ссылка на каталог CGI-BIN имеет вид http://timden.hypermart.net/cgi-bin/, значит, ссылка на скрипт — http://timden.hypermart.net/
cgi-bin/guestbook/guestbook.cgi — именно ее мы и указали.

• И последнее, что мы сделали, — указали в файле guestbook.config ссылку на скрипт (то, о тем мы только что говорили).

Итак, мы разобрались, каким должно быть то или иное значение для различных параметров. Но как определить, в каких файлах и что нужно редактировать?

Вообще-то об этом должно быть написано в README-инструкции, то есть в нашем случае — в файле guestbook.readme. У каждого CGI-скрипта свои собственные особенности установки, поэтому README-файлы имеют несомненно большее значение, чем в привычном всем процессе инсталляции программ под Windows. Поэтому никогда не стоит пренебрегать чтением инструкций.

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

За примером далеко идти не нужно — если вы ознакомитесь с содержанием файла guestbook.readme нашей гостевой книги, то обнаружите, можно сказать, вопиющую небрежность разработчика в подготовке инструкции. Конечно, там есть полезная информация: описаны значения прав доступа к файлам (CHMOD), сказано, что нужно сконфигурировать параметры в файле guestbook.config, даже есть предложение изменить, при необходимости, первую строку cgi-файла. Однако ничего не сказано о том, что редактировать нужно и файл limit.pl, для которого к тому же не указано значение CHMOD. А в файле guestbook.cgi кроме первой строки нужно сконфигурировать и три переменных, о чем в инструкции также ни слова.

Есть и другие несообразности, о которых мы упомянем в дальнейшем.

Но как бы там ни было, при установке скриптов README читать всегда нужно, и лишь если вы не нашли там всей интересующей информации, придется справляться самостоятельно. Вот несколько рекомендаций, которые вам в этом помогут:

• Всегда открывайте ВСЕ файлы из комплекта скрипта, кроме пустых;

• Просмотрите первую строку всех открытых файлов, и если она указывает путь к Perl, исправьте его при необходимости;

• просмотрите тексты всех файлов в поисках первичных параметров, ориентируясь на слова PATH, FILE, URL, LINK и их вариациям в названиях переменных, их значениях и комментариях;

• помните, что в начале файлов от двух-трех до нескольких десятков строк занимает (в комментариях после #) различная информация о разработчике, предупреждения и т. п. И уже затем начинается рабочая часть кода, в которой могут находиться искомые параметры;

• параметры, требующие вашего воздействия, не могут находиться после строки, содержащей текст типа: «Do not change anything below this line», что означает: «Ничего не изменяйте после этой строки».

Очень часто разработчики специально присваивают переменным значения-образцы, по которым вы сможете сориентироваться, например:

$path_cgi = "/path/to/your/cgi-bin/";


То есть в данном случае нужно ввести полный путь к директории CGI-BIN. Помимо помощи в обнаружении, такие примеры значений показывают вам и образец своего синтаксиса, здесь — расположения символов «/» (слеш) в начале и конце пути к файлу. Нужно знать, что слеш вначале означает полный путь к файлу (FULL PATH), т. е. от корневой директории, а отсутствие слеша — относительный путь (RELATIVE PATH), т. е. по отношению к текущему рабочему каталогу программы. А вот наличие или отсутствие слеша в конце пути к файлу целиком и полностью зависит от того, как используется текущая переменная в программе. Поэтому следите за образцом в коде — есть слеш в конце или нет, это очень важно. Плохо, когда нет образца, как его не было и в нашем случае, тогда придется экспериментировать.

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

В этом случае просто незаменим скрипт под названием Setup Helper, который можно скачать со страницы http://dotmatrix.net/scripts/setup/ или с http://timden.hyperm...load/tester.zip (размер 3 Кб). Этот «мастер установки», состоящий из одного исполняемого файла, предоставит практически всю информацию о вашем сервере, которая необходима для установки Perl-скриптов. Благодаря ему вы узнаете полный путь к CGI-BIN каталогу и директории с документами, их URL, версию Perl, платформу и тип сервера.

Полный перечень всех параметров, о которых вам станет известно, приводить слишком утомительно, отметим лишь самые интересные — путь к почтовой и другим найденным программам (например, TAR), полный список переменных окружения, перечень доступных CPAN-модулей.

В общем, эта программа полезна всем без исключения, как начинающим пользователям, так и веб-программистам. Для того чтобы запустить Setup Helper, необходимо лишь указать путь к интерпретатору Perl в рабочем файле tester.pl. Если у вас нет даже этой информации, поэкспериментируйте с несколькими вариантами, по крайней мере теми, которые стали нам известны из этой и предыдущей статьи:

#!/usr/bin/perl
#!/usr/local/bin/perl
#!/store/bin/perl


Затем загрузите файл на сервер в каталог CGI-BIN и назначьте ему права доступа 755 (команда CHMOD в ftp-клиенте). Теперь осталось только набрать в браузере URL скрипта.

Итак, мы готовы к «заливке» и запуску скрипта на сервере. Но об этом, а также о возможных ошибках и проблемах при первичной установке, а еще о многом другом мы поговорим уже в следующий раз.

(Продолжение следует)

Источник: http://www.mycomp.com.ua/