Настройки сервера для работы с CGI-скриптами
Раздел: CGI 06-12-2004 FAQ оптимизатору на форуме ZenBroker
Для исполнения CGI-скриптов сервер Apache должен быть соответствующим образом настроен. Во-первых, сервер должен быть собран с модулем исполнения CGI-скриптов(обычно включен по умолчанию), во-вторых, в файлах настройки сервера следует указать опции управления исполнением CGI-скриптов.
В данном разделе мы будем подразумевать, что сервер собран с модулем испонения CGI-скриптов, поэтому сосредоточим свое внимание на настройках сервера.
В версиях Apache, начиная с 1.2.6 можно все директивы настроек сервера включать в один файл httpd.conf. Однако, традиционным способом настройки, который унаследован от NCSA-сервера является использование трех файлов настройки, которые отвечают:
за настройку самого сервера(httpd.conf)
за настройку ресурсов Web-узла(srm.conf)
за настройку управления доступом к ресурсам(access.conf)
Для виртуальных хостов все директивы размещаются в файле httpd.conf в разделах описания каждого из виртуальных хостов.
httpd.conf
В этом файле определяются скрипты обработки нестандартных методов доступа(PUT или DELETE), а также описания работы с CGI-скриптами для виртуальных хостов.
Для указания скрипта обработки нестандартного метода используют директиву Script:
Script PUT put_script.cgi
Вместо PUT здесь можно указать DELETE или другой метод доступа. При обращении по данному методу доступа будет вызван скрипт, который указан в качестве второго аргумента.
Директивы для описания работы со скриптами для виртуальных хостов размещают внутри контейнера VirtualHost:
...
Внутри этого контейнера можно размещать все директивы, которые размещают для основного сервера в файлах httpd.conf, srm.conf, access.conf.
srm.conf
В этом файле определяется конфигурация ресурсов, которыми управляет сервер. Скрипты входят в состав этих ресурсов. Дирикторию скриптов по умолчанию определяет директива ScriptAlias:
ScriptAlias cgi-bin /usr/local/etc/httpd/cgi-bin
В данной директории определяется синоним части URL(первый параметр директивы), которому ставится в соответствие реальный путь в каталоге файловой системы вычислительной установки, где эксплуатируется сервер(второй аргумент). Например,:
server.citmgu.ru/cgi-bin/test.cgi
обращается к файлу:
/usr/local/etc/httpd/cgi-bin/test.cgi
Кроме стандартного места размещения скриптов, которое определяется через ScriptAlias, скрипты можно размещать в произвольном каталоге, внутри дерева каталогов сервера.
Дерево каталогов сервера отпределяется директивой DocumentRoot:
DocumentRoot /usr/kiae
или
DocumentRoot kiae
В первом случае указан полный путь от корня файловой системы, а во втором относительный путь, т.е. путь от домашнего каталога сервера.
Для того, чтобы можно было запускать скрипты нужно добавить handler(обработчик) для запуска скриптов из заданного каталога:
SetHandler cgi-script
Кроме этого с расширением файла можно связать MIME-тип, по которому сервер распознает, что это скрипт:
AddType application/x-www-form-urlencoded .pl
В данном случае мы назначаем расширение *.pl для CGI-скриптов. Традиционным расширением скриптов по умолчанию явлется расширение *.cgi.
access.conf
Наиболее важной директивой в этом файле с точки зрения исполнения скриптов является Options. Она используется внутри контейнера Directory:
Options ExecCGI
В данном случае для каталога /usr/local/etc/httpd/htdocs будет разрешено исполнение CGI-скриптов.
Павел Храмцов