46356 (665518), страница 3
Текст из файла (страница 3)
После запуска основного серверного процесса сервер пытается открыть главный конфигурационный файл. Этот файл ищется по умолчанию в каталоге /usr/local/etc/http/conf с именем httpd.conf. Умолчание можно изменить при сборке системы редактированием файла src/config.h. За каталог отвечает параметр HTTPD_ROOT, за имя файла - параметр SERVER_CONFIG_FILE. Изменить значения по умолчанию можно при запуске сервера, указав ключи -h и-f (см. выше).
Местоположение файлов конфигурации доступа, документов, типов MIME, а также файлов журналов сервер получает из главного конфигурационного файла. Если каких - либо параметров там нет, их значения берутся по умолчанию (см. src/config.h).
Конфигурация ресурсов
Расположение файлов данных, их интерпретация сервером и поведение сервера при обращении к разным типам файлов определяются параметрами файла конфигурации ресурсов. Ниже приведен список основных параметров с пояснениями.
-
DocumentRoot
Определяет каталог локальной файловой системы, от которого начинается отсчет виртуального пути URL.
Например:
DocumentRoot /apply/www
-
UserDir
Определяет название публичного подкаталога пользователей. ПО WWW - сервера позволяет обеспечить внешний доступ к гипертекстовым документам пользователей базовой операционной системы. Для этого пользователям необходимо создать в своем домашнем каталоге подкаталог с именем, определяемым параметром UserDir. После этого все обращения по URL:
http:///~
будут транслироваться в реальный путь до подкаталога, определенного параметром UserDir в домашнем каталоге пользователя .
Например:
UserDir public_html
при этом при обращении по URL
http://www.nsu.ru/~fancy/index.html
сервер будет искать файл Index.html в подкаталоге public_html/ домашнего каталога пользователя fancy.
-
Redirect
Переадресует запрос к одной иерархии в запрос к другой иерархии, возможно расположенной на другом сервере.
Например:
Redirect /HTTPd/ http://hoohoo.ncsa.uiuc.edu/
-
Alias
Определяет синоним для документа или каталога на локальном сервере.
Пример:
Alias /icons /var/opt/images
-
ScriptAlias
Определяет синоним для каталогов, содержащих CGI - программы.
Пример:
ScriptAlias /hrv-cgi /var/opt/cgi
-
DirectoryIndex
Определяет имена файлов, трактующихся сервером как индексные. Их содержимое выдается сервером при обращении к данному каталогу.
Пример:
DirectoryIndex index.html index.htm index.cgi
-
AccessFileName
Определяет имя файла, трактующегося сервером как файл управления доступом (см. раздел об управлении доступом).
Пример:
AccessFileName .htaccess
3.3.5 Выполнение основных операций администрирования
3.3.5.1 Контроль работоспособности сервера
Проверка работоспособности сервера может осуществляться различными способами. На Unix - платформе, в режиме standalone, можно посмотреть список процессов, выделив среди них процессы с именем httpd:
# ps -aef | grep httpd
root 28816 1 0 Nov 14 ? 7:42 /usr/local/sbin/httpd
nobody 28817 28816 0 Nov 14 ? 5:50 /usr/local/sbin/httpd
nobody 28818 28816 0 Nov 14 ? 5:32 /usr/local/sbin/httpd
nobody 28819 28816 0 Nov 14 ? 4:49 /usr/local/sbin/httpd
nobody 28820 28816 0 Nov 14 ? 5:24 /usr/local/sbin/httpd
nobody 28821 28816 0 Nov 14 ? 5:42 /usr/local/sbin/httpd
root 19150 19145 0 14:57:58 pts/4 0:00 grep httpd
#
Мы увидим несколько процессов, у одного из которых собственником является root, а у других - пользователь, определенный параметром User главного конфигурационного файла (ГКФ). Процесс с собственником root запускается первым. Он контролирует работу остальных процессов - серверов. По использованному процессорному времени (колонка 8 примера) можно судить о загруженности серверов.
Если сервер работает в режиме inetd или необходимо проверить работоспособность сервера извне, нужно выполнить команду telnet, указав ей имя машины - сервера и номер порта. После установления соединения наберите команду GET /. Сервер должен выдать содержимое корневого каталога документов или индексного файла, находящегося в этом каталоге. Номер порта обычно равен 80. В режиме standalone он определяется параметром Port ГКФ. Для режима inetd он определяется парой файлов - services и inetd.conf, определяющих соответствие между входными tcp - портами и сервисами Unix.
Например:
$ telnet www.cnit.nsu.ru 80
Trying 193.124.209.70...
Connected to Indy.
Escape character is '^]'.
GET /
Novosibirsk Center of New Information Technologies
. . .
Connection closed by foreign host.
$
3.3.5.2 Обработка журналов
Время от времени возникает необходимость уменьшить размер файлов статистики путем их удаления или переноса в другое место. Если сервер находится в режиме inetd, можно свободно удалять и переносить файлы статистики. Они снова создадутся по указанным в ГКФ путям. Если же сервер работает в режиме standalone, эти файлы постоянно открыты процессами - серверами. Удаление или перенос их не освободят место на диске и не приведут к созданию новых файлов. Для корректной работы с журналами в этом случае, необходима остановка работы сервера. Необходимо "убить" процессы - серверы, перенести файлы журналов и перезапустить сервер. "Убить" процессы - серверы можно послав команду kill процессу с номером, указанном в файле PidFile (см. параметры ГКФ). Пример последовательности команд для выполнения такой операции:
kill `cat /usr/local/etc/httpd/logs/httpd.pid`
mv /usr/local/etc/httpd/logs/*.log /otherdir
/usr/local/sbin/httpd
Для анализа файлов статистики существует большое количество программного обеспечения, делающего "вытяжку" из них в виде диаграмм, сравнительных таблиц и т.д.
3.3.5.3 Управление доступом
Сервер NCSA содержит гибкие средства управления доступом. С их помощью можно централизованно или децентрализованно управлять доступом, основываясь на структуре адреса WWW - клиента, создавать пары имя/пароль для документов или целых подразделов, создавать несколько пар имя/пароль.
Управление доступом с использованием пар имя/пароль
Для введения ограничений на доступ ко всем документам определенного каталога необходимо создать в этом каталоге файл управления доступом. Этот файл имеет фиксированное имя, определяемое параметром AccessFileName файла конфигурации доступа. По умолчанию, это файл .htaccess.
Пример содержимого файла .htaccess
AuthUserFile /otherdir/.htpasswd
AuthGroupFile /dev/null
AuthName ByPassword
AuthType Basic
require user pumpkin
AuthUserFile указывает путь файла паролей, который должен находиться вне данного каталога.
Limit GET ограничивает доступ по методу GET, предоставляя его только пользователю pumpkin. Для ограничения других методов доступа (например, в каталогах CGI) используется перечисление всех методов:
require user pumpkin
Для создания файла паролей необходимо воспользоваться утилитой htpasswd, входящей в состав дистрибутива сервера:
htpasswd -c /otherdir/.htpasswd pumpkin
После запуска она дважды запросит пароль для пользователя pumpkin и создаст файл паролей /otherdir/.htpasswd.
Использование нескольких пар имя/пароль
Использование нескольких пар имя/пароль достигается путем описания группы, в которую входят несколько пользователей, и указания имени группы в операторе Limit.
-
Необходимо создать несколько записей в файле паролей. Этого можно достичь, не указывая ключа -c (create) для htpasswd:
htpasswd /otherdir/.htpasswd peanuts
htpasswd /otherdir/.htpasswd almonds
htpasswd /otherdir/.htpasswd walnuts
-
Создать файл описания группы, назвав его, например, /otherdir/.htgroup со следующим содержимым:
my-users: pumpkin peanuts almonds walnuts
где my-users - имя группы,
pumpkin, peanuts, almonds, walnuts - список пользователей, входящих в группу.
-
Изменить файл .htaccess следующим образом:
AuthUserFile /otherdir/.htpasswd
AuthGroupFile /otherdir/.htgroup
AuthName ByPassword
AuthType Basic
require group my-users
Все документы данного каталога будут доступны всем членам группы my-users после проведения процедуры аутентификации (ввода пароля).
Ограничение доступа по сетевому имени
В этом случае управление доступом осуществляется на основе сравнения сетевого имени машины - клиента с заранее заданным образцом. Если выявится совпадение, начинают действовать специальные правила доступа.
Пример ограничения доступа на чтение. Чтение разрешено всем пользователям машин домена cnit.nsu.ru:
Содержимое файла .htaccess:
AuthUserFile /dev/null
AuthGroupFile /dev/null
AuthName ExampleAllowFromCNIT
AuthType Basic
order deny, allow
deny from all
allow from .cnit.nsu.ru
Оператор order указывает порядок определения требований к доступу:
сначала ограничения, затем разрешения.
deny from all - сначала запрещает доступ для всех,
allow from .cnit.nsu.ru - затем разрешает доступ для машин домена cnit.nsu.ru.
Оператор AuthName задает имя данного ограничения доступа - произвольную комбинацию букв и цифр.
Пример запрета на доступ для всех машин домена nstu.nsk.su:
Содержимое файла .htaccess:
AuthUserFile /dev/null
AuthGroupFile /dev/null
AuthName ExampleAllowFromCNIT
AuthType Basic
order allow, deny
deny from .nstu.nsk.su
allow from all
3.3.6 Поддержка русскоязычных кодировок
Исторически сложилось, что в России распространены несколько русскоязычных кодировок, в основном ориентированных на разные платформы. Наиболее известные из них:
-
КОИ - 8 8 - битовая кодировка по ГОСТ
-
Microsoft Code Page 866 ("Альтернативная") - кодировка, используемая в MS-DOS
-
ISO-8859-5 - кодировка, утвержденная международной организацией по стандартизации
-
Microsoft Code Page 1251 ("Windows") - кодировка, используемая в Microsoft Windows.
Специалисты утверждают что всего в России имеют хождение 11 кодировок русского алфавита.
Если Ваш WWW сервер ориентирован на использование внутри организации или его пользователями будет являться ограниченный круг людей с однотипными рабочими местами, Вы можете ограничиться одной кодировкой русскоязычной информации на сервере.
Сложности возникают, когда Вы захотите расширить круг клиентов сервера. Вам необходимо будет организовать поддержку нескольких кодовых страниц для русскоязычных документов. Приведенный выше список из четырех кодировок удовлетворит более 99% всех возможных абонентов сервера.
Вообще говоря, в составе языка HTML имеются теги, определяющие кодировку документа и должные позволить корректно прочитать документ в любой кодировке. Однако в связи с тем, что эти теги не поддерживаются ни одним из известных броузеров, надеяться на них не стоит. Возможно, в будущем эта ситуация изменится, и проблема с кодировками будет решена.
Для поддержки нескольких кодовых страниц применяется множество методов, которые можно разбить на две группы:
-
использование файлов - копий одного документа в разных кодировках
-
динамическое преобразование документов из кодировки, в которой они лежат на сервере, в кодировку, поддерживаемую WWW - клиентом.
В первом случае, на сервере физически присутствуют все файлы во всех поддерживаемых кодировках. Документы в различных кодировках отличаются между собой по правилам образования путей и имен.
Например:
indexw.html, indexa.html - добавление суффиксов, определяющих кодировку. Или
.../koi8/index.html, .../win/index.html - различные базовые каталоги для разных кодировок.
При этом выделяется одна мастер - кодировка, в которой новые документы располагаются на сервере, а все остальные варианты документов получаются после работы специальной программы - перекодировщика. Программа - перекодировщик может запускаться вручную - администратором WWW сервера или автоматически, с использованием команд cron, at.
Во втором случае, доступ к документам осуществляется через дополнительную программу - перекодировщик, динамически перекодирующую документы сервера в кодировку WWW - клиента. Эта программа может быть CGI - программой, через которую всегда осуществляется доступ к русскоязычной части сервера. На вход такой программе передается реальный путь документа и кодировка WWW - клиента, в которую нужно перекодировать указанный документ (см. рис. 12.1)
Программа - перекодировщик может также располагаться между WWW - клиентом и сервером (см.рис.12.2). В таком варианте она называется PROXY.
Однако здесь возникает проблема с перекодировкой всех данных, включая графику, видео, аудио и других нетекстовых материалов. Для ее решения PROXY придается дополнительный интеллект - определять тип передаваемых данных по заголовку MIME и решать, перекодировать документ или нет, на основе его типа. Программы - перекодировщики с различными кодировками обрабатывают обращения к разным портам tcp сервера. Клиенту работа с PROXY видна в URL.
Например:
http://www.nsu.ru:80/index.html - для кодировки КОИ-8,
http://www.nsu.ru:8000/index.html - для кодировки ISO-8859-5 и т.д.














