Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Среда CGI, Web-сервер

Среда CGI. Давайте подойдем вплотную к рассмотрению вопроса о CGI-программировании. Прежде всего, для написания эффективно работающих CGI-скриптов необходимо правильно настроить Web-сервер. Потом, с полной уверенностью, можно смело начинать написание CGI-программ. Да, именно так - настроить Web-сервер. Ведь новичкам склонно считать, что стоит только поместить CGI-программу в их директорию (вместе с сайтом), скажем на том же narod.ru и их можно будет вызывать ;-)

Web-сервер. При слове сервер в голове невольно возникает образ мощного постоянно включенного компьютера величиной с книжный шкаф. Web-сервер это вовсе не просто кусок мощного железа! Прежде всего, это программа, которая принимает запросы от клиентов вроде GET index.html и выдает ответ. Либо в ответе будет действительно index.html, 404, еще какое-нибудь сообщение об ошибке, либо ..., да, в общем, что угодно! Эта программа может быть запущена как демон, т.е. работать постоянно, или просто, для экспериментов Web-мастера на локальной машине. Как видите, Web-серверу вовсе не обязательно быть подключенным к глобальной сети :-)) Он может работать через специальный IP-адрес 127.0.0.1, являющийся петлей, то есть отправленные пакеты приходят самому себе. При этом сервер корректно работает: выдает нужные файлы, запускает CGI-скрипты и т.п. Немного отступив от основной темы сайта, рассмотрим настройку Web-сервера Apache for Linux. Поставляется Apache в стандартном дистрибутиве любого Linux. Рекомендую Slackware Linux 7x. Все настройки Apache изменяются в файле /path/to/apache/conf/httpd.conf. Основное на данном этапе - описание директорий и корня сервера. Корень Web-сервера есть некий подкаталог файловой системы, от которого Web-сервер начинает отсчет доступных клиентам файлов. Если корнем сервера в файловой системе является /home/httpd/html/, следовательно, на запрос http://servername документ по умолчанию (index.html) будет взят из /home/httpd/html/index.html. Вот типичный пример секции описания корня Web-сервера в файле httpd.conf:

DocumentRoot "/home/httpd/html"

Дальше сразу следует описание директории-корня:

<Directory "/home/httpd/html">
Options Indexes FollowSymLinks Includes
AllowOverride None
Order allow,deny
Allow from all
</Directory>

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

cgi-bin. Обычно это название носит директория, из которой можно выполнять CGI-скрипты. Описывается по принципу описания обычной директории в файле httpd.conf. Небольшая особенность отличает ее от простой директории: в список опций добавляется директива ExecCGI, означающая разрешение на запуск программ из данной директории. Если директория cgi-bin находиться выше корня сервера в файловой системе, то используется ScriptAlias:

ScriptAlias /cgi-bin "/home/httpd/cgi-bin/"

<Directory "/home/httpd/cgi-bin/">
AllowOverride None
Options Indexes FollowSymLinks ExecCGI
Order allow,deny
Allow from all
</Directory>

После того, как вы правильно описали директорию cgi-bin можно попробовать написать простейший CGI-скрипт, если Вы этого еще не сделали, и положить его в директорию cgi-bin в файловой системе. Проверьте права доступа на директорию cgi-bin и на сам CGI-скрипт. Необходимо, чтобы и директория и скрипт имели включенным право на исполнение от имени пользователя Web-сервера (обычно это nobody): rwxr-xr-x. Запустите Web-сервер (httpd) и вызовите скрипт из броузера http://servername/cgi-bin/first.cgi.

Переменные окружения. Из выше написанного можно сделать вывод, что CGI-скрипт представляет собой самую обычную программу, в которой мы имеем совокупность кода, HTML-тегов и обязательное взаимодействие с Web-сервером. Оказывается, что CGI-скрипты имеют доступ к т.н. переменным окружения сервера (environment variables), из которых можно извлекать весьма полезную информацию о пользователе, сервере и о соединении. Почти сразу возникает вопрос о том, как принять данные, отправленные по методу GET. Ответ на этот вопрос как раз кроется в ENV. Вы обращаетесь к переменным окружения так: $ENV{'KEYWORD'} - из Perl, или getenv("KEYWORD") - из C/C++, где KEYWORD какое-либо из ключевых слов:

GATEWAY_INTERFACEСпецификация CGI
SERVER_NAMEИмя сервера
SERVER_ADMINАдрес e-mail администратора
SERVER_SOFTWAREНазвание и версия сервера
SERVER_PROTOCOLВерсия протокола HTTP или HTTPS
SERVER_PORTНомер порта
REQUEST_METHODМетод (GET или POST)
PATH_INFOДополнительная информация скрипту (путь)
SCRIPT_NAMEИмя скрипта
SCRIPT_FILENAMEПолный путь к скрипту
QUERY_STRINGСтрока данных при методе GET
REMOTE_HOSTМашина клиента
REMOTE_ADDRIP-адрес клиента
AUTH_TYPEТип аутентификации
REMOTE_USERИмя пользователя
CONTENT_TYPEКодировка данных из формы
CONTENT_LENGTHРазмер присоединенных данных
PATH_TRANSLATEDКонвертированная версия пути
HTTP_USER_AGENTПрограмма-броузер клиента
HTTP_REFERERURL предыдущей страницы
HTTP_PROXY_CONNECTIONСоединение через прокси
HTTP_IF_MODIFIED_SINCEЕсли документ был изменен
HTTP_HOSTDNS имя хоста
HTTP_FROMАдрес электронной почты пользователя
HTTP_COOKIECookie броузера
HTTP_CONNECTIONТип установленной связи
HTTP_ACCEPTПеречень принимаемых mime-типов

Самыми часто используемыми переменными среды являются QUERY_STRING и REMOTE_ADDR. Часто необходимо запретить повторное голосование или накрутку счетчика. Кроме переменных окружения есть еще полезные, а порой необходимые возможности среды CGI, требующие настройки. Они будут подробно рассмотрены в следующей статье...

Оставить комментарий

Комментарий:
можно использовать BB-коды
Максимальная длина комментария - 4000 символов.
 

Комментарии

1.
13K
06 декабря 2005 года
kvaga
8 / / 06.12.2005
+1 / -0
Мне нравитсяМне не нравится
6 октября 2006, 23:51:05
Статья просто супер - действительно очень содержательная для людей, пока не имеющих представления об cgi-скриптах. Очень бы хотелось в скорейшем времени увидеть продолжения этой темы, особенно хотелось увидеть примерчики реализации скриптов (желательно на 'Си'). Хотелось бы увидеть полное взаимодействие пользователя и скрипта, т.е. чтобы скрипт както очевидно повлиял на ожидаемый пользователем результат!
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог