Настройка сервера Apache
Использование CGI сценариев требует определенных настроек сервера. Простого сценария или программного файла, который будет создавать HTML код, здесь недостаточно. Сервер должен знать, что такой файл выполнится, и будет возвращен какой то результат, а не просто отработать безрезультатно. Для этого есть два пути.
•Задается место на сервере, где хранятся исполняемые файлы.
•Дескриптор CGI содержимого связывается с файлами определенного типа.
4.3. Включение режима CGI: директиваoptions +ExecCGI
Независимо от MIME типа или каталога размещения сервер даже не пробует выполнить файл по умолчанию. Необходимо только явным образом задать выполнение CGI содержимого до того, как отработают директивы ScriptAlias, Set Handler или AddHandler. Это можно сделать с помощью директивы Options. Например, последовательность команд
<Directory /usr/local/cgi bin> Options +ExecCGI
<Directory>
задает режим обработки CGI содержимого, находящегося в каталоге /usr/local/ cgi bin. Символ "+", стоящий перед опцией ExecCGI, сообщает серверу, что к списку уже действующих в этом каталоге опций необходимо добавить опцию ExecCGI. При отсутствии символа "+" сервер будет считать, что опция ExecCGI является единственной оп цией, действие которой распространяется на этот каталог.
Обратите внимание, что перед тем, как запустить какую либо обработку, необходимо дать знать серверу, что файлы, находящиеся в этом каталоге (или файлы заданного типа) являются CGI сценариями. Более подробно это описано в следующих разделах.
4.4.Определение расположения файла сценария: директива ScriptAlias
Директива ScriptAlias является функцией модуля mod_alias. Как и директива Alias, она позволяет задать каталог для хранения файлов, отличный от каталога DocumentRoot. Но если директива Alias только пересылает запросы клиента в указанный каталог, то директива ScriptAlias маркирует содержимое каталога как исполнимое.
Например каталог ServerRoot на вашем сервере находится в дереве /opt/apache. По соглашению CGI сценарии и программы хранятся в подкаталоге cgi bin. Из со ображений безопасности может потребоваться хранить все CGI программы в другой файловой системе. Директива
ScriptAlias /cgi bin/ /usr/local/cgi bin/ будет выбирать все запросы из каталога
/opt/apache/cgi bin и пересылать их в каталог
/usr/local/cgi$bin
Найдя файл, сервер Apache скорее всего выполнит его или, по крайней мере, попытается выполнить, возвращая результат, а не обрабатывая файл как таковой. Поэтому директиву Alias можно использовать подобным образом и промаркировать исполняемые файлы с помощью директив SetHandler и/или AddHandler. Но, с другой стороны, централизация CGI файлов делает конфигурационные файлы более читабельными.
4.5.Маркировать целые каталоги как исполняемые: директива
SetHandler
Возможно, что вследствие какой то причины вы не захотите использовать директиву ScriptAlias, тогда все файлы каталога с помощью директивы SetHandler можно промаркировать как исполняемые. Эта директива может быть задана как в скобках <Directory> или <Location>, так и помещена в файл .htaccess. Это сообщает серверу Apache, что все файлы, находящиеся в этом каталоге, можно рассматривать как исполняемые. Например:
<Directory /usr/local/cgi bin> SetHandler cgi script
</Directory>
4.6.Определение дескриптора по расширениям файлов: директива AddHandler
Вот еще один метод, позволяющий серверу Apache распознавать различные типы фай лов как сценарии. Это метод ассоциации внутреннего дескриптора с расширением файла. С концепцией дескрипторов можно ознакомиться в главе 1, "Основные концепции". На пример, вашему вниманию представлена директива, которая сообщает серверу Apache, что файлы с расширениями .рl или . cgi необходимо рассматривать как CGI сценарии, и они должны быть обработаны (что, в данном случае, фактически означает — выполнены) дескриптором CGI сценариев, который имеется в модуле mod_cgi.
AddHandler cgi script .pl .cgi
4.7.Заданиеисполняемого MIME типа: директива AddType
Файлы, которые сервер Apache распознает как исполняемые файлы MIME типа, выполняются автоматически. Тип, связанный с файлами сценариев, application/x httpd cgi. Пусть все файлы, содержащие сценарии имеют расширение . pl . Чтобы ассоциировать их с соответствующим MIME типом, необходимо задать директиву
AddType application/x httpd cgi .pl
Данные по MIME типам можно найти в главе 1, "Основные концепции".
4.8. Отладка CGI: директива ScriptLog
То, что CGI сценарии не работают, клиент определяет по отсутствию ответа на свой запрос. Это делает отладку CGI сценариев более проблематичной. Однако модуль mod_cgi дает возможность записывать любое диагностическое сообщение, созданное CGI сценарием, в регистрационный файл. Для настройки данного процесса в нашем распоряжении имеется три директивы:
• ScriptLog. Когда эта директива задана, диагностические сообщения, посылаемые CGI сценариями, записываются в заданный каталог. Если директива не задана, ошибки не диагностируются. Файлы регистрации ошибок могут быть заданы как с указанием абсолютного пути, так и относительно корневого каталога сервера.
ScriptLog /var/logs/cgilog
• ScriptLogBuffer. Чтобы ограничить размер регистрационного файла, эта директива ограничивает объем регистрируемых значений PUT или POST. Значение по умолчанию составляет 1024 байт.
ScriptLogBuffer 256
• ScriptLogLength. Эта директива ограничивает размер файла, в который записываются диагностические сообщения об ошибках. По достижению предельного размера дальнейшие ошибки не регистрируются. Размер задается в байтах. Значение, принимаемое по умолчанию, равно 10385760.
ScriptLogLength 20000000
Контрольные вопросы.
- Что представляет из себя динамические WEB страницы.
- Какие сервера для работы с web ресурсами вы знаете.
- Перечислите известные вам SSI вставки.
- Опишите назначение команд SSI/
Дата добавления: 2017-06-02; просмотров: 795;