Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Администрирование сервера Apache и руководство по электронной коммерции

.pdf
Скачиваний:
107
Добавлен:
01.05.2014
Размер:
4.5 Mб
Скачать

3.3.20. Директива KeepAliveTimeout

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

KeepAliveTimeout 15

3.3.21.Увеличение производительности: директива MinSpareServers

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

MinSpareServers 5

3.3.22.Ограничение потери ресурсов: директива MaxSpareServers

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

MaxSpareServers 10

3.3.23. Количество серверов: директива startservers

Эта директива определяет количество копий файла httpd, создаваемых в момент за грузки сервера. Заметьте, что это число не должно быть меньше числа, заданного в дирек тиве MinSpareServers, и что остальные серверы в любом случае созданы в соответствии с установками. Подойдет любое значение, совпадающее даже приблизительно.

Startservers 5

3.3.24. Знание ваших возможностей: директива MaxClients

Эта директива устанавливает максимальное количество одновременно работающих процессов. Таким образом ограничивается количество одновременно подключенных клиентов. Очень важно следить за тем, чтобы этот показатель не был слишком низ ким. Оптимальное значение можно получить, вычитая объем оперативной памяти, который вы хотите выделить для других процессов из общего объема доступной памя ти, и разделить полученный результат на объем оперативной памяти, необходимой для работы одного httpd сервера.

Обратите внимание, что количество процессов сервера ограничивается еще и пе ременной HARD_SERVER_LIMIT,которая устанавливается во время компиляции дво ичного файла. По умолчанию значение HARD_SERVER_LIMIT составляет256.

MaxClients 150

3.3.25.Ограничение возможности процесса заглушить сервер: директива MaxRequestsPerChild

Эта директива устанавливает максимальное количество запросов, которые может обработать порожденный процесс до того, как он завершит свою работу. Зачем? Предположим, какая нибудь из поддерживаемых библиотек потребует настолько

52

Часть I. Основы

много оперативной памяти, что она поглотит все ресурсы и спровоцирует отказ сис темы. Например:

MaxRequestsPerChild 30

3.3.26.Ограничение области действия директив: директива <Directory>

Как было сказано в главе 1, "Основные концепции", директивы, контролирующие доступ (Options, AllowOverride), обычно заключаются в своеобразные скобки, ог раничивающие область их действия (<Directory>). Например, директивы, заключен ные в такие директивные скобки, будут действовать только на файлы, находящиеся в каталоге /opt/apache/htdocs:

<Directory /opt/apache/htdocs> </Directory>

Примечание

Директивы управлениядоступом, применимыеккаталогу, применимы также и ко всем его подкаталогам.

3.3.27. Директива Location

С другой стороны, диапазон действия привилегий может быть ограничен URI (Uniform Resource Identifier), расположенным на вашем узле. Например, чтобы отка зать в доступе к URI secure_ stuff всем пользователям, кроме локальных, достаточ но задать команду:

<Location /secure_stuff> order deny, allow deny from all

allow from 127.0.0.1 </Location>

3.3.28. Директива Options

Эта директива используется в файле .htaccess совместно с директивами <Directory> и <Location> для определения типа доступа, который может получить процесс пользователя к этой директории. Синтаксис — слово Options, сопровождае мое одной или более опциями из табл. 3.1.

Таблица 3.1. Опции доступа для файла .htaccess, директив <Directory>

И<Location>

Опции

Назначение

Аll

Активизировать все опции за исключением Multiviews.

ExecCGI

Активизировать выполнение CGI сценариев.

FollowSymLinks

Сервер просматривает символические связи в этом ката

 

логе. Рекомендуется,даже если сервер просматривает

 

символические ссылки, не менять пути, используемого для

 

поиска соответствия в разделах <Directory>.

Includes

Активизировать использование вставок на стороне сервера.

Глава 3. Конфигурирование Web сервера Apache

53

 

Окончание табл. 3.1

Опции

Назначение

IncludesNOEXEC

Вставки на стороне сервера разрешены, но команды

 

#execи #include в CGI сценариях отключены.

indexes

При этой опции, если URL ссылается на каталог, где от

 

сутствует файл DirectoryIndex (чаще всего файл

 

index.html), сервер возвращает отформатированную

 

распечаткусодержимогоэтогокаталога.

Multiviews

Разрешить вывод содержимого в формате Multiviews.

SymLinksIfOwnerMatch

Просматривать символические связи только в случае, ко

 

гда владелец файла или каталога совпадает с владель

 

цем ссылки.

В случае, когда к каталогу применено несколько опций, самая последняя отменяет действие всех других. Действие опций не суммируется. Однако, если опциям директи вы Options предшествует символ "+" или "—", опции действуют следующим образом:

опции, которым предшествует символ "+", добавляются к списку уже действую щих опций

опции, которым предшествует символ "—", удаляются из списка действующих опций

3.3.29. Директива AllowOverride

В разделе "Ограничение диапазона действия директив" главы 1, "Основные концеп ции" упоминалось, что один механизм управления доступом заключается во включении во все каталоги файлов с именем .htaccess. Поскольку директивы, имеющиеся в этом фай ле, могут конфликтовать с директивами, заданными директивой Options (см. выше), для того чтобы определить, какой из вариантов возымеет действие, воспользуемся директивой AllowOverride. Эта директива принимает значения All, None или любую комбинацию значений Options, FileInfo, AuthConf ig и Limit. Детали синтаксиса директивы можно найти в приложении А, "Основные директивы".

AllowOverride None

Существует возможность отменять установки, задаваемые не только файлом

.htaccess. Имя такого файла можно задать с помощью директивы AccessFileName. Напомним, что установка директивы AllowOverride в on вызывает полный просмотр сервером Apache дерева файловой системы в поисках заданного конфигурационного файла (например, при доступе к файлу /apache/htdocs/index.html будет произве ден поиск конфигурационных файлов в каталогах /, /apache и /apache/htdocs). A это, естественно, приведет к потере быстродействия всей системы.

3.3.30. Директива order

Эта директива является стандартной для модуля mod_access. Директива order задает порядок рассмотрения директив allow или deny. Для того, чтобы задать этот порядок, просто ответьте на вопрос, чего больше вы хотите: разрешить доступ большему количеству узлов или отказать в доступе. Если верно первое, воспользуйтесь командой:

order allow, deny

54

Часть I. Основы

В противном случае:

order deny, allow

3.3.31. Директива allow

Директива allowзадает узел или домен, которому будет разрешен доступ к ресур сам сервера. Это значение может быть задано цифрами (192.168.20) или символиче ским именем (righthere.net). Однако следует помнить, что в случае указания символи ческого имени, потребуется его проверка. А это, как известно, снижает производи тельность сервера. В случае задания имени домена символическим образом, не забудьте задать ведущую точку (.sample.org, а не sample.org).

allow from all

3.3.32. Директиваdeny

Директива deny задает узел или домен, которому будет отказано в доступе к ресур сам сервера. Это значение может быть задано цифрами (192.168.20) или символиче ским именем. В случае задания имени домена символическим образом обязательно укажите ведущую точку (.sample.org, а не sample.org).

deny from all

3.3.33. Где расположены файлы HTML: директива DocumentRoot

Эта директива задает путь к каталогу, из которого будут по умолчанию выбраны все запрошенные документы. Обратите внимание, что для эффективного разрешения доступа пользователям к другим каталогам, можно использовать символические связи и псевдонимы. Следует заметить, что ошибка в выборе такой директивы (например, задание в качестве каталога root, "/") может создать совсем необязательные "дыры" в системе защиты. Лучше отвести для этих целей специальное место на диске и создать каталог DocumentRoot. Продолжая пример, начатый в главе 2, "Инсталляция Web сервера Apache", обозначим директиву:

DocumentRoot /opt/apache/htdocs

3.3.34.Место размещения домашних страниц пользователей: директива UserDir

Эта директива задает имя подкаталога в корневом каталоге пользователя, к кото рому идет ссылка при получении запроса user.

UserDir public_html

3.3.35.Создание индексов и/или поиск по индексам: директива DirectoryIndex

После того как сервер Apache связал заданный URL с каталогом, он возвращает файл или файлы, которые находятся в этом каталоге. По соглашению это файл index.html, но можно задать любое другое имя. Если задан список имен файлов, сервер Apache возвратит первый элемент списка, который будет найден в каталоге.

DirectoryIndex index.html index.htm index.cgi index.shtml

Если в списке отсутствует необходимый файл, сервер Apache возвращает пользова телю листинг содержимого каталога. С точки зрения безопасности это плохо. Чтобы

Глава 3. Конфигурирование Web сервера Apache

55

этого избежать, можно задать абсолютный путь к стандартному файлу, содержащему сообщение "Not found", или что то подобное в конец вашего списка.

3.3.36. Директива Fancylndexing

Установив значение директивы Fancylndexing в on, можно создать таблицу, со держащую столбцы Icon, Name, Last Modified, Size и Description.

Fancylndexing on

3.3.37.Директивы AddIcon, AddIconByType, AddIconByEncoding

Директивы Addlcon позволяют связывать двоичный растровый файл с определен ным типом файла. Ассоциированный файл изображения появляется на экране во время генерации индекса. Описание синтаксиса и логики этой директивы можно най ти в приложении А, "Основные директивы".

3.3.38. Директива DefaultIcon

Этой директивой можно задать стандартное изображение, которое будет появлять ся при распечатке каталога, а среди директив Addlcon соответствующее изображение отсутствует.

DefaultIcon /icons/unknown.gif

3.3.39. Директива AddDescription

Эта директива предназначена для включения в файл краткого описания.

AddDescription "Access Policy" README.HTML

3.3.40. Директива ReadmeName

Эта директива используется для задания имени README файла для модуля mod_autoindex, которое будет включено в автоматически генерируемые индексы ка талогов.

ReadmeName README.html

3.3.41. Директива HeaderName

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

HeaderName HEADER

3.3.42. Директива IndexIgnore

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

Indexlgnore */ . ??* *~ *# */HEADER* */README* */RCS

3.3.43. Директива AccessFileName

Эта директива задает имя файла, в котором, в случае его обнаружения в обычном каталоге, можно будет найти директивы управления доступом.

AccessFileName .htaccess

56

Часть I. Основы

3.3.44. Директива DefaultType

Эта директива сообщает серверу, какой MIME тип будет принят по умолчанию в том случае, если тип файла невозможно определить по его расширению. Рекоменду ется задавать текстовый тип:

DefaultType text/plain

3.3.45. Директива AddLanguage

Эта директива предупреждает сервер о языке документа на основании включения соот ветствующего суффикса в имя документа. Например, если задана следующая директива

AddLanguage en .en .english

броузер поймет, что файлы filename.html.en и filename.html.english содержат

текст на английском языке.

Конечно, эта информация не имеет смысла для броузера, есл и пользователь сам не задал предпочтительный язык.

3.3.46. Директива LanguagePriority

Эта директива предназначена для разрыва связей при согласовании содержимого. Перечень языков дается по мере уменьшения приоритета.

LanguagePriority en fr de

3.3.47. Директива Alias

Эту директиву можно использовать для посылки запросов по псевдонимам сущест вующих каталогов. Команда будет иметь вид:

Alias /icons/ /usr/local/etc/httpd/icons/

3.3.48. Директива ScriptAlias

Эта директива задает каталоги, в которых содержатся сценарии сервера. Она имеет следующий формат: ScriptAlias псевдоним имя_каталога. Команда будет иметь вид:

ScriptAlias /cgi bin/ /usr/local/etc/httpd/cgi bin/

3.3.49. Директива AddType

Директива AddType ассоциирует MIME тип с расширением файла. Действие этой директивы аналогично добавлению аналогичной информации в файл mime.types. Сервер Apache передает тип содержимого броузеру пользователя. Эта информация используется клиентом для обработки информации, полученной от сервера Apache.

3.3.50. Директива AddHandler

Стандартная конфигурация сервера Apache имеет семь различных дескрипто ров содержимого для платформ Unix плюс еще один дескриптор для платформы Windows. Директива AddHandler предназначена для установки связи дескриптора с типом или типами файлов. Перечень встроенных дескрипторов приведен в табл. 3.2.

Глава 3. Конфигурирование Web сервера Apache

57

Таблица 3.2. Встроенные дескрипторы сервера Apache

Дескриптор

Назначение

cgi script

Выполнить URL как сценарий CGI.

knap file

Указанный URL содержит отображаемый образ.

isapi isa

Только для среды ОС Windows. При вызове URL загрузить дина

 

мические библиотеки (DLL) в формате ISA.

server info

Создать страницу, содержащую информацию о конфигурации

 

сервера.

server parsed

Произвести анализ любого такого файла для вставок на стороне

 

сервера.

server status

Генерировать страницу, содержащую информацию о состоянии

 

сервера.

type map

Рассматривает указанный URL как карту типов.

Кроме того, можно дополнительно создать свои собственные дескрипторы. Как это делается, смотрите в главе 12, "Состав модуля".

Например следующая директива ассоциирует CGI сценарий с расширениями фай

лов .pl и . ksh:

AddHandler cgi script .pl .ksh

С другой стороны, дескрипторы могут ассоциироваться с определенным местом в файловой системе:

<Location /cgi>

AddHandler cgi$script </Location>

3.4. Операционная система Windows

Настройка сервера Apache для работы под управлением ОС Windows в целом ана логична настройке сервера под ОС Unix. В подкаталоге conf, находящемся вкорне вом каталоге сервера Apache, можно найти несколько конфигурационных файлов httpd.conf и srm.conf. В основной своей массе директивы аналогичны, использу ются традиционным для Unix систем образом и имеют одно и то же действие.

И это подобие настолько близко, что даже несмотря на то, что в файловой системе Windows используется совсем другое соглашение по присвоению имен файлам, чем в ОС Unix, во внутренней системе обработки сервера Apache в качестве ограничителей в спецификациях каталогов используется символ косой черты. Да, это так, в качестве ограничителей в спецификациях каталогов нужно использовать символ косой черты "/". При этом устройство указывать не обязательно. При отсутствии явно заданного устройства сервер Apache будет полагать, что все ссылки сделаны к устройству, содер жащему программу Apache.

3.4.1. Отличия от ОС Unix

В среде Unix сервер Apache для обработки запроса, поступившего от пользователя, запускает отдельный процесс. В среде Windows в этом нет необходимости, так как в реализации сервера Apache для этой системы поддерживается многопоточность. Одна ко парадигма порожденных процессов настолько глубоко въелась в идеологию сервера

58

Часть I. Основы

Apache, что отказ от нее при переносе в ОС Windows не имеет никакого смысла. По этому на машинах Windows всегда сосуществуют два процесса Apache (процесс родитель и порожденный процесс). Запросы пользователей обрабатываются отдель ными нитями порожденного процесса. Различия, которые таким образом были зало жены в основу Apache, вызвали появление нескольких уникальных директив.

3.4.2. Директива MaxRequestsPerChild

Эта директива вызывает отключение порожденного процесса по достижению опре деленного числа обработанных запросов. Так как под управлением ОС Windows рабо тает только один порожденный процесс, рекомендуется устанавливать максимально возможное значение.

3.4.3. Директива ThreadsPerChild

Эта директива ограничивает количество одновременно обрабатываемых порожденным процессом запросов. Она предназначена для предотвращения ситуации, когда мощности системы не будет хватать для обработки запросов пользователей. По умолчанию это значе ние равняется 50, и оно должно изменяться в зависимости от мощности системы.

3.5 Операционная система Mac OS X

Хотите верьте, хотите нет, но операционная система OS X разработана на основе ОС Unix BSD 4. Все это скрыто от глаз отличным графическим интерфейсом, всегда характер ным для компьютеров Макинтош. У меня есть подозрения, что полный дистрибутив ОС OS X содержит сервер Apache с отличным графическим интерфейсом, но на момент соз дания этой книги такого интерфейса в дистрибутив OS X включено не было. С интерфей сом или без него сервер Apache, работающий под управлением OS X, можно инсталлиро вать с помощью файлов ASCII. Чтобы запустить приложение, необходимо:

1.щелкнуть на пиктограмме Desktop, расположенной внизу экрана;

2.в меню File выбрать окно New Finder;

3.для запуска терминального приложения запустить Term inal.арр.

3.5.1. Имя сервера

Установить имя сервера Apache в ОС Mac OS можно следующим образом. Для этого необходимо войти в раздел Network установки System Preferences, щелкнуть на закладке Services и ввести имя сервера.

В следующей таблице сведены все файлы сервера Apache, известные в ОС Unix, и их аналоги, работающие под управлением OS X.

ОС Unix

OS X

httpd

/usr/sbin/apache

httpd.conf

/Local/Library/Webserver/Configuration/apache . conf

srm.conf

<He используется — CM. apache.conf>

access . conf

<He используется см. apache.conf >

apachectl

 

/usr/ sbin/apachectl

Вот еще одна таблица, в которой сведены все каталоги сервера Apache, известные в ОС Unix, и их аналоги из OS X.

Глава 3. Конфигурирование Web сервера Apache

59

Стандартный каталог

Каталог OS X

$APACHE/conf

/local/library/Webserver/Configuration

$APACHE/cgi bin

/local/library/Webserver/CGI Executables

$APACHE/htdocs

/local/library/Webserver/Documents

$APACHE/htdocs

 

/local/library/Webserver/Logs

ОС OS X поставляется со всеми общими модулями, скомпилированными как разде ляемые объекты. Эти модули размещены в каталоге /System/Library/Apache/Modules. Вот перечень модулей, которые включены в бета дистрибутив:

• httpd . exp libdav.so libproxy.so libssl . so

m o d _ a c c e s s . s o mod_actions.so mod alias . so mod _ asis . so mod_auth.so

mod _ auth _ anon . so mod_auth_dbm.so mod_autoindex.so mod_cern_meta.so mod_cgi.so

mod_digest.so mod_dir.so mod_env.so

mod_expires.so mod_headers.so mod_imap.so mod_include.so

m o d _ i n f o . s o

mod_log_config.so mod mime.so

mod_mime_magic.so mod_negotiation.so mod_rewrite.so mod_setenvif.so mod_speling.so mod_status.so

mod_unique_id.so mod_userdir.so mod_usertrack.so mod_vhost_alias.so

Их загружают обычным способом с помощью директивы LoadModule. В качестве примера можно посмотреть конфигурационные файлы.

3.5.2. Тип сервера

В ОС OS X опция inetd, задающая тип сервера, отсутствует. Тип сервера устанав ливается в "standalone".

60

Часть I. Основы

 

Глава

 

4

 

ЗАПУСК, ПЕРЕЗАПУСК

 

И ОСТАНОВКА СЕРВЕРА

В этой главе...

 

4.1. Введение

61

4.2. Запуск сервера Apache

62

4.3. Опции командных строк

65

4.4. Перезапуск сервера Apache

66

4.5. Остановка сервера Apache

68

4.6. Исправление ошибок

69

4.1. Введение

Эта глава посвящена тонкостям процедуры запуска, перезапуска и остановки Web сервера Apache. Материал этой главы содержит описание опций командных строк, поведения сервера во время запуска и, конечно, самых различных методов запуска сервера. Для тех, кто ничего кроме запуска или остановки сервера не знает и не хочет знать, можно посоветовать воспользоваться сценарием apachectl, который можно найти в любом дистрибутиве Web сервера версий больше 1.3.

$APACHE/bin/apachectl [start | stop | restart]

Перед запуском сервера Apache и после внесения изменений в конфигурацию для проверки можно воспользоваться опцией config test.

$APACHE/bin/apachectl configtest

Сценарий apachectl работает с опциями start, stop, restart и configtest. С

них и следует начинать работу с сервером.

4.1.1. Операционная система Win32

Благодаря фундаментальным различиям между парадигмами операционных систем Windows и Unix, процедура запуска и остановки сервера Apache под управлением ОС Win32 имеет мало общего с аналогичными задачами самых разных клонов ОС Unix. Поэтому пользователям ОС Windows рекомендуется сразу же перейти к разделам, по священным ОС Windows.

Глава4.Запуск, перезапускиостановкасервера

61