Documentroot apache что это
Основы Apache (httpd)
Базовая настройка сервера Apache
Установка необходимых пакетов
Обратите внимание, что команда yum search http выдает много пакетов. Это связано с тем, что веб-сервер Apache является модульным, а различные модули предоставляются через дополнительные пакеты yum.
Вместо использования отдельных пакетов вы также можете использовать yum groups. Команда yum groups list предоставляет обзор всех доступных групп yum, а yum group Basic Web Server предоставляет все необходимое для установки веб-сервера Apache и все необходимые зависимости. Чтобы выполнить установку Apache используйте yum groups install «Basic Web Server».
Определение основного файла конфигурации
Другим важным параметром конфигурации является ServerRoot. Он определяет каталог по умолчанию, где Apache будет искать свои файлы конфигурации. По умолчанию для этой цели используется каталог /etc/httpd, но могут использоваться и другие каталоги.
Вы заметите, что в httpd.conf упоминаются многие другие файлы конфигурации. Использование дополнительных файлов конфигурации позволяет приложениям легко устанавливать snap-in файлы, которые будут включены сервером Apache из пакетов RPM. Все имена этих файлов конфигурации относятся к ServerRoot в /etc/httpd.
В листинге 1 показана часть содержимого файла конфигурации httpd.conf.
Создание контента веб-сервера
После определения DocumentRoot веб-сервера вы знаете все, что нужно знать для настройки базового веб-сервера. По умолчанию веб-сервер Apache ищет файл с именем index.html и представляет содержимое этого документа клиентам, использующим браузер для доступа к веб-серверу. Достаточно настроить этот файл с очень простым содержанием; подойдет только строка типа «Добро пожаловать на мой веб-сервер».
Чтобы протестировать веб-сервер, вы можете запустить браузер. Браузер Firefox установлен по умолчанию во всех графических установках RHEL / CentOS. Если ваш сервер не поддерживает графический интерфейс, используйте yum install elinks для установки текстового браузера elinks.
Этот браузер не позволяет загружать сложные веб-страницы, но он позволяет вам проверить работу веб-сервера. Ниже на скриншоте показано, как выглядит интерфейс elinks.
В упражнении 1 вы узнаете, как настроить базовый веб-сервер.
Упражнение 1. Настройка базового веб-сервера
В этом упражнении вы узнаете, как настроить базовый веб-сервер Apache.
1. Выполните yum groups install «Basic Web Server». Это установит пакет httpd, а также некоторые из наиболее часто используемых дополнительных пакетов.
2. Откройте главный файл конфигурации Apache в редакторе и найдите строку, которая начинается с DocumentRoot. DocumentRoot определяет местоположение, где сервер Apache будет искать контент, который он будет обслуживать. Убедитесь, что он установлен в /var/www/html.
3. В каталоге /var/www/html создайте файл с именем index.html. В этом файле введите «Добро пожаловать на мой веб-сервер».
4. Чтобы запустить и включить веб-сервер, выполните systemctl start httpd; systemctl enable httpd. Команда запускает веб-сервер и гарантирует, что он будет запускаться автоматически после перезапуска сервера. Выполните systemctl status httpd, чтобы убедиться, что веб-сервер запущен и работает. В листинге 2 вы можете увидеть, как должен выглядеть результат этой команды.
5. Выполните yum install elinks, чтобы установить текстовый браузер elinks. Введите elinks http://localhost, чтобы подключиться к веб-серверу и убедиться, что он работает.
Понимание файлов конфигурации Apache
При установке веб-сервера Apache по умолчанию создается довольно сложное дерево конфигурации в каталоге /etc/httpd. В листинге 3 показано содержимое этого каталога по умолчанию. Обратите внимание, что содержимое этого каталога может отличаться на вашем сервере, если установлены дополнительный пакеты. Apache является модульным, и после установки дополнительных модулей Apache здесь могут быть установлены другие файлы конфигурации.
Листинг 3
Первое, что вы заметите, это наличие трех символических ссылок на журналы, модули и каталог выполнения. Они созданы, чтобы позволить Apache запускаться в среде chroot.
Среда chroot предоставляет поддельный корневой каталог. Это каталог в файловой системе, представленный в качестве корневого каталога для процесса, который выполняется в среде chroot. Это сделано по соображениям безопасности: процессы, работающие в среде chroot, могут обращаться к файлам только в этой среде chroot, что снижает риск возникновения инцидентов безопасности, когда злоумышленникам удается получить оболочку входа в систему с использованием идентификатора веб-сервера и попробовать пройти через файловюя систему для выполнения несанкционированных действий.
Основные файлы конфигурации для веб-сервера Apache находятся в каталоге /etc/httpd/conf. Для начала, есть файл httpd.conf, который содержит наиболее важные параметры конфигурации. Кроме того, есть файл с именем magic. Этот файл используется браузером для интерпретации того, каким должно быть содержимое веб-сервера. Это гарантирует, что содержимое веб-сервера отображается правильно в разных браузерах.
Каталог /etc/httpd/conf.d содержит файлы, которые включены в конфигурацию Apache. Это делается с помощью строки Include conf.modules.d/*.conf в файле httpd.conf.
Этот каталог может использоваться RPM, которые включают snap-in файлы оснастки Apache. Как и в случае с ServerRoot, этот подход позволяет добавлять файлы конфигурации, которые определяют различные веб-страницы, без изменения содержимого файла /etc/httpd/conf/httpd.conf.
Если используются модули, они могут использовать свои собственные файлы конфигурации, специфичные для модулей, которые будут помещены в каталог /etc/httpd/conf.modules.d. Опять же, цель этого подхода состоит в том, чтобы сохранить конфигурацию в /etc/httpd/conf.d/httpd.conf настолько чистой, насколько это возможно, и убедиться, что конкретная конфигурация модуля не перезаписывается при обновлении универсальной конфигурации Apache.
Создание виртуальных хостов Apache
■ Виртуальный хостинг на основе имен является наиболее распространенным решением. В этом решении виртуальные хосты используют разные имена, но один и тот же IP-адрес.
■ Виртуальные хосты на основе IP менее распространены, но необходимы, если имя веб-сервера должно быть преобразовано в уникальный IP-адрес. Виртуальные хосты на основе IP требуют нескольких IP-адресов на одном сервере и являются общими в конфигурации, где сервер Apache использует TLS для защиты соединений.
Упражнение 2. Установка виртуальных хостов Apache
В этом упражнении вы создадите два виртуальных хоста. Чтобы помочь вам настроить виртуальные хосты, вы сначала настраиваете разрешение имен, после чего вы создаете конфигурацию виртуальных хостов.
1. На сервере server1 и server2 откройте файл /etc/hosts с помощью редактора и добавьте две строки, которые позволяют сопоставить имена виртуальных хостов, которые вы собираетесь создать, с IP-адресом сервера:
2. На сервере server1 добавьте следующее в файл /etc/httpd/conf/httpd.conf. (Вы можете оставить все остальные настройки как есть.)
3. Там же на сервере server1 создайте файл конфигурации с именем account.example.com.conf в каталоге /etc/httpd/conf.d.
Добавьте в этот файл:
4. Закройте файл конфигурации и выполните:
5. В каталоге account.example.com, который вы указали выше в строке DocumentRoot, создайте файл с именем index.html и убедитесь, что в нём написано «Добро пожаловать в account».
6. Временно выключите SELinux командой setenforce 0.
7. Выполните systemctl restart httpd для перезапуска веб-сервера Apache.
9. Вернувшись в терминал, скопируйте файл /etc/httpd/conf.d/account.example.com.conf в файл с именем /etc/httpd/conf.d/sales.example.com.conf.
10. Откройте файл sales.example.com.conf в vi и выполните команду :%s/account/sales/g. Этой командой вы сделаете замену текста account на sales, который встречается во всём файле.
11. Создайте каталог /www/docs/sales.example.com и создайте в нем файл index.html, содержащий текст «Добро пожаловать на сервер sales».
12. Перезапустите httpd и убедитесь, что account и sales доступны.
$ и SRVROOT
Но у такого подхода есть и негативное последствие — при указании пути до корневой папки сайтов получается, что она должна быть внутри ServerRoot. На самом деле, это совершенно необязательно — в качестве корневой папки для сайтов можно использовать любую папку на компьютере.
Впервые в конфигурационном файле SRVROOT встречается в следующим виде:
На всякий случай напомню, ServerRoot это верх в дереве директорий, в котором хранятся файлы конфигураций сервера, файлы ошибок и журнала доступа. В конце значения ServerRoot не надо добавлять слэш.
В дальнейшем все относительные пути в конфигурационном файле Apache считаются относительно ServerRoot.
Если одна и та же папка используется в качестве ServerRoot для нескольких демонов httpd, то нужно по крайней мере изменить PidFile.
Затем SRVROOT встречается в конфигурационном файле в следующих строках:
DocumentRoot — это директория, где хранятся веб-сайты. По умолчанию, все запросы считаются относящимися к этой директории.
А Directory собирает вместе несколько директив, имеющих действие на указанную папку.
Если вы не хотите помещать корневую папку сайтов внутри ServerRoot, то вместо использования этой переменной просто пропишите желаемый путь.
Далее SRVROOT встречается в строке:
ScriptAlias: определяет, какие каталоги содержат серверные скрипты.
ScriptAliases по сути такой же, как и Aliases, за исключением того, что документы в целевом каталоге обрабатываются как приложения и запускаются сервером по запросу, а не как документы, отправляемые клиенту. К директивам ScriptAlias применяются те же правила о конце «/», что и к Alias.
SRVROOT есть ещё в одном месте конфигурационного скрипта:
Как можно понять, здесь устанавливаются правила для директории с CGI.
Директива Define
Директива Define определяет (устанавливает) значение переменной.
Контекст: конфигурация сервера, виртуальные хосты.
В форме с одним параметром Define эквивалентен передаче аргумента -D в httpd. Его можно использовать для переключения использования разделов без необходимости изменять аргументы -D в любых скриптах запуска.
Имена переменных не могут содержать двоеточия «:», чтобы избежать конфликтов с синтаксисом RewriteMap.
Область действия виртуального хоста и подводные камни
Хотя эта директива поддерживается в контексте виртуального хоста, её изменения видны для любых более поздних директив конфигурации, в любом вложенном виртуальном хосте.
Настройка виртуальных хостов на Apache для начинающих
В прошлых статьях мы установили и настроили на локальном компьютере сервер Apache. В принципе, на этом можно было бы остановиться, так как сервер находится в рабочем состоянии и его можно спокойно использовать в работе. Но, по личному опыту, могу сказать, что использование только одного хоста localhost не очень удобно при разработке нескольких сайтов, так как для каждого сайта нужно будет создавать в каталоге localhost отдельный каталог и со временем в ней (папке localhost) будет очень трудно разобраться и что-то найти. Да и при тестировании разрабатываемого проекта гораздо удобнее набирать в браузере адрес вида test, чем localhost/test. Поэтому мы приступаем к настройке виртуальных хостов на локальном сервере.
Вообще, существует два способа конфигурирования виртуальных хостов: на основе имени и на основе IP-адреса. Но, так как мы настраиваем локальный сервер и у нас только один IP (кстати, для локалки он 127.0.0.1), то вариант с привязкой к IP нам не подходит и мы будем рассматривать вариант с привязкой к имени.
В прошлой статье я уже упоминал, что в файле конфигурации httpd.conf сервера есть строчка Include conf/extra/httpd-vhosts.conf. Мы ее уже раскомментировали, поэтому собственно и переходим к этому файлу. Найти его можно в папке Apache/conf/extra/.
Дальше в файле идут секции VirtualHost. Как видно из названия, каждая секция описывает настройки каждого виртуального хоста. Обязательно должна быть хотя бы одна такая секция, которая описывает настройки для localhost.
DocumentRoot “D:/server/localhost/www”
ServerName localhost
ErrorLog “D:/server/logs/localhost.error.log”
CustomLog “D:/server/logs/localhost.access.log” common
Директива DocumentRoot в этой секции указывает на папку, к которой будет происходить обращение при вызове адреса localhost.
ServerName как раз содержит имя нашего виртуального хоста, то есть его адрес. Сюда можно вписывать как адреса вида localhost, test, site, так и адреса localhost.ru, test.com, www.site.org.
В ErrorLog и CustomLog мы указываем, где будут хранится логи этого виртуального хоста. Обратите внимание, имеет смысл для каждого хоста добавлять в имя файла лога название этого хоста, чтобы в будущем было легко найти лог требуемого хоста. Эти директивы можно и не указывать, но тогда логи этого виртуального хоста будут храниться в общих логах сервера.
ScriptAlias /cgi-bin/ “d:/server/host_name/cgi-bin”
Создает ссылку на папку скриптов cgi-bin для хоста host_name.
Options Indexes Includes FollowSymLinks
AllowOverride All
Order allow,deny
Allow from all
Настройки директории хоста host_name, их мы разбирали в прошлой статье.
После настройки файла httpd-vhosts.conf проверим правильность его конфигурации. В каталоге D:\server\Apache\bin\ создайте файл httpd-S.cmd с содержимым:
“D:\server\Apache\bin\httpd.exe” –S
pause
После запуска этого файла вы увидите окно с отчетом о проверке, Syntax OK в конце говорит о том, что все настройки в порядке.
Теперь нужно прописать созданные хосты в файл C:\Windows\system32\drivers\etc\hosts. Для этого открываем его текстовым редактором и вносим следующие записи:
Сохраните файл и перезапустите Apache. Попробуйте разместить в каталогах созданных вами виртуальных хостов какие-нибудь тестовые файлы (например index.html) и из браузера открыть хосты по адресам, указанным в директории ServerName каждого хоста.
Если вам приходится часто создавать виртуальные хосты и не очень хочется каждый раз редактировать все эти файлы и перезапускать Apache вручную, создайте в папке сервера (D:\server\) файл createVH.cmd с таким содержимым:
@cls
@rem Получаем текущую папку. Если у вас структура папок сервера как у меня, но он установлен, например на другом диске, укажите здесь вместо %
dp0 путь с нему (например, D:\server\) косая черта в конце обязательна.
@set server_path=%
dp0
:dir_exist
@set /P new_dir=»Enter new VHost name:»
@set /P ip_add=»Enter your IP address:»
@ if exist %server_path%%new_dir% echo «VHost %new_dir% already exist. Please re-enter Vhost name.»
@ if exist %server_path%%new_dir% goto dir_exist
@md %server_path%%new_dir%
Теперь для создания хоста просто запустите этот файл, впишите в ответ имя нового хоста и IP, который будет указываться в секции VirtualHost файла httpd-vhosts.conf. По окончанию работы программа сама закроется. Вам останется только проверить созданный хост, набрав в адресной строке браузера имя, которое вы вписали в программу. Если все успешно прошло, то вы увидите страницу с именем нового хоста.
Обратите внимание, программа рассчитана на то, что структура каталогов сервера соответствует той, которую я указывал в первой статье. Если у вас установлен сервер по другим путям, поправьте файл в соответствии с ними.
Linux.yaroslavl.ru
Основные особенности Apache.
Эти параметры конфигурации управляют настройкой ядра Apache, и всегда доступны.
AccessConfig директива
Синтаксис: AccessConfig имя-файла
Значение по умолчанию: AccessConfig conf/ access.conf
Контекст: конфигурация сервера, virtual host
Состояние: основное
Исторически, этот файл, содержит только разделы, хотя фактически, он может теперь содержать любую директиву сервера, допустимую в контексте конфигурации сервера.
AccessFileName директива
При выдаче документа клиенту сервер ищет файл управления доступом с этим именем в каждом каталоге пути к документу, если файлы управления доступом допускаются для того каталога. Например:
AddModule директива
Сервер может иметь модули, которые были скомпилированы, но активно не используются. Эта директива может применяться для того, чтобы инициализировать использование этих модулей. Сервер поставляется со списком pre-loaded активных модулей; этот список может быть очищен с помощью ClearModuleList директивы.
AllowOverride директива
AuthName директива
Эта директива присваивает каталогу имя как области доступа. Эта область дается пользователю для запроса у него username и пароля. Директива должна использоваться совместно с AuthType и require директивами, и директивами типа AuthUserFile и AuthGroupFile.
AuthType директива
Эта директива выбирает тип идентификации пользователя для каталога. Только Basic в настоящее время реализован. Эта деректива должна использоваться совместно с дерективами AuthName и require, и директивами типа AuthUserFile и AuthGroupFile.
BindAddress директива
Синтаксис: BindAddress saddr
Значение по умолчанию: BindAddress *
Контекст: конфигурация сервера
Состояние: основное
UnixR http сервер может быть настроен на все IP-адреса машины сервера, или только на один IP-адрес. Saddr может иметь одно из следующих значений:
Эта опция может использоваться как альтернативный метод для поддержки виртуальных серверов, вместо использования разделов.
ClearModuleList директива
Синтаксис: ClearModuleList
Контекст: конфигурация сервера
Состояние: основное
Совместимость: ClearModuleList доступен только в Apache 1.2 и выше.
Сервер поставляется со встроенным списком активных модулей. Эта директива очищает список. Применение этой дерективы подразумевает, что список модулей будет затем повторно заполнен с помощью директивы AddModule.
DefaultType директива
Не исключена ситуация, когда сервер получает запрос на документ, mime-тип которого не определен.
Т.к. в ответе сервер должен сообщить клиенту Content-type документа, то в случае неизвестного mime-типа он использует DefaultType. Например:
директива
и используется, чтобы включить группу директив, которые необходимо применить только к указанному каталогу и его подкаталогам. Может исполбзоваться любая директива применимая в контексте каталога. Directory является или полным путем к каталогу, или wild-card строкой. В wild-card строке, «? » соответствует любому одиночному символу, и » * » соответствует любым последовательностям символов. Пример:
Options Indexes FollowSymLinks
Apache 1.2 и выше: Расширенные регулярные выражения могут также использоваться, с добавлением
соответствует каталогам в /www/, имена которых состоят из трех чисел.
для доступа к документу /home/web/dir/doc.html будут выполнены следующие шаги:
Order Deny,Allow
Deny from All
и затем отмените это для каталогов, которые Вы хотите сделать доступными. См. Советы По Защите для более полной информации.
Разделы обычно применяются в access.conf файле, но они могут использоваться в любом файле конфигурации. директивы не могут быть вложенными, и не могут появляться в разделе.
DocumentRoot директива
Синтаксис : DocumentRoot каталог-имя-файла
Значение по умолчанию: DocumentRoot /usr/local/etc/httpd/htdocs
Контекст : конфигурация сервера, virtual host
Состояние : основное
Эта директива устанавливает каталог, из которого httpd будет брать файлы. Если это не согласовано директивой вроде Alias, сервер конкатенирует путь от запрошенного URL до корня документа, чтобы определить путь к документу. Пример:
теперь обращение к http://www.my.host.com/index.html будет транслироваться в /usr/web/index.html.
ErrorDocument директива
В случае проблемы или ошибки, Apache может быть конфигурирован так, чтобы выполнить одно из четырех действий:
Первое действие выполняется по умолчанию, в то время как действия 2-4 должны быть сконфигурированы директивой ErrorDocument, которая сопровождается HTTP-кодом_ответа и сообщением или URL.
Сообщения в этом контексте начинаются с одиночной кавычки («), которая не включается в сообщение непосредственно. Apache будет иногда предлагать дополнительную информацию относительно проблемы/ошибки.
URLs может начинаться с наклонной черты вправо (/) для локального URLs, или быть полным URL, который поможет пользователю решить проблему. Примеры:
ErrorDocument 500 http://foo.example.com/cgi-bin/tester
ErrorDocument 404 /cgi-bin/bad_urls.pl
ErrorDocument 401 /subscription_info.html
ErrorDocument 403 «Извините, сегодня доступ Вам закрыт
ErrorLog директива
Синтаксис : ErrorLog имя_файла
Значение по умолчанию: ErrorLog logs/error_log
Контекст : конфигурация сервера, virtual host
Состояние : основное
Директива файла регистрации ошибок устанавливает имя файла, в котором сервер регистрирует любые ошибки с которыми он сталкивается. Если имя файла не начинается с символа слеш (/), то путь к файлу устанавливается относительно ServerRoot. Пример:
эта директива отключает регистрацию ошибок.
ЗАЩИТА: См. документ «Советы по конфигурации защиты сервера» для информации о том, почему ваша защита может быть сломана, если каталог, в котором хранятся logfiles доступны для записи всем, а не только пользователю под которым стартует сервер.
Параметр имя-файла должен включить имя файла, или wild-card, в котором «?» соответствует любому одиночному символу, а «*» соответствует любой последовательности символов. Расширенные регулярные выражения также могут использоваться, с добавлением символа
будет соответствовать наиболее общим графическим форматам Internet.
Group директива
Синтаксис : Group unix-группа
Значение по умолчанию: Group #-1
Контекст : конфигурация сервера, virtual host
Состояние : основное
Рекомендуется, чтобы Вы создали новую группу специально для выполнения сервера. Некоторые администраторы используют пользователя nobody, но это не всегда возможно или желателено.
Обратите внимание: если Вы запускаете сервер как non-root пользователь, то Вы не сможете изменить его группу на заданную директивой Group, и он будет продолжать выполняться под группой первоначального запуска.
ЗАЩИТА: См. User для обсуждения вопросов защиты.
HostNameLookups директива
Синтаксис : HostNameLookups boolean
Значение по умолчанию: HostNameLookups on
Контекст : конфигурация сервера, virtual host
Состояние : основное
Эта директива подключает поиск в DNS, чтобы host имена могли регистрироваться в log-файлах. Наличие этой директивы позволяет использовать имена в блоках для управления доступом.
IdentityCheck директива
Синтаксис : IdentityCheck boolean
Значение по умолчанию: IdentityCheck off
Контекст : конфигурация сервера, virtual host
Состояние : основное
Этой информации нельзя доверять, разве-что для элементарной трассировки.
Обратите внимание, что это может вызывать серьезные временные задержки при обращении к вашему серверу, так как для каждого запроса необходимо выполнить поиск. Когда работает firewalls, каждый поиск, вероятней всего, будет неудачным и добавлять за счет этого 30 секунд ожидания к каждой передаче. Т.о. это лучше отключить для web-сервера, доступного в Internet.
Тест в директиве это одна из двух форм:
разделы допускают вложеннность.
KeepAlive
Синтаксис: (Apache 1.1) KeepAlive максимальное-кол.запросов
Значение по умолчанию: (Apache 1.1) KeepAlive 5
Синтаксис: (Apache 1.2) KeepAlive on/off
Значение по умолчанию: (Apache 1.2) KeepAlive on
Контекст : конфигурация сервера
Состояние : основное
Совместимость : KeepAlive доступен только в Apache 1.1 и выше.
Эта директива включает Keep-Alive поддержку.
Apache 1.2 и выше: Установка в «on» включает постоянно открытое соединение, «off» отключает. См. также MaxKeepAliveRequests директиву.
KeepAliveTimeout
Синтаксис : KeepAliveTimeout секунд
Значение по умолчанию: KeepAliveTimeout 15
Контекст : конфигурация сервера
Состояние : основное
Совместимость : KeepAliveTimeout доступен только в Apache 1.1 и выше.
Заданное число секунд Apache будет ждать следующий запрос перед закрытием соединения.
Listen
Синтаксис : Listen [IP адрес:] номер порта
Контекст : конфигурация сервера
Состояние : основное
Совместимость : Listen доступен только в Apache 1.1 и выше.
Listen директива настраивает Apache на более чем один IP адрес или порт; по умолчанию он отвечает на запросы на всех интерфейсах IP, но только на порте, заданном директивой Port.
директива
Apache 1.2 и выше: Расширенные регулярные выражения могут также использоваться, с добавлением
соответствует URLs, которые содержат подстроку «/extra/data» или «/special/data».
Применение Location особенно эффективно когда она объединена с SetHandler директивой. Для примера, чтобы включить просмотр статуса сервера только в браузере с foo.com, Вы могли бы использовать:
MaxClients директива
Синтаксис : MaxClients число
Значение по умолчанию: MaxClients 256
Контекст : конфигурация сервера
Состояние : основное
MaxClients директива устанавливает ограничение числа одновременно обслуживаемых запросов; не более чем это число порожденнных процессов сервера будут созданы.
MaxKeepAliveRequests
Синтаксис : MaxKeepAliveRequests число
Значение по умолчанию: MaxKeepAliveRequests 100
Контекст : конфигурация сервера
Состояние : основное
Совместимость : Доступна только в Apache1.2 и выше.
MaxKeepAliveRequests директива ограничивает число допустимых запросов на одно соединение когда KeepAlive включен. Если она установлена в «0», допускаются неограниченные запросы. Мы рекомендуем, чтобы эта установка была по возможности выше для большей производительности сервера.
MaxRequestsPerChild директива
Синтаксис : MaxRequestsPerChild номер
Значение по умолчанию: MaxRequestsPerChild 0
Контекст : конфигурация сервера
Состояние : основное
Установка MaxRequestsPerChild в ненулевое значение имеет два полезных эффекта:
MaxSpareServers директива
Синтаксис : MaxSpareServers число
Значение по умолчанию: MaxSpareServers 10
Контекст : конфигурация сeрвера
Состояние : основное
MinSpareServers директива
Синтаксис : MinSpareServers число
Значение по умолчанию: MinSpareServers 5
Контекст : конфигурация сервера
Состояние : основное
Options директива
Директива Options опредиляет, какие особенности сервера являются доступными в данном каталоге.
Обычно, если несколько опций директивы Options применяются к каталогу, а затем наиболее специфический применяются к его подкаталогу, то опции не обьединяются. Однако, если любой опции в директиве Options предшествует символ «+» или «-«, то опции обьединяются. Любые опции, которым предшествует «+» будут добавлены к опциям включенным в настоящее время, и любые опции, которым предшествует «-» будут удалены из включенных опций.
Options Indexes FollowSymLinks
Options Includes
PidFile директива
Синтаксис : PidFile имя-файла
Значение по умолчанию: PidFile logs/httpd.pid
Контекст : конфигурация сервера
Состояние : основное
PidFile директива устанавливает файл, в котором сервер записывает идентификатор процесса daemon. Если имя файла не начинается с символа (/), имя будет принято относительно ServerRoot. PidFile используется только в standalone режиме.
Часто бывает необходимо изменить конфигурацию сервера, т.е., чтобы он перечитал файлы конфигурации. Этого можно добиться посылкой сигнала SIGHUP (-1) процессу с идентификатором, содержащимся, в PidFile.
На PidFile распространяются тем же предупреждения относительно защиты, что и на log-файлы.
Port директива
Синтаксис : Port номер-порта
Значение по умолчанию: Port 80
Контекст : конфигурация ссервера
Состояние : основное
Установка Port не воздействует на то, на каком порте работает VirtualHost. Директива VirtualHost непосредственно используется для этого.
Действие директивы Port подобно действию ServerName директивы. ServerName и Port вместе определяют канонический адрес сервера.
Если Вы не можете использовать порт 80, выберите любой другой неиспользуемый порт. Пользователи non-root должны будут выбрать порт номером выше чем 1023, типа 8000.
ЗАЩИТА: если Вы запускаете сервер как root, убедитесь, что не установили User в root. Если Вы запускаете сервер как root, пока устанавливаются соединения, защита вашего сайта открыта для атаки.
require директива
Эта директива устанавливает пользователей имеющих доступ к каталогу. Допустимый синтаксис:
Require должена сопровождаться AuthName и AuthType директивами, и директивами типа AuthUserFile и AuthGroupFile (определяющие пользователей и группы) чтобы работать правильно.
ResourceConfig директива
Синтаксис : ResourceConfig имя-файла
Значение по умолчанию: ResourceConfig conf/srm.conf
Контекст : конфигурация сервера, virtual host
Состояние : основное
RLimitCPU директива
Синтаксис : RLimitCPU # или ‘max’ [# или ‘max’]
Значение по умолчанию: Возврат к исходному состоянию используя значения по умолчанию операционной системы
Контекст : конфигурация сервера, virtual host
Состояние : основное
Совместимость : RLimitCPU доступен только в Apache 1.2 и выше
Получает 1 или 2 параметра. 1-й параметр устанавливает ограничение ресурса программного обеспечения для всех процессов и 2-й параметр устанавливает максимальное ограничение ресурса. Любой параметр может быть числовой или «max», чтобы указать серверу, что ограничение должно быть установлено к максимуму, позволенному конфигурацией операционной системы. Подъем максимального ограничения ресурса требует, чтобы сервер выполнилась под root, или в начальной фазе запуска.
Ограничения ресурса ЦЕНТРАЛЬНОГО ПРОЦЕССОРА сказываются на процессе.
RLimitMEM директива
Синтаксис : RLimitMEM # или ‘max’ [# или ‘max’]
Значение по умолчанию: Возврат к исходному состоянию используя значения по умолчанию операционной системы
Контекст : конфигурация сервера, virtual host
Состояние : основное
Совместимость : RLimitMEM доступен только в Apache 1.2 и выше
Получает 1 или 2 параметра. 1-й параметр устанавливает ограничение ресурса программного обеспечения для всех процессов и 2-й параметр устанавливает максимальное ограничение ресурса. Любой параметр может быть числовой, или max, чтобы указать серверу, что ограничение должно быть установлено к максимуму, допустимому конфигурацией операционной системы. Подъем максимального ограничения ресурса требует, чтобы сервер выполнился с полномочиями root, или в начальной фазе запуска.
Ограничения ресурса Памяти выражены в байтах на процесс.
RLimitNPROC директива
Синтаксис : RLimitNPROC # или ‘max’ [# или ‘max’]
Значение по умолчанию: Возврат к исходному состоянию используя значения по умолчанию операционной системы
Контекст : конфигурация сервера, virtual host
Состояние : основное
Совместимость : RLimitNPROC доступен только в Apache 1.2 и выше
Получает 1 или 2 параметра. 1-й параметр устанавливает ограничение ресурса программного обеспечения для всех процессов и 2-й параметр устанавливает максимальное ограничение ресурса. Любой параметр может быть число, или max, чтобы указать серверу, что ограничение должно быть установлено к максимуму, допустимому конфигурацией операционной системы. Подъем максимального ограничения ресурса требует, чтобы сервер работал с root-полномочиями, или в начальной фазе запуска.
Управляет ограничением процессов числом процессов на пользователя.
Обратите внимание: Если CGI процессы выполняются под тем же userids что и сервер, эта директива будет ограничивать число процессов, которые сервер непосредственно может создавать. Доказательством этой ситуации будет cannot fork сообщения в error_log.
Satisfy
ScoreBoardFile директива
Синтаксис : ScoreBoardFile имя-файла
Значение по умолчанию: ScoreBoardFile logs/apache_status
Контекст : конфигурация сервера
Состояние : основное
Вы можете увеличить быстродействие сервера размещая ScoreBoardFile на RAM-диске. Но будьте внимательны, Вы должны учитывать те же предупреждения относительно размещения ScoreBoardFile, что и к log-файлам, с точки зрения защиты.
SendBufferSize директива
Синтаксис : SendBufferSize байты
Контекст : конфигурация сервера, virtual host
Состояние : основное
ServerAdmin директива
Синтаксис : ServerAdmin email-адрес
Контекст : конфигурация сервера, virtual host
Состояние : основное
ServerAdmin устанавливает адрес электронной почты, который сервер включает в любые сообщения об ошибках, которые он возвращает клиенту.
Для этой установки стоит выделить специальный адрес, например.
поскольку пользователи не всегда контролируют то, что они говорят о сервере!
ServerAlias директива
ServerAlias директива устанавливает альтернативные имена хостов, для использования с virtual host базирующихся на Host-header.
ServerName директива
Синтаксис : ServerName полное имя домена
Контекст : конфигурация сервера, virtual host
Состояние : основное
ServerName директива устанавливает hostname сервера; это используется только для переадресации URLs. Если она не определена, то сервер пытается вывести ее из собственного IP-адреса, но это может работать не надежно, или может не возвращать привилегированное hostname. Например:
будет работать, если фактическое имя машины будет что-то вроде monster.wibble.com.
ServerPath директива
Синтаксис : ServerPath имя пути
Контекст : virtual host
Состояние : основное
Совместимость : ServerPath доступно только в Apache 1.1 и выше.
ServerPath директива устанавливает наследование имя-пути URL для хоста, чтобы использовать virtual host базирующийся на Host-header.
ServerRoot директива
ServerType директива
Синтаксис : ServerType тип
Значение по умолчанию: ServerType standalone
Контекст : конфигурация сервера
Состояние : основное
ЗАЩИТА : если Вы параноидально беспокоитесь о защите, запускайтесь в inetd режиме, хотя он тоже не гарантирует безопасность. Во всяком случае, сейчас большинство администраторов счастливо используют режим standalone, просто inetd более устойчив к атакам.
StartServers директива
Синтаксис : StartServers число
Значение по умолчанию: StartServers 5
Контекст : конфигурация сервера
Состояние : основное
StartServers директива устанавливает число порожденнных процессов сервера при запуске. Так как число процессов динамически контролируется в зависимости от загрузки, то обычно нет причин корректировать этот параметр.
TimeOut директива
Синтаксис : TimeOut число
Значение по умолчанию: TimeOut 300
Контекст : конфигурация сервера
Состояние : основное
Директива TimeOut в настоящее время определяет количество времени, которое Apache будет ожидать три вещи:
В будующем планируется сделать их отдельно настраиваемыми. Таймер, использовавший раньше по умолчанию значение 1200, был понижен до 300, что все еще является избыточным в большинстве случаев. Это не следует установливать ниже, потому что могут все еще быть лишние места в коде, где таймер не сбросится, после отправки пакета.
User директива
Синтаксис : User unix-userid
Значение по умолчанию: User #-1
Контекст : конфигурация сервера, virtual host
Состояние : основное
Директива User устанавливает userid, под которым сервер отвечает на запросы. Чтобы правильно использовать эту директиву, сервер должен быть запущен как root. Unix-userid это одно из:
User не должен иметь таких привилегий, которые могут привести к нарушению безопасности системы, и аналогично, User не должен иметь возможности выполнить код, который не предназначен для запросов httpd. Рекомендуется, чтобы Вы завели нового пользователя и группу специально для работы сервера. Некоторые администраторы используют пользователя nobody, но это не всегда возможно или желательно.
Примечания: Если Вы запускаете сервер как non-root пользователь, то сервер не сможет изменить свои полномочия на привелегии менее привилегированного пользователя, и будет продолжать работу как тот первоначальный пользователь. Если Вы запускаете сервер как root, то родительский процесс продолжит выполнятся как root, что нормально.
ЗАЩИТА: Не установите User (или Group) в root, если Вы не знаете точно, что Вы делаете, и какая Вам грозит опасность.
директива
ServerAdmin webmaster@host.foo.com
DocumentRoot /www/docs/host.foo.com
ServerName host.foo.com
ErrorLog logs/host.foo.com-error_log
TransferLog logs/host.foo.com-access_log
Все VirtualHost должны соответствовать разным IP-адресам или различном host-именам для сервера, в последнем случае машина сервера должна быть конфигурирована так, чтоб принимать IP пакеты для нескольких адресов. (Если машина не имеет нескольких сетевых интерфейсов, это можно поправить с помощью команды ifconfig (если ваша OS поддерживает это), или патчами ядра вроде VIF (для SunOS(TM)4.1.x)).
Специальное имя _default_ может быть определено, когда этот virtual host будет соответствовать любому адресу IP явно не указанному в объявлении другого virtual host. Если объявление _default_ virtual host отсутствует в конфигурации сервера и запрос не подходит ни под какой из известных virtual host, то для ответа используется основной сервер.
ЗАЩИТА : См. документ советов по защите для деталей о том, почему ваша защита могла быть сломана если каталог log-файлов доступен для записи любому другому пользователь, кроме пользователя, под которым стартует сервер.