.: Особенности CGI-режиссуры
Тимур Денисов
Несмотря на то, что число бесплатно доступных
CGI-скриптов уже измеряется тысячами, их использует далеко не каждый
владелец web-ресурса. Хотя наверняка практически у всех возникало желание
видеть на своем сайте гостевую книгу, чат, конференцию или собственный
счетчик посетителей.
Очень многие приступали к установке скриптов, однако с этим
шло не так просто, как с web-страницами. Методом научного тыка не
проходило, причем оказывается, на каком попало сервере скрипт не
запустишь, он, то есть сервер, должен чему-то там удовлетворять. Не
обошлось и без других серьезных проблем. При этом ощущалась острая
нехватка, точнее, практически полное отсутствие какой-либо сопутствующей
информации. В итоге, некоторые владельцы сайтов отказались от идеи
интерактивности в принципе, другие воспользовалась существующими
web-сервисами гостевых книг и чем-то подобным, и лишь очень немногие
преодолели все препятствия, получив в награду работающий на своем сайте
скрипт.
Весь объем доступных в Интернете материалов, так или иначе
касающихся темы CGI-скриптов, можно разделить на три группы: для
профессиональных программистов; для тех, кто желает научиться
программировать на каком-нибудь языке; для искателей FAQ и полезных
советов. Найдется всего пара-тройка материалов, специально посвященных
установке скриптов, однако и они вызывают у читателя множество вопросов.
А ведь для того чтобы установить на сервере скрипт,
совершенно не обязательно владеть языком программирования, на котором этот
скрипт написан. Аналогично: мы регулярно инсталлируем в Windows самые
разные программы, не имея никакого представления о том, какой язык
использовался в их разработке. Правда, процесс установки скрипта на
сервере не так прост, как двойной щелчок на SETUP.EXE, но в то же
время далеко не смертелен.
В истинности этого утверждения вы убедитесь, ознакомившись с
настоящим материалом. В нем мы на примерах рассмотрим и обмозгуем процесс
установки на сервере скрипта гостевой книги, а также попробуем заполнить
существующий информационный пробел по данной теме. Повествование не будет
выдержано строго в жанре action — мы разбавим его разного рода
комментариями, чтобы вы не просто научились запускать гостевую книгу, но,
что более важно, в дальнейшем устанавливать любой CGI-скрипт
самостоятельно.
Условия учений максимально приближены к боевым —
используется бесплатно доступный Perl-скрипт, так сказать,
зарубежного производства, и общедоступный, опять же, «буржуйский» сервер,
предоставляющий пространство для web-сайтов.
Сервер
Любая компьютерная программа — это прежде всего
написанный разработчиком код. В отличие от привычных нам в Windows
исполняемых файлов с расширением EXE, полученных в результате
компиляции кода программы, скрипты так и остаются в своем первозданном
виде, то есть всего лишь кодом, созданным на определенном языке
программирования. А это значит, что скрипт — существо нежное и
хрупкое, и для того чтобы он заработал, за ним надо поухаживать, как за
тепличным цветком. В этом, собственно, и заключается процесс его
подготовки к работе — указание ваших параметров в коде программы.
Как минимум скрипту понадобится интерпретатор —
специальная программа, которая выполняет инструкции, в соответствии с
полученным сценарием (script в переводе с английского означает
«сценарий»). Таким образом наше главное требование к web-серверу —
наличие в нем интерпретатора того языка программирования, на котором
написан скрипт. Точнее, не просто наличие, но и доступ к нему, что
обеспечивается интерфейсом CGI. Для нас эти вещи взаимосвязанные, а
значит, если сообщается, что сервер разрешает использование
Perl, само
собой подразумевается, что есть и CGI.
Бесплатных серверов с поддержкой CGI предостаточно и с
помощью такого сайта, как FreeWebspace.Net (http://www.freewebspace.net/), вы
сами можете сделать выбор. Мы же будем использовать Hypermart.Net (http://www.hypermart.net/),
предоставляющий 50 Мб дискового пространства и разного рода другие
услуги, но самое важное, удовлетворяющий нашему главному
требованию, — поддержке Perl. Данный сервис примечателен еще и
тем, что предоставляет бесплатно доменные имена третьего уровня, то есть
http://ВашеИмя.hypermart.net.
Итак, мы будем устанавливать скрипт по следующим
координатам: http://timden.hypermart.net/.
Чтобы сделать его работоспособным, обязательно нужно знать некоторые
параметры нашего сервера, как минимум, следующие:
поддерживаемая версия Perl;
путь к интерпретатору Perl;
полный путь к html-директории сайта;
полный путь к директории CGI-BIN;
URL-директории CGI-BIN: http://timden.hypermart.net/cgi-bin.
Однако, чем большей информацией о сервере вы владеете, тем
больше скриптов и их возможностей сможете использовать. Перечислим их
основные особенности:
путь к mail-программе;
путь к Date;
путь к mkdir;
путь к rmdir;
путь к Perl 4-й версии;
тип платформы сервера: UNIX;
поддерживается модуль CGI.pm;
поддерживается SSI.
Совсем не значит, что для установки конкретного скрипта вам
понадобится все вышеперечисленные сведения, однако знакомство с ними
поможет вам выбрать CGI-программу, обычно предъявляющую определенные
требования к возможностям сервера. Также стоит отметить, что многие
приведенные здесь параметры актуальны лишь для данного сервера. Прежде
всего, мы имеем в виду пути к UNIX-программам
Date, mkdir, rmdir —
обычно Perl и сам «знает», где они находятся. Что касается доступа к
почтовому клиенту, то многие серверы подобной услуги не предоставляют.
Поддержка 4-ого Perl (то есть устаревшей версии) является в общем-то
малополезным сервисом.
Все вышеуказанные параметры найдены в хелпах
Hypermart.Net, хотя, признаться, не в одном месте :-).
Аналогично: параметры вашего сервера ищите в разделе «Помощь», она
наверняка где-то есть. Если же ничего не удалось обнаружить, пишите письма
администратору... В случае, когда и это не помогает, придется пускаться в
самостоятельное плавание, но об этом мы поговорим позже.
Скрипт
Когда же вы узнаете о способностях вашего сервера, вы
поймете, какой скрипт вам нужен, а еще важнее — какой не нужен.
Например, если сервер поддерживает только
Perl, не стоит искать свою
будущую гостевую книгу среди PHP-скриптов. А если серьезно,
внимательное изучение требований скрипта к параметрам сервера избавит вас
от многих проблем. К примеру, скрипт, жизненно важный для Perl
версии 5.004, в девяти из десяти случаев не заработает под
Perl 5.003. Но если даже чудо случиться, он не будет исполнять ряд
своих обязанностей. Казалось бы, мелочь — какая-то одна тысячная в
номере версии. А такие пустяки способны довести до безумия, так как
ситуация, когда «все сделал, как написано, а оно вообще не работает»,
неизбежна, если проявишь небрежность в деле установки CGI-скриптов.
Справедливости ради отметим, что зачастую требования к версии
обобщаются — Perl 5.***.
Один из наиболее удобных ресурсов для поиска
CGI-скриптов — каталог The CGI Resource Index (http://www.cgi-resources.com/), в
котором представлены разработки, сгруппированные в соответствии с языком
программирования: Perl, C, C++, Visual Basic и даже такие
экзотические, как AppleScript, Python и Tcl, плюс скрипты для Unix
shell.
Самая многочисленная группа — Perl — содержит описания более
2600 программ, классифицированных в зависимости от назначения по
многим категориям.
В интересующей нас категории — Guestbooks —
собрано более восьмидесяти программ. Все скрипты участвуют в рейтинге,
благодаря чему можно выбрать самый популярный, — именно его мы и
инсталлируем, если, конечно, нас удовлетворят системные требования и
возможности.
Итак, претендент на роль главного героя — бесплатный
скрипт с длинным названием Lars Ellingsen’s Guestbook System. Его
рейтинг — 9.56 по десятибалльной шкале, и наибольшее количество
(более 2800) проголосовавших. Первым делом, ознакомимся с системными
требованиями, их оказалось немного: Perl версии 5.002 и выше,
тип сервера — UNIX или Windows NT. То есть наш UNIX-сервер и
Perl 5.003 этому вполне удовлетворяют.
Познакомимся же с нашим избранников поближе. Согласно
краткому описанию, представленному в каталоге The CGI Resource
Index, эта гостевая книга обладает широкими возможностями конфигурации
и очень проста в установке, с e-mail уведомлением, удалением «плохих»
слов, расширенным html-фильтром, отдельным файлом конфигурации и
поддержкой разных языков интерфейса.
На web-странице программы (http://www.stud.ntnu.no/~larsell/guestbook)
изучаем подробную ее характеристику. Во-первых, обнаруживаем большое число
языков, и, что самое интересное, есть поддержка русского (в кодировках
koi8-r и windows-1251) и даже украинского (windows-1251). Тут же
предлагается рассмотреть действующие образцы гостевой книги для любого
языка. Итак, мы видим, что посетитель гостевой книги может оставить
следующую информацию: имя, страну проживания, e-mail, адрес
web-страницы и, собственно, текст сообщения, при добавлении записи
есть возможность предварительного просмотра. Автоматически определяется и
отображается в записях гостевой книги имя хоста посетителя, а также время
добавления записи.
Возможности скрипта по-настоящему широкие. Среди них:
определение обязательных для заполнения имен полей; настраиваемый вид
страницы просмотра записей, добавления и предварительного просмотра;
отправка по e-mail подтверждения-благодарности добавившему сообщение;
уведомление админа; сортировка записей в обратном порядке; антиспам;
определение числа записей на странице и их максимального количества в
гостевой книге; фильтр всех или выбранных html-тэгов (BLINK,
META, SCRIPT, FORM, APPLET, OBJECT, EMBED, BGSOUND); особые параметры
отображения картинок; защита от дублирования сообщений и еще много других
возможностей.
В общем, вполне достойная гостевая книга, которой не грех
отдать предпочтение. А в процессе установки мы подробно ознакомимся со
всеми параметрами конфигурации.
Софт
Что ж, теперь у нас есть и скрипт, и сервер, осталось
разобраться с инструментарием. Как минимум нам понадобятся две программы:
одна — для редактирования файлов скрипта, вторая — для загрузки
и управления файлами на сервере. Чтобы править код программы, подойдет
любой простейший текстовый редактор, работающий с неформатированным
текстом. Например, стандартный «Блокнот» Windows или какой-нибудь
имеющийся в вашем компьютере редактор HTML-кода. Теоретически можно
использовать даже MS Word, однако на практике это приведет к лишним
неудобствам, которые, хотя и преодолимы, но отнимут массу времени, сил и
нервов.
Наилучший вариант — воспользоваться специальным
Perl-отладчиком, таким как Perl Builder (http://www.solutionsoft.com/).
Помимо удобства восприятия кода программы, благодаря «подсветке» и другим
приятностям, он, с помощью Perl-интерпретатора (http://www.activestate.com/),
обнаружит ошибки в синтаксисе программы, которые трудно избежать в
процессе конфигурации. Также в окне отладчика вы сможете запускать скрипты
и открывать в браузере результаты их работы.
Полезна и возможность сохранения отладчиком текстов в
UNIX-формате, что критично именно для исполняемых файлов на
UNIX-серверах. Визуально тексты файлов в UNIX- и Windows-форматах ничем
между собой не различаются. А все дело как раз в том, чего мы не
видим, — разный признак конца текущей строки текста: в Windows он
состоит из двух символов, а в UNIX — из одного. Понятно, что обычный
текстовый редактор в среде Windows сохраняет текст вашего скрипта в
Windows-формате. Однако Perl-интерперетатор сервера, работающего в среде
UNIX, будет воспринимать непонятные ему символы конца строки как ошибку в
синтаксисе программы. В результате, скрипт, где, на первый взгляд, все в
порядке, не запустится, и UNIX-сервер выдаст ошибку «500 — Internal
Server Error». Решить проблему можно, сохранив тексты в UNIX-формате.
Такой функцией обладает и упомянутый отладчик Perl Builder, и
многие редакторы HTML-кода, к примеру, известный HomeSite (http://www.allaire.com/) —
необходимо лишь активизировать ее в опциях программы.
Однако все эти мучения с форматами стоит претерпевать, если
для загрузки файлов на сервер вы будете пользоваться web-интерфейсом
(предлагается многими бесплатными хостинг-сервисами), или же ваш сервер
работает не на платформе Windows.
Повторюсь еще раз — все не так страшно. Если для
загрузки скриптов на сервер вы используете FTP-клиент, то проблема
форматов вас не коснется. Итак, необходимо загружать текстовые файлы в
режиме ASCII, в результате чего символы перевода строки будут
приведены в понятный для UNIX-системы вид.
Помимо «форматной» пользы, он установит права доступа к
файлам, а именно CHMOD (с чем мы скоро столкнемся). Да и вообще, он
удобен — операции с файлами на сервере вы будете производить так же,
как на локальном диске, в «Проводнике»
Windows. Наиболее популярным
FTP-клиентом в настоящее время является CuteFTP ( http://www.cuteftp.com/), однако его
интерфейс смущает начинающего пользователя своими наворотами, поэтому
удобнее воспользоваться чем-нибудь попроще, например, LeapFTP (http://www.leapware.com/). Кстати,
сегодня встроенными FTP-клиентами обладают даже HTML-редакторы, например,
тот же HomeSite.
Итак, мы рассмотрели минимальный набор программного
обеспечения, однако комплект инструментов web-программиста, ступившего на
тернистый путь использования или разработки CGI-скриптов, может быть
гораздо шире и достоин отдельного описания.
Что ж, теперь мы полностью готовы к установке на сервере
CGI-скрипта, и ничего не остается, как приступить к делу. Но... уже в
следующий раз.
(Продолжение следует)
Источник: http://www.mycomp.com.ua/
|