|
Складываем
кубики
CGI-скрипты
Огромную помощь издателю в автоматизации
многих процессов на сайте оказывают CGI-скрипты. С их помощью можно
наладить автоматическое обновление страниц, архивирование старых записей,
рассылку почтовых сообщений, каталогизацию записей, торговлю, учет и
многое другое. Часть возможностей CGI автоматизирует и упрощает то,
что можно делать и руками, например каталог ссылок или доска объявлений,
но есть и уникальные применения CGI, которые крайне сложно или невозможно
воплотить в "ручном" исполнении, например, чат, опросы, рейтинги и другие
системы реального времени. CGI - это палочка-выручалочка любого крупного
проекта.
Что же это за чудо такое - CGI? На самом
деле, ничего особенного - это один из шлюзов (на данный момент, самый
распространенный) между HTML и исполняемым модулем (программой). Программа
может быть написана практически на любом языке, но самым популярным
на данный момент является язык Perl, который не требует компиляции (вернее,
компилируется "на лету") и наилучшим образом приспособлен для разбора
строковых переменных. Результатом работы скрипта чаще всего является
HTML-страница или ее часть, письмо (его отправка и содержание), или
запись в базе данных, но, по большей части, именно HTML-код.
Как и другие программы, CGI-скрипты могут
быть очень простыми, для написания которых не надо быть ассом программирования,
а бывают и развернутые комплексы, над которыми трудится много человек,
чтобы потом заработать на коммерческом распространении своей программы.
Работающими скриптами пронизано все в Интернете. Гостевые книги, формы
для отправки письма прямо с сайта, обсуждения, баннерные ротации - все
это примеры как раз простых программ. Каталоги, поисковые системы, почтовые
рассылки, доски объявлений - это примеры сложных скриптов, их уже не
одолеть "с полпинка". Программы на языке Perl немного похожи на C++
(вобще эти языки имеют довольно много общего), поэтому если вы раньше
программировали на C, то вам будет проще работать с Perl.
Программы на Perl платформонезависимы,
что совершенно необходимо для Интернета, где можно встретить сервера
оснащенные, по крайней мере, шестью вариантами Unix, не считая систем
на базе NT и других малораспространенных серверных ОС. Платформонезависимость
достигается за счет компилирования программ "на лету" инсталлированным
в системе интерпретатором. В то же время, программы распространяются
непосредственно в их исходном виде, то есть, текстовыми файлами. Безусловно,
есть небольшие различия между интерпретаторами для Win и интерпретаторами
для разных версий Unix, однако необходимость в использовании платформозависимых
функций возникает редко, и запись в описании к программе, декларирующая
ее принадлежность к той или иной платформе, скорее всего, говорит о
том, что для этой платформы скрипт тестировался, и его работа признана
удовлетворительной.
Вот тут мы подошли к самому главному:
существует большое количество готовых скриптов, выставленных в Сети
для свободного использовании при условии сохранения ссылки на авторство.
Почему так делается - отдельный разговор, который не имеет значения
в рамках данной лекции, для нас важно, что для интеграции скрипта на
сайте вам достаточно уметь грамотно инсталлировать его на сервере. Выбирать
нужный вам скрипт можно в одном из публичных архивов, где они уже заботливо
собраны, рассортированы и снабжены описаниями. Список самых популярных
CGI архивов вы найдете, как обычно, в конце лекции. Важно только четко
представлять себе, что именно вы ищете, тогда у вас есть шанс найти
нужный скрипт и значительно облегчить себе жизнь. Чтобы лучше ориентироваться
в том, что вы можете найти и что вам даст тот или иной скрипт, я рекомендую
вам прочесть несколько обзорных статей на эту тему, список которых я,
опять же, поместил в конце лекции.
Как выбирать скрипт? Первым делом необходимо
понять, какие функциональные возможности вам нужны от программы. Простейший
способ выяснить это - поглядеть на подобные же программы, установленные
на других серверах. Если вы вдруг найдете у кого-либо точно такой скрипт,
какой бы вы хотели иметь у себя, то попробуйте списаться с веб-мастером
и спросите у него, где он взял программу. Вполне возможно, что вы получите
точный адрес создателя скрипта. Иногда можно просто найти в конце страницы
ссылку на автора, поскольку по условию бесплатного использования скрипта,
вы обязаны обратную ссылку оставлять. Изучая скрипты, установленные
на других серверах, обращайте особое внимание на то, как работает та
или иная отдельная функция, насколько удобно работать с ней, насколько
быстро работает скрипт в целом. Посмотрев на возможные варианты и сравнив
их между собой, обратитесь в архив, чтобы найти себе программу по вкусу.
Обратите внимание, что для каждого представленного в архиве скрипта
(вне зависимости от архива - они все одинаковые) есть работающий пример,
чтобы вы могли оценить функциональность программы. Часто на тестовых
примерах вы можете получить права на доступ как у администратора, чтобы
попробовать функции и этой части программы, - это будет единственная
попытка попробовать программу в качестве администратора до того момента,
как вы инсталлируете ее у себя на сервере.
Однако прежде чем выбирать скрипт, нужно
разобраться в его структуре. Любой perl-скрипт состоит из исполняемого
модуля - отдельного файла, имеющего расширение pl или cgi. В действительности
этих файлов в одном скрипте может быть не один десяток, как, например,
в скрипте каталога Links2, но простые скрипты обычно имеют не более
трех исполняемых файлов. Также в скрипте, который вы скачаете из публичного
архива, будут шаблоны для генерации HTML-страниц (а может, и нет), файлы
данных, которые программа использует в процессе работы, а также конфигурационные
файлы. Из вышеперечисленного набора обязательным является только исполняемый
модуль, а все остальное может и отсутствовать, однако такие скрипты
не очень удобны в настройке. Удобнее всего (если вы не знаете perl и
не сильны в программировании вообще) работать с теми скриптами, которые
состоят из одного-двух исполняемых файлов, а для генерации страниц используют
внешние HTML-шаблоны, которые вы сможете произвольно изменять. Такой
скрипт легко и удобно настраивать, и проще подогнать к общему дизайну
вашего сайта, а отсутствие большого количества исполняемых файлов (каждый
ведь нужно настроить под ваш сервер) снижает вероятность ошибки.
К сожалению, вы редко можете оценить такие
параметры работы скрипта, как скорость и надежность (устойчивость) при
большой нагрузке сервера. Вы также не знаете, насколько сильно он нагружает
центральный процессор сервера (это важный параметр, потому что если
ваш скрипт чересчур ресурсоемкий, то администратор может "отрубить"
его без предупреждения). Недостатки программ в этой области вы обнаружите
только инсталлировав их на сервере. Поэтому настоятельно рекомендую
читать отзывы о скриптах, которые оставляют в архивах другие веб-мастера,
а при случае, и самому оставить такой отзыв, поскольку это единственный
источник информации о пользовательских качествах скрипта.
Выбрав программу для инсталляции, приступайте
к ее настройке. Первоначально нужно настроить базовые параметры, без
которых программа просто не будет работать, - все они описаны в инструкции
к скрипту. Обычно это:
- Путь к интерпретатору Perl. В подавляющем большинстве
случаев это либо usr/bin/perl, либо usr/local/bin/perl - какой именно
вы можете узнать либо в документации к хостингу, либо написав письмо
администратору сервера. Во избежание недоразумений на некоторых
серверах Perl кладется и туда и туда. Не забудьте также выяснить
версию интерпретатора - если она ниже 5.02, то вам придется об этом
постоянно помнить.
- Путь к каталогу, где находится исполняемый
путь скрипта. Этот путь указывается от корневой директории сервера
или от корневой директории виртуального сервера. Посмотреть его
можно в статусной строке ftp-клиента, зайдя в директорию, куда вы
намерены поместить скрипт.
-
Кстати, куда надо загружать скрипт
на сервере? В доступном вам Ftp пространстве должна присутствовать
специальная директория cgi или cgi-bin (могут быть варианты Vcgi
и Hcgi), - именно в нее и только в нее можно складывать свои скрипты.
Разумеется, что вы можете организовать внутри этой директории дерево
любой сложности, но только внутри этой директории. Делается так
потому, что нормально настроенный сервер из других директорий вашу
программу просто не сможет запустить, а кроме того, пространство
cgi-директории хоть как-то защищено от несанкционированного доступа,
то есть, сторонний человек без специальных навыков не сможет получить
листинг директории или содержимое ее файлов. Если все ваши скрипты
- это голосование и гостевая книга, то защищенность директории не
имеет для вас значения, однако если вы хотите закрыть доступ к части
своего сервера паролем, то роль защиты становится очевидной. Поэтому
создайте для скрипта новую поддиректорию внутри cgi-папки и туда
грузите все необходимые файлы.
-
Путь к дополнительным файлам. Вспомогательные
файлы могут храниться в любом месте сервера, им не обязательно находиться
внутри cgi-директории. Более того, HTML-шаблоны просто обязательно
размещать в доступной для посетителя части сервера. Следовательно,
вам необходимо указать путь до вспомогательных файлов. Обычно программа
требует относительный путь по серверу от директории, где храниться
исполняемый файл, до директории со вспомогательными файлами. Может
также потребоваться полный www адрес (http://www_и_т.д.) до скрипта
или же до директории со вспомогательными файлами.
-
Если скрипту в процессе работы необходимо отсылать
письма администратору или пользователям то может потребоваться путь
к программе sendmail. Если пути к этой программе не указано в описании
к хостингу, то нужно написать администратору или в службу поддержки
пользователей и спросить об этом.
Вышеуказанные параметры общие
для всех скриптов, но есть еще целый ряд установок, таких например,
как путь между двумя исполняемыми файлами, путь к картинкам, которые
использует скрипт, формат пересылаемых записей. Все эти установки обязательно
описываются в помощи к скрипту или непосредственно в самом скрипте и
не представляют особенных сложностей.
Если ваш скрипт служебный: отправка почты,
рассылка, счетчик или статистика, баннерная ротация и т.д., то на этом
его настройка, в общем-то, и заканчивается, - осталось только подставить
файлы данных и скрипт можно считать готовым к работе. Совсем другое
дело, если ваш скрипт - публичный и генерирует HTML-страницы, например,
доску объявлений, форум, поисковую систему и пр., тогда вам предстоит
еще подогнать внешний вид создаваемых программой страниц под дизайн
вашего сайта. Вот тут-то и всплывает удобство внешних шаблонов: их вы
можете менять как угодно, работая с ними, как с обычными HTML-страницами,
каковыми они, собственно, и являются. Вы можете использовать инструкции
SSI, каскадные таблицы стилей, другие CGI скрипты (например, баннерную
ротацию) и прочая, и прочая. Взаимодействие шаблонов с исполняемым файлом
осуществляется посредством комментариев, специальным образом расставленных
в теле страницы. Если же скрипт не оперирует внешними шаблонами, а создает
страницы "на лету" в соответствии с заложенными в нем описаниями, то
вам придется редактировать теги страницы непосредственно внутри скрипта.
Очевидно, что в ходе такого редактирования, не имея навыков и опыта,
легко совершить ошибку, обнаружить которую в теле программы с несколькими
сотнями строчек кода будет непросто. Поэтому, несмотря на наличие в
скрипте детального описания, что, где и как следует поменять, я рекомендую
выбирать варианты, которые используют для генерации страниц внешние
шаблоны.
Указав все необходимые параметры, переходите
к инсталляции. Запустите ftp-клиент и установите соединение с сервером.
В директории для cgi-скриптов создайте новую поддиректорию (учтите,
что ее название вы уже должны были указать в самой программе во время
настройки, когда писали путь) и загружайте туда исполняемые файлы в
соответствии с инструкцией, которая прилагалась к скрипту. Все файлы,
написанные на perl, можно загружать только в текстовом режиме (!), в
противном случае скрипт не будет работать. Обратите на это особенное
внимание, потому что загрузка скриптов в битовом режиме - есть самая
распространенная ошибка при инсталляции. Загрузив все необходимые файлы
(включая шаблоны и файлы данных, если требуется) в соответствующие директории,
установите атрибуты файлов. Атрибуты меняются командой change file attributes
(контекстное меню CuteFtp или меню программы Far Manager), в документации
к скрипту будут указаны некие CHMOD - это и есть атрибуты файлов. Для
исполняемых файлов нужно установить 755, для файлов данных - 777, для
шаблонов страниц - 644. То же самое касается и директорий, в которых
эти файлы находятся: для директории с исполняемым файлом - 755, для
директории с данными и шаблонами - 777 или 644 - это число должно соответствовать
атрибутам файлов, которые в директории находятся. Если в директории
есть файлы с разными атрибутами, то вы выбираете большее число.
Теперь, когда ваш скрипт инсталлирован,
займитесь проверкой его работоспособности. Если при запуске программы
сервер выдаст вам ошибку 500, это означает, что где-то вы ошиблись при
настройке скрипта, то есть ошибка возникла внутри исполняемого файла.
Ошибка 404 означает, что программа не нашла один из исполняемых файлов,
и вам следует проверить все пути, которыми оперирует скрипт. Ошибка
403, скорее всего, говорит о том, что вы неправильно выставили атрибуты
для шаблонов или директории, где они находятся.
Самые распространенные ошибки работы
программы:
- Неправильный путь к интерпретатору perl. Обязательно
уточните его у администратора сервера или службы технической поддержки
пользователей.
- Скрипт залит на сервер в побитовом режиме пересылке.
Это самая распространенная ошибка при инсталляции скрипта. Если
вы работаете с CuteFtp, то лучше сразу настроить его на то, что
все файлы с расширениями cgi или pl должны пересылаться на сервер
в текстовом режиме
- Указаны неправильные пути к файлам или директориям
внутри исполняемого файла. Проверяя пути, обращайте внимание на
заглавные буквы, поскольку ОС Unix различают прописные и строчные
буквы в названиях файлов и директорий.
- При правке уничтожены или добавлены лишние кавычки.
Все параметры в perl обрамляются одиночными кавычками, которые очень
легко уничтожить при правке. Найти потом хвосты очень и очень непросто,
поэтому будьте внимательны при редактировании исполняемого файла.
- В тегах присутствуют двойные кавычки. Эта ошибка
обычно возникает, если скрипт формирует страницы без шаблонов, а
внешний вид будущей страницы описывается непосредственно в скрипте.
В HTML языке очень часто используются двойные кавычки (например,
в тегах вызова картинок, в мета-тегах, в тегах таблиц и т.д.), а
интерпретатор воспринимает их как конец оператора, от чего скрипт
работает некорректно. Для исправления этой ошибки перед каждой двойной
кавычкой ставиться обратный слеш. Это обязательно должно быть указано
в скрипте или описании к нему.
- Скрипт некорректно вызван. Проверьте еще раз по инструкции
с какими параметрами следует вызывать программу.
Многие скрипты вызываются с помощью SSI (например,
баннерные ротации, голосования и пр.) никогда не тестируйте этот скрипт
на реальной странице! Создайте тестовый файл с вызовом скрипта и проверяйте
на нем работоспособность программы, и только после того, как вы убедитесь,
что все в порядке, смело ставьте директиву на реальную страницу.
Некоторые скрипты могут некорректно воспринимать
цифры в названии директории или файла, поэтому старайтесь не употреблять
цифровые названия директорий, если в этом нет острой необходимости.
|
|