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

Самоучитель PHP 4 - Котеров Д. В.

.pdf
Скачиваний:
99
Добавлен:
24.05.2014
Размер:
4 Мб
Скачать
☆

Приложение 1

Файл конфигурации

Apache httpd.conf

Это приложение содержит полный текст файла конфигурации сервера Apache httpd.conf с комментариями на русском языке.

Содержимое листинга П1.1 полностью соответствует указаниям по настройке Apache, приведенным в части II книги. Если у вас по какой-то причине не получит- ся правильно установить Apache и PHP версии 4, руководствуясь этими указания- ми, представленный ниже текст файла httpd.conf решит все проблемы.

Несколько слов о формате httpd.conf. Файл состоит из строк, содержащих дирек- тивы Apache. В одной строке может быть расположено не более одной директивы. Текст от # äо конца строки считается комментарием и не берется в рассмотрение. Также игнорируются пустые строки.

При изменении начальной конфигурации файла возможно группирование нескольких директив в блоки, или контейнеры. При этом Apache поддерживает только ограниченное количество допустимых типов контейнеров. Любой блок-контейнер начинается строкой вида <ИмяКонтейнера>, расположенной, как обычно, на отдельной строке, и завершается тэгом </ИмяКонтейнера>. Некоторые (но не все) блоки могут быть вложенными.

Директивы, касающиеся индивидуальных настроек для каталогов или файлов, могут также помещаться в специальные файлы .htaccess, расположенные в соответствующих местах дерева каталогов сайта. Эти файлы должны иметь тот же формат, что и httpd.conf. Однако для них имеются особые ограничения на использование директив и блоков — список недопустимых можно найти в документации, поставляе-

мой с Apache.

Листинг П1.1. Файл конфигурации Apache httpd.conf

#Основан на конфигурационных файлах сервера NSCA, созданных

#Робом МакКулом.

#

# Главный файл конфигурации сервера Apache, содержащий директивы,

510

Часть VI. Приложения

#управляющие работой сервера. За более детальной информацией

#обращайтесь по адресу http://www.apache.org/docs/.

#

#Не стоит читать эти директивы без понимания их роли. Они

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

#вариантов. В случае сомнений обращайтесь к сопроводительной

#документации. Считайте, что вас предупредили.

#

#После просмотра и анализа файла httpd.conf сервер

#попробует найти и обработать файлы:

#C:/Program Files/Apache Group/Apache/conf/srm.conf, а затем

#C:/Program Files/Apache Group/Apache/conf/access.conf,

#если вы не переопределили эти имена директивами ResourceConfig

#и/или AccessConfig.

#

#Директивы конфигурации сгруппированы в три основных раздела:

#1. Директивы, управляющие процессом Apache в целом (глобальное

#окружение).

#2. Директивы, определяющие параметры "главного" сервера, или

#сервера "по умолчанию", отвечающего на запросы, которые

#не обрабатываются виртуальными хостами. Эти директивы задают

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

#3. Установки для виртуальных хостов, позволяющие обрабатывать

#запросы Web одним-единственным сервером Apache, но направлять

#по раздельным IP-адресам или именам хостов.

#

#Файлы конфигурации программы и журналы регистрации событий

#(в программисткой среде они чаще называются "конфигами" и "логами",

#так что, я думаю, ничего страшного не произойдет, если я буду

#придерживаться этой терминологии и здесь).

#Если имена файлов, определенных вами для управления сервером,

#начинаются с символа / (или "диск:/" для Win32), сервер будет

#использовать явно указанный в этом имени полный путь. Если же имена не

#начинаются с "/", то для определения пути будет задействовано значение

#директивы ServerRoot. Так, logs/foo.log при значении ServerRoot,

#равном /usr/local/apache, будет интерпретироваться сервером как

#/usr/local/apache/logs/foo.log.

#

Приложение 1. Файл конфигурации Apache httpd.conf

511

#Внимание: В определении имен файлов вы должны использовать прямые слэши

#вместо обратных (т. е. c:/apache вместо c:\apache). Если не указано

#имя диска, по умолчанию будет выбран диск, на котором размещен

#Apache.exe; тем не менее, во избежание путаницы, рекомендуется, чтобы

#вы всегда явно указывали в абсолютных путях имя диска.

#

### Раздел 1: Глобальное окружение

#

#Директивы в этом разделе определяют общие параметры Apache, такие как,

#например, число запросов, которое он может обрабатывать одновременно,

#или где ему искать свои файлы конфигурации.

#

#Директива ServerType может иметь значения inetd или standalone.

#Режим inetd поддерживается только на платформах Unix. ServerType standalone

#

#ServerRoot: вершина дерева каталогов, в которых содержатся файлы

#конфигурации, регистрации и отслеживания ошибок.

#

# В конце строки добавлять слэш не следует! ServerRoot "C:/Program Files/Apache Group/Apache"

#

#PidFile: Файл, куда сервер при запуске должен записывать свой

#идентификатор процесса.

PidFile logs/httpd.pid

#

#ScoreBoardFile: Учетный файл, предназначенный для хранения внутренней

#информации процесса сервера. Он необходим не для всех архитектур.

#Если для вашей он нужен (об этом можно судить по тому, будет ли создан

#такой файл, когда вы запустите Apache), то вы должны обеспечить, чтобы

#никакие два экземпляра процесса Apache не использовали один и тот же

#учетный файл.

ScoreBoardFile logs/apache_runtime_status

512

Часть VI. Приложения

#

#В стандартной конфигурации сервер обработает при запуске файлы

#httpd.conf, srm.conf и access.conf (именно в таком порядке).

#Последние два файла в настоящее время поставляются пустыми, поскольку

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

#одном файле (httpd.conf).

#Закомментированные ниже значения встроены в сервер по умолчанию.

#Если вы используете другие имена файлов, отредактируйте и

#раскомментируйте "умолчальные". Если потребуется, чтобы сервер

#проигнорировал эти файлы, вы можете указать значения /dev/null (для

#Unix) или nul (для Win32).

#ResourceConfig conf/srm.conf #AccessConfig conf/access.conf

#

#Timeout: Время ожидания в секундах, прежде чем сервер примет или

#отправит сообщение о тайм-ауте.

Timeout 300

#

#KeepAlive: Признак, позволено или нет устанавливать долговременные

#соединения (persistent connections) (т.е. когда обрабатывается более

#одного запроса на соединение). Для запрета укажите значение Off. KeepAlive On

#

#MaxKeepAliveRequests: Максимальное число запросов, допустимое в одном

#долговременном соединении. Для снятия ограничений обнулите параметр,

#но для максимального быстродействия мы рекомендуем указать заведомо

#большое конкретное значение.

MaxKeepAliveRequests 100

#

#KeepAliveTimeout: Время ожидания в секундах следующего запроса от

#одного и того же клиента в одном подключении.

KeepAliveTimeout 15

#

# Для обработки запросов Apache для Win32 всегда порождает один дочерний

Приложение 1. Файл конфигурации Apache httpd.conf

513

#процесс. Если он по каким-либо причинам будет преждевременно завершен,

#другой дочерний процесс создается автоматически. Поступающие запросы

#внутри такого дочернего процесса обрабатываются отдельными потоками.

#Следующие две директивы управляют поведением таких потоков и процессов.

#

#MaxRequestsPerChild: Число запросов, которое позволено обрабатывать

#дочернему процессу до переполнения. При переполнении дочерний процесс

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

#непрерывной работе, если Apache (или используемые им библиотеки),

#допускают утечку памяти или других ресурсов. На большинстве систем

#это не требуется, но некоторые (например, Solaris) имеют заметные

#утечки в библиотеках. Если нет других рекомендаций, для Win32

#установите значение 0 (без ограничений).

#

MaxRequestsPerChild 0

#

#ThreadsPerChild: Число одновременно выполняющихся потоков (т.е.

#запросов), которое допускает сервер. Установите это значение в

#соответствии с требуемой загрузкой сервера (больше активных запросов

#одновременно означает, что они обслуживаются медленнее) и объемом

#системных ресурсов, который вы можете предоставить серверу.

#

ThreadsPerChild 50

#

#Listen: Позволяет привязать Apache к конкретному адресу IP, и/или

#порту, в дополнение к порту, определенному по умолчанию. См. также

#директиву <VirtualHost>.

#

#Listen 3000

#Listen 12.34.56.78:80

#

#BindAddress: Этой опцией вы можете обеспечить поддержку виртуальных

#хостов. Данная директива используется для указания серверу адреса IP,

#который необходимо отслеживать. Она может содержать *, адрес IP или

#полное имя домена Интернета. См. также директивы <VirtualHost> и Listen.

514

Часть VI. Приложения

#

#BindAddress *

#

#Поддержка динамически разделяемых объектов (DSO, Dynamic Shared Object)

#Для того чтобы иметь возможность использовать модуль, созданный как

#библиотека DSO, вам следует поместить в этом месте соответствующую

#строку LoadModuleТогда модуль будет доступен

#прежде обращения к нему.

#За детальными разъяснениями механизмов DSO вы можете обратиться к

#файлу README.DSO в дистрибутиве Apache 1.3, а также выполнить

#команду 'apache -l', чтобы получить список уже встроенных

#(статически скомпонованных и таким образом всегда доступных)

#модулей сервера Apache.

#

#Внимание: Порядок, в котором загружаются модули, имеет большое

#значение. Не меняйте нижеследующий порядок без консультации со

#специалистом.

#

#LoadModule anon_auth_module modules/ApacheModuleAuthAnon.dll #LoadModule dbm_auth_module modules/ApacheModuleAuthDBM.dll #LoadModule digest_auth_module modules/ApacheModuleAuthDigest.dll #LoadModule cern_meta_module modules/ApacheModuleCERNMeta.dll #LoadModule digest_module modules/ApacheModuleDigest.dll #LoadModule expires_module modules/ApacheModuleExpires.dll #LoadModule headers_module modules/ApacheModuleHeaders.dll #LoadModule proxy_module modules/ApacheModuleProxy.dll #LoadModule rewrite_module modules/ApacheModuleRewrite.dll #LoadModule speling_module modules/ApacheModuleSpeling.dll #LoadModule info_module modules/ApacheModuleInfo.dll

#LoadModule status_module modules/ApacheModuleStatus.dll #LoadModule usertrack_module modules/ApacheModuleUserTrack.dll

#

#Директива ExtendedStatus определяет, будет ли Apache генерировать

#детальную информацию о состоянии (ExtendedStatus On) или только

#общую информацию (ExtendedStatus Off) при обращении к функции

#server-status. Значение по умолчанию — Off.

Приложение 1. Файл конфигурации Apache httpd.conf

515

#

#ExtendedStatus On

### Раздел 2: Конфигурация сервера по умолчанию

#

#Директивы этого раздела устанавливают значения, используемые "главным

#сервером", который отвечает на запросы, не обрабатываемые виртуальными

#хостами. Эти значения обусловливают также установки по умолчанию для

#любых контейнеров <VirtualHost>, которые вы будете определять

#здесь далее.

#

#Любые из директив раздела могут быть включены в контейнер

#<VirtualHost>; в таком случае установки по умолчанию будут

#переопределены ими для этого виртуального хоста.

#

#

#Если в директиве ServerType (установленной ранее в разделе "Глобальное

#окружение") задано значение inetd, следующие несколько директив не

#имеют никакого эффекта, поскольку их значение определено конфигурацией

#inetd. Переходите к директиве ServerAdmin.

#

# Port: Номер порта, к которому подключен сервер.

#

Port 80

#

#ServerAdmin: Ваш адрес, по которому следует направлять сообщения о

#проблемах с сервером. Этот адрес появится на некоторых сгенерированных

#сервером страницах, таких, как сообщения об ошибках.

#

ServerAdmin you@your.address

#

#Директива ServerName задает имя хоста, возвращаемое клиенту, если это

#имя отличается от того имени, которое получила программа (например,

#используйте www вместо реального имени хоста).

516

Часть VI. Приложения

#

#Внимание: Вы не можете просто выдумывать имена хостов в надежде, что

#это сработает. Имя, которое вы определяете здесь, должно быть

#действительным именем DNS для вашего хоста. В случае затруднений с

#пониманием изложенного справьтесь у

#администратора сети.

#Если ваш хост не имеет зарегистрированного имени DNS, вы можете указать

#здесь его адрес IP. В таком случае вам придется обращаться к хосту по

#адресу (например, http://123.45.67.89/) и это может сильно осложнить

#переадресацию ресурсов.

#

ServerName localhost

#

#DocumentRoot: Каталог, в котором будут находиться ваши документы (т.е.

#Web-страницы). По умолчанию, все запросы выбираются из этого каталога;

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

#(links) и псевдонимы (aliases).

#

DocumentRoot "z:/home/localhost/www"

#

#Каждый каталог, к которому Apache имеет доступ, может быть

#сконфигурирован в отношении свойств и сервисов, которые могут быть

#разрешены и/или запрещены в этом каталоге (и его подкаталогах).

#

# Сначала мы определяем свойства "по умолчанию".

#

<Directory z:/>

Options Indexes Includes AllowOverride All

allow from all </Directory>

#

#Обратите внимание, что с этого места и далее вы должны явным образом

#указывать свойства, которые могут быть разрешены, — так что, если чтото

#не работает так, как вы ожидаете, сначала убедитесь, что вы разрешили

Приложение 1. Файл конфигурации Apache httpd.conf

517

#это свойство ниже.

#Здесь должен быть указан каталог, который вы установили как

#DocumentRoot.

#

#<Directory "z:/home/localhost/www">;

#

#Опции могут иметь значения None, All или любую комбинацию из

#Indexes, Includes, FollowSymLinks, ExecCGI или MultiViews.

#Заметьте, что MultiViews должен быть указан отдельно —

#Options All для этого не достаточно.

#

# Options Indexes FollowSymLinks MultiViews

#

#Директива перечисляет опции, которые могут быть переопределены в

#файлах .htaccess. Значением может быть All или любая комбинация из

#Options, FileInfo, AuthConfig и Limit.

#

# AllowOverride None

#

#Эти директивы определяют, какие пользователи имеют доступ к информации,

#расположенной на этом сервере.

#

#Order allow,deny

#Allow from all #</Directory>

#

#UserDir: Название каталога, которое прибавляется к именам

#пользовательских домашних каталогов при получении запроса ~user

#(например, http://www.server.com/~username).

#

#Под Win32 мы в настоящее время не пытались устанавливать каталог

#регистрации пользователя, поэтому приходится работать с форматом,

#приведенным ниже.