Директивы SSI оформляются как комментарии.

Теоретические сведения

Web-сервер Apache

Apache — один из наиболее популярных web-серверов в мире. В настоящее время программное обеспечение Apache установлено более чем на половине серверов.

Для настройки web-сервера Apache используются конфигурационные файлы:

- основной конфигурационный файл httpd.conf, расположенный в каталоге conf;

- дополнительные конфигурационные файлы, расположенные в каталоге conf\extra и подключаемые основному конфигурационному файлу httpd.conf по мере необходимости с помощью директивы Include;

- конфигурационные файлы .htaccess, расположенные непосредственно в каталогах, для которых выполняются настройки.

В конфигурационных файлах с помощью директив определяется, как web-сервер должен работать с ресурсами, отвечая на запрос, указывается, с какими файлами пользователи могут выполнять определенные операции. Настройка конфигурационных файлов web-сервера Apache — самый ответственный шаг после его установки.

Web-сервер Apache читает основной конфигурационный файл httpd.conf однократно при запуске. Если web-сервер работает, то при изменении конфигурационного файла httpd.conf следует перезапустить web-сервер.

В конфигурационном файле httpd.conf и файлах .htaccess содержатся директивы, которые управляют работой web-сервера Apache.

В конце основного конфигурационного файла httpd.conf перечислены директивы Include, позволяющие подключить дополнительные конфигурационные файлы из каталога conf\extra.

Виртуальные хосты

Web-сервер Apache позволяет настроить виртуальные хосты.

Виртуальные хосты позволяют разместить более чем один web-сайт, используя один экземпляр web-сервера. Виртуальный хост может быть как «привязанным к IP-адресу» (IP-based), что позволяет использовать отдельный IP-адрес для каждого web-сайта, так и «привязанным к имени» (name-based), что позволяет использовать один и тот же IP-адрес для нескольких web-сайтов, различая виртуальных хосты по именам или номерам портов.

Для организации виртуальных хостов используются директивы Listen, NameVirtualHost и блочная директива VirtualHost (все примеры приведены для name-based виртуального хоста, определяемого номером порта и web-сервера Apache, установленного как консольное приложение).

Директива Listen задает номер порта, который «слушает» web-сервер. В конфигурационном файле может присутствовать несколько директив Listen.

Listen 8081

Директива NameVirtualHost позволяет создать name-based виртуальный хост со своим номером порта.

NameVirtualHost 127.0.0.1:8081

Блочная директива<VirtualHost>позволяет задать директивы, определяющие режимы работы виртуального хоста.

<VirtualHost 127.0.0.1:8081>

CustomLog …/…/access.log common

ErrorLog …/…/error.log

DocumentRoot …/…/www

<Directory …/…/www>

Options …

</Directory>

<Files …/…/test.html>

</Files>

</VirtualHost>

Для настройки виртуального хоста можно использовать практически все директивы web-сервера Apache. Узнать, разрешена ли директива для использования в блочной директиве </VirtualHost> можно в локальной документации, доступной по адресу http://127.0.0.1:8080/manual. Директиву разрешено использовать в блочной директиве </VirtualHost> в случае, если в описании директивы в разделе Context указан virtual host.

Рекомендуется для каждого виртуального хоста с помощью директивы DocumentRoot задавать отдельный каталог для документов web-сайта, так как именно по этой причине и создаются виртуальные хосты.

Файлы регистрации доступа и ошибок могут быть одними и теми же для нескольких виртуальных хостов.

Блочные директивы <Directory> и <Files> предназначены для задания директив, применяемых к соответствующим каталогам и файлам (например, для организации доступа к каталогу или файлу).

Организация доступа

Для организации доступа к каталогам и файлам используются директивы Allow, Deny, AuthType, AuthName, AuthGroupFile, AuthUserFile и Require.

ДирективыAllow, Deny позволяют открыть / закрыть доступ для всех пользователей или пользователям, пришедшим с определенного хоста, домена или IP-адреса.

Allow from all / Deny from all

Allow from apache.org / Deny from apache.org

Allow from .net / Deny from .net

Allow from 192.168.1.104 / Deny from192.168.1.104

Allow from 192.168 / Deny from192.168

Порядок применения директив Allow и Deny определяется директивой Order.

Order Deny,Allow

#Если клиент упомянут в директиве Deny, ему запрещается доступ при условии,

#что он не упомянут в директиве Allow. Если ни в одной из директив клиент

#не упомянут, доступ ему разрешается.

Order Allow,Deny

#Доступ клиенту, который упомянут в директиве Allow, разрешен,

#если только он не упомянут в директиве Deny. Если ни в одной из директив

#клиент не упомянут, доступ ему запрещается.

Директивы AuthType, AuthName, AuthGroupFile, AuthUserFile и Requireпозволяют открыть / закрыть доступ для зарегистрированных пользователей.

Директива AuthType задает тип контроля полномочий.

AuthType Basic

Директива AuthName задает область, в которой действительны имена и пароли пользователей.

AuthName Test

Директивы AuthGroupFile и AuthUserFile задают имена текстовых файлов, в которых содержится информация о группах и пользователях, входящих в группы и именах пользователях и паролях. Файлы имеют следующий формат:

group1:user1 user2 …

group2:user3 user4 …

user1:password1

user2:password2

Пароли пользователей могут храниться как в незашифрованном, так и в зашифрованном виде. Для шифрования паролей используется утилитаbin\htpasswd.exe. Для получения справочной информации по работе с утилитой следует запустить утилиту с ключом –?.

Имена файлов групп и пользователей выбираются произвольно, как и их расположение, единственное соображение безопасности заключается в том, что каталог с файлами лучше располагать выше каталога, заданного директивой DocumentRoot.

Директива Require определяет права доступа для отдельных пользователей, групп пользователей, всех зарегистрированных пользователей.

Require user user1 user2 …

#доступ разрешен перечисленным пользователям

Require group group1 group2 …

#доступ разрешен перечисленным группам пользователей

Require valid-user

#доступ разрешен всем зарегистрированным пользователям

Служебная индексация

В случае если каталог, заданный директивой DocumentRoot, не содержит индексного файла (директива DirectoryIndex), web-сервер Apache создает служебный индексный файл. Параметр Indexes директивы Options разрешает формирование служебного индексного файла.

Для изменения вида служебного индексного файла можно включить расширенную индексацию директивой IndexOptions.

IndexOptions FancyIndexing

Для расширенной индексации можно использовать директивы AddIcon, AddDescription, HeaderName, ReadmeName,IndexIgnore (описание директив для расширенной индексации см. в локальной документации в разделе «Reference Manual/Run-time Configuration Directives»).

Директивы включения на стороне сервера (SSI — Server Side Includes)

Директивы SSI, содержащиеся в документах, позволяют реализовать на серверной стороне выполнение некоторых действий и включить результаты этих действий в документы перед их отправкой клиенту. Аналогичные возможности, гораздо более широкие, предоставляют серверные скриптовые языки.

Формат директивы:

<!--#directive attribute=value attribute=value … -->

Директивы SSI оформляются как комментарии.

Для настройки web-сервера Apache для работы с директивами SSI используются директивы Options, AddOutputFilter и AddType.

Options Includes

#разрешает использование директив SSI

AddOutputFilter INCLUDES .ssi

#задает соответствие между расширением имени файла и фильтром,

#который будет обрабатывать ответ сервера перед отправкой клиенту

AddType text/html .ssi

#задает соответствие между расширением имени файла и media-типом

Описание директив включения на стороне сервера см. в локальной документации (расположено в разделе «Server Side Includes (SSI)/Basic SSI directives»).

Лабораторная работа №2.
Создание CGI-скрипта.
(4 часа)

Цель работы:

Получить практические навыки в написании и отладке CGI-скрипта на языке программирования, имеющем средства для работы с интерфейсом CGI.

Задание:

Во всех вариантах заданий необходимо разработать CGI-скрипт.

Тест должен содержать не менее трех вопросов с не менее чем двумя вариантами ответа на каждый вопрос.

Данные, введенные пользователем, пересылаются на серверную сторону, где обрабатываются CGI-скриптом, который «на лету» формирует документ с результатами прохождения теста.

Примечание: CGI-скрипт следует написать так, чтобы он мог принимать данные, присланные как методом GET, так и методом POST.

Вариант 0

Проверка знаний правил дорожного движения.

Вариант 1

Проверка знания таблицы умножения.

Вариант 2

Психологический тест.

Вариант 3

Проверка знания языка разметки гипертекста HTML.

Вариант 4

Проверка знания каскадных таблиц стилей CSS.

Вариант 5

Проверка словарного запаса иностранного языка.

Вариант 6

Проверка знания языка программирования JavaScript.

Вариант 7

Проверка знания директив web-сервера Apache.

Вариант 8

Проверка знания языка программирования C++.

Вариант 9

Проверка знания языка программирования PHP.

Порядок выполнения лабораторной работы:

1. Для выполнения лабораторной работы установить программный комплекс Denwer (http://denwer.ru).

2. Создать html-документ с формой.

3. Написать CGI-скрипт в соответствии с заданным вариантом.

4. Протестировать созданный CGI-скрипт (при тестировании использовать методы передачи данных GET и POST).

Содержание отчета (отчет в электронном виде):

- отчет сохранить в файле с именем ЗФ-000 Иванов (лр).doc;

o титульный лист;

o цель работы;

o задание;

o порядок выполнения лабораторной работы

o разметка html-документа;

o исходные коды скриптов;

o скриншоты html-документа с исходной формой и документом, сформированным CGI-скриптом;

o выводы по работе.

Теоретические сведения

Наши рекомендации