Вторник, 07.05.2024, 16:15
Приветствую Вас Гость

Mandriva Linux

Меню сайта
Форма входа
Категории раздела
Apache [1]
Поиск
Главная » Статьи » Web Server » Apache

Сервер Apache - Настройка Часть 1.
Сервер Apache имеет три файла конфигурации, они находятся в каталоге /usr/local/etc/httpd/conf. Эти файлы позволяют настроить все стороны функционирования сервера. После того как вы отредактируете эти файлы в соответствии с вашими требованиями, можете запускать сервер. Никакой другой настройки не требуется.
Прежде всего нужно перейти в каталог, содержащий файлы конфигурации, /usr/local/etc/httpd/conf. Здесь вы найдете три файла конфигурации.
Поскольку эти файлы должны служить для вас примером, не стоит сразу их редактировать; сначала сделайте копии, а уже затем приступайте к настройке сервера:
$for I in *-dist
>do
>mycopy = basename $i √ dist
>cp $i $mycopy
>done
Теперь у вас должны быть три файла, имеющие расширение .conf. В табл. 3-1 приведены имена этих файлов и объяснено назначение каждого из них. У вас также по-прежнему должны оставаться исходные файлы ≈ dist; не удаляйте их на тот случай, если вы допустите ошибку в процессе настройки и вам придется вернуться к ним за справкой.

Таблица 3-1. Файлы конфигурации Apache HTTPd

Имя файла

Назначение

Httpd.conf

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

Srm.conf

Карта ресурсов сервера, указывает демону HTTPd порядок предоставления файлов.

Access, conf

Файл конфигурации доступа содержит информацию о том, кто имеет право осуществлять доступ к вашему серверу.

 
Рассмотрим основные изменения в файлах конфигурации, которые необходимо сделать, прежде чем запускать сервер. Мы также рассмотрим наиболее полезные из предлагаемых сервером Apache опций, сделав акцент на тех, которые перечислены в файлах конфигурации. Сервер Apache имеет огромное число редко используемых опций, рассмотрением которых мы заниматься не будем. Полную информацию о возможностях настройки сервера можно получить, прочитав официальную документацию на сервере Apache: http://www.apache.org/docs/. Теперь перейдите в каталог /usr/local/etc/httpd/conf (или в тот каталог, в котором вы установили сервер Apache) и следуйте инструкциям.
httpd.conf: файл конфигурации сервера
Файл httpd.conf содержит конфигурацию сервера. Откройте его в редакторе и измените указанные ниже строки, если это необходимо. Приведенные ниже описания послужат вам в качестве указаний. Они не являются исчерпывающими инструкциями, однако затрагивают те изменения, которые вам, возможно, придется внести, чтобы заставить сервер работать. Единственной строкой, которую вы обязаны, изменить, является строка, начинающаяся с ⌠ServerAdmin■. Остальным директивам по умолчанию присвоены разумные значения, поэтому взгляните на них, чтобы убедиться в правильности значений, но вносить в них изменения вряд ли потребуется.
ServerType
Для этой директивы значением по умолчанию является ServerType standalone. Серверы, работающие в автономном режиме (standalone), запускаются из загрузочных сценариев при запуске системы. Такая установка рекомендуется для улучшения производительности.
Серверу Apache (как и большинству традиционных серверов UNIX) для каждого соединения требуется запускать отдельную копию. Система UNIX оптимизирована специально для такого поведения, и накладные расходы на создание процессом собственной копии невелики. После запуска сервер, работающий в автономном режиме, начинает прослушивание на предмет наличия запросов на соединение. Обнаружив такой запрос, сервер ⌠раздваивается■ для его обслуживания. Когда копия заканчивает работу, она завершается. Эту основную модель можно изменить при помощи директив StartServers и MaxServers, как объясняется ниже.
В качестве альтернативы режиму standalone можно воспользоваться услугами демона inetd. В системах UNIX inetd представляет собой суперсервер. Большинство сетевых служб используется относительно редко по сравнению с десятками соединений в секунду, обслуживаемых занятыми HTTP-серверами. Даже такая популярная служба, как Telnet, обычно осуществляет не более одного соединения каждые несколько минут. Если для каждой из возможных сетевых служб запускать отдельный автономный сервер, это будет равносильно неоправданной растрате таких ценных системных ресурсов, как процессорное время и оперативная память. Решением этой проблемы для UNIX является использование демона inetd. Файл /etc/inetd.conf содержит список сетевых служб, за которые отвечает inetd. Этот демон использует для определения номера сетевого порта, связанного с каждой из конкретных служб, файл /etc/services и производит прослушивание этих портов на предмет появления запросов на соединения. При появлении запроса демон запускает для его обработки соответствующий сервер.
Хотя такой механизм идеален для сравнительно редко используемых служб, протокол HTTP не следует этой модели. Поскольку для каждой HTML-страницы, для каждого встроенного изображения и любого другого объекта, запрашиваемого пользователем, требуется отдельное соединение и, следовательно, отдельная копия сервера, то каждую минуту, если не каждую секунду, будет осуществляться несколько новых соединений.
Кроме того, сервер Apache должен считывать информацию из файла конфигурации и производить ее синтаксический разбор при каждом запуске своей копии демоном inetd. Такие накладные расходы неприемлемы, если ожидается, что ваш Web-узел будет достаточно занятым. Практически для каждого HTTP-сервера следует использовать в этой директиве режим standalone.
Port
В этой директиве задается номер сетевого порта, на котором будет работать ваш сервер, если он запущен в автономном режиме (если используется inetd, то номер порта следует задать в файле /etc/services).
Значением по умолчанию для этой директивы является Port 80. К этому порту Web-броузеры пытаются подключиться по умолчанию, и он является стандартным портом для протокола HTTP и рекомендуется для использования на основном сервере вашего Web-узла. Если вы хотите запустить сервер на этом порту или на любом другом, номер которого меньше 1024, то вам потребуются привилегии суперпользователя (root).
Если вы не обладаете в этой системе привилегиями суперпользователя, то все-таки остается возможность запустить Web-сервер на порту с номером, превосходящим 1024. Вам только придется объявить об этом и включить номер порта в адрес URL; обычно используют номера 8000 или 8080. В дальнейшем предполагается, что вы обладаете правами суперпользователя в своей системе, и сервер запущен на порту, принятом по умолчанию.
HostnameLookups
В целях наблюдения за деятельностью пользователей сервер Apache ведет серию журнальных файлов, которые мы обсудим позднее. В одном из них ведется учет компьютеров, осуществивших доступ к серверу. Директива HostnameLookups указывает, записывается ли в журнальный файл имя компьютера (например, macl.shoop.com) или только его IP-адрес (например, 152.2.22.81). По умолчанию сервер сохраняет имя компьютера, но если ожидаемый объем графика очень велик, отключение опции HostnameLookups позволит немного уменьшить нагрузку на сервер. Это делается простым изменением строки на ⌠HostnameLookups off■.
User и Group
Эти параметры задают действительные идентификаторы пользователя и группы, которые присваиваются серверу, работающему в автономном режиме. (Если используется inetd, большинство систем UNIX требует указать идентификатор пользователя в файле /etc/inetd-conf). Можно задавать как имена, так и их числовые эквиваленты, которые можно найти в файлах /etc/passwd и /etc/group соответственно.
По умолчанию в качестве имени пользователя принимается nobody, что является превосходным выбором с точки зрения защиты информации. Такое имя гарантирует, что Web-сервер получит доступ только к тем файлам, к которым разрешен доступ на чтение для всех пользователей. Альтернативой является создание в системе специального пользователя и использование для работы Web-сервера его идентификатора. Какой бы идентификатор ни использовался, следует убедиться, что для него не существует доступа к системе через интерфейс командной строки. Ни в коем случае нельзя запускать сервер с привилегиями суперпользователя (root).
В качестве идентификатора группы следует использовать идентификатор какой-нибудь нейтральной группы, имеющейся в системе. Часто используется группа news. Либо можно специально создать для сервера новую группу.
Обратите внимание, что для начинающего вебмастера именно эти директивы обычно представляют трудности. Если указанные пользователь и группа не существуют в системе, сервер не будет работать. Для директивы Group, например, по умолчанию принято значение ≈1, что во многих системах не является разрешенным идентификатором группы.
ServerAdmin
Это официальный электронный адрес вебмастера вашего Web-узла. Обычно используется адрес в форме WebMaster@ваш_cepвep, где ваш_сервер является хорошо известным именем вашего сервера. При этом адрес останется неизменным, даже если сменится вебмастер.
Этот адрес необходимо добавить в поддерживаемую почтовым сервером базу данных псевдонимов, находящуюся в файле /etc/aliases. Воспользовавшись привилегиями суперпользователя, добавьте в этот файл следующую строку:
webmaster: name
Вместо слова имя введите регистрационное имя пользователя, который будет заниматься обслуживанием вашего Web-сервера. Затем выполните следующую команду:
# newaliases
В результате база данных псевдонимов будет перестроена.
ServerRoot
В этой директиве задается базовый каталог, в котором будет установлено программное обеспечение HTTP-сервера Apache. По умолчанию это каталог /usr/local/etc/httpd. Если вы до сих пор следовали нашим инструкциям, вам не придется менять эту строку.
BindAddress
Эта директива используется только для компьютеров, имеющих более одного IP-адреса. С ее помощью можно устанавливать, прослушивание какого из IP-адресов компьютера сервер будет производить на предмет поступления запросов. Большинство компьютеров имеют один IP-адрес.
Вопросы настройки компьютеров с большим числом адресов и несколькими серверами обсуждаются ниже, в разделе ⌠Развернутая конфигурация■ на стр. 108. По умолчанию эта директива закомментирована, и сервер производит прослушивание всех адресов компьютера.
ErrorLog и TransferLog
При помощи этих двух директив задается местоположение журнальных файлов, в которых регистрируются ошибки и попытки доступа к серверу соответственно. Сервер подразумевает, что имена, начинающиеся не с косой черты (/), отсчитываются от каталога ServerRoot.
Эти журнальные файлы весьма просты. В файле, указанном в директиве ErrorLog, сервер сохраняет сообщения диагностики, включая сообщения об ошибках, выдаваемые сценариями CGI. В файле, указанном в директиве TransferLog, сервер сохраняет все запросы клиентов. Если включена описанная выше опция HostnameLookups, то вместе с запросами регистрируются имена компьютеров. Если опция выключена, то регистрируются только IP-адреса компьютеров клиентов.
Вряд ли у вас возникнет необходимость (или желание) изменять значения в этих директивах.
PidFile и ScoreBoardFile
Если сервер работает в автономном режиме, то в директиве PidFile задается имя файла, в котором исходный процесс-сервер регистрируется, указывая свой идентификационный номер. Эту информацию можно использовать для завершения или перезапуска сервера.
Директива ScoreBoardFile позволяет серверу Apache следить за собственной производительностью. Об использовании директивы ScoreBoardFile мы подробнее поговорим при рассмотрении модуля Status. Вряд ли у вас возникнет необходимость (или желание) изменять значения и в этих директивах.
ServerName
В этой строке должно стоять официальное имя вашего сервера в том виде, в котором оно появляется в строке URL (то есть http://www.ИMЯ_вaшeго_сервера/). Это должно быть имя компьютера, зарегистрированное в системе имен серверов вашей организации или провайдера.
CacheNegotiatedDocs
Эта директива предназначена для пользователей, работающих через прокси-сервер ≈ сервер, собирающий для них информацию, хранящий ее у себя и передающий им сохраненную копию вместо того, чтобы запрашивать в Интернете новую копию. Эта директива позволяет прокси-серверу кэшировать договорные документы, то есть документы, не получаемые динамически, такие как вывод сценариев CGI или сгенерированная сервером индексная страница. Обычно прокси-серверы не кэшируют такие документы, поскольку велика вероятность их изменения. По умолчанию эта директива отключена (закомментирована при помощи символа ⌠#■), и, вероятнее всего, вам не понадобится ее трогать.
Timeout
Это промежуток времени в секундах, в течение которого сервер ждет продолжения недополученного запроса или продолжает попытки возобновления приостановленной передачи ответа. Если у вас медленное соединение с Интернетом или вам приходится передавать большие файлы, увеличьте это значение. В противном случае, 20 минут является вполне достаточным временем ожидания реакции медленного клиента или медленного соединения.
KeepAlive и KeepAliveTimeout
Характеристики KeepAlive являются свойствами протокола HTTP I.I (который до сих пор имеет статус предложения), позволяющими ускорить обработку запросов. HTTP 1.0 при каждом запросе на передачу объекта создается новое соединение между клиентом и сервером. В сервере Apache реализована свойственная протоколу HTTP 1.1 возможность KeepAlive, что означает возможность запрашивать несколько объектов в рамках одного соединения. Например, раньше передача Web-страницы с четырьмя встроенными изображениями потребовала бы пять отдельных соединений, а с использованием KeepAlive все последовательные запросы производятся в рамках одного соединения. Очевидно, что это сокращает время обработки запросов сервером. Конечно, клиент должен уметь производить такие специальные запросы.
Значением по умолчанию для KeepAlive является 5 ≈ максимальное число запросов в рамках одного соединения. Когда значение этого параметра равно 5, наблюдается очевидное увеличение производительности. Чтобы отключить эту возможность, установите параметр KeepAlive равным нулю. Параметр KeepAliveTimeout отражает промежуток времени между последовательными запросами. Другими словами, если клиент в рамках одного соединения производит три запроса, а затем в течение нескольких секунд запросов от него не поступает, сервер считает, что третий запрос был последним. По умолчанию принимается значение 15 секунд.
StartServers
Обратите внимание, что директива StartServers в файле httpd.conf стоит после директив MinSpareServers и MaxSpareServers, однако понять значение директив Min- и MaxSpareServers значительно легче, если сначала разобраться с директивой StartServers.
Когда выбирается автономный (standalone) режим работы сервера (ServerType) и для параметра StartServers задается значение, большее 1 (по умолчанию принимается значение 5), происходит коренное изменение работы сервера. Вместо запуска одного экземпляра сервер при старте создает несколько собственных копий, при этом образуется пул серверов.
Исходная копия сервера выступает в качестве планировщика для всех серверов в пуле, принимая соединения и передавая их свободным копиям. Теоретически, такая стратегия ускоряет процесс обслуживания запросов, снижая накладные расходы. На практике, однако, некоторые вебмастеры утверждают, что этим эффектом можно пренебречь, если только сервер не является очень загруженным (более 100 000 запросов в день).
Пока что можете оставить в этой строке значение по умолчанию, а позже поэкспериментировать с этой директивой, чтобы найти оптимальную установку для вашего Web-сервера.
MaxSpareServers и MinSpareServers
Если число поступающих к вам запросов превышает число серверов в пуле, заданное параметром StartServers, буфер серверов увеличивается для обслуживания запросов. Эти дополнительные процессы-серверы не завершаются после обработки запроса, ради которого они были запущены; они остаются в памяти. Директива MaxSpareServers позволяет настраивать число свободных серверов, находящихся в пуле. Если их больше, чем указано в директиве MaxSpareServers, то лишние процессы завершаются. Аналогично, если свободных серверов в пуле меньше, чем допускает директива MinSpareServers, то в преддверии наплыва запросов создаются дополнительные копии сервера. Опять-таки, изменение этих настроек мало отражается на работе большинства Web-серверов.
MaxClients
Поскольку Web-серверы обрабатывают большое количество запросов от многочисленных клиентов, это может привести к запуску такого количе-
ства серверов, что компьютер перестанет справляться с нагрузкой. Директива MaxClients устанавливает максимальное число копий сервера, которые могут выполняться одновременно. Когда достигается этот предел (по умолчанию ≈ 150), новые запросы получают отказ. Если вам не хочется отказывать пользователям, не устанавливайте слишком маленькое значение. Медленный ответ все-таки лучше, чем отсутствие какого-либо ответа вообще.
MaxRequestsPerChild
В этой директиве задается время жизни любого отдельного сервера в пуле серверов. Обработав установленное здесь количество запросов (по умолчанию ≈ 30), копия сервера завершается, а вместо нее запускается новая. В большинстве систем изменение этого параметра не дает заметного эффекта.
ProxyRequests и директивы Cache
Как уже было отмечено, прокси-серверы действуют в качестве посредников между клиентами и настоящими серверами, располагающими запрашиваемой клиентом информацией. В разделе ⌠Развернутая конфигурация■ мы шаг за шагом рассмотрим процесс настройки прокси-сервера. Пока оставьте директиву ProxyRequests и разнообразные директивы Cache закомментированными.
Listen
Использование виртуальных серверов позволяет придать адресу URL такой вид, будто он указывает на отдельный узел, даже если в действительности за ним стоит только часть большого сервера. Например, на сервере www.webstores.com может иметься раздел для информации корпорации ShoopSoft. Традиционно адрес URL выглядел бы, как http:// www.webstores.com/shoopsoft/. С использованием механизма виртуальных серверов раздел, принадлежащий корпорации, мог бы получить адрес URL вида: http://www.shoop.com/, как будто у корпорации есть в Интернете свой собственный Web-сервер.
Установка виртуальных серверов подробно обсуждается в разделе ⌠Развернутая конфигурация■. Пока что не изменяйте строки, относящиеся к директивам VirtualHosts.
Закончим настройку
Проверьте еще раз файл access, conf и убедитесь, что определены все необходимые директивы. Затем сохраните файл и переходите к следующему файлу конфигурации: srm.conf.
srm.conf: карта ресурсов сервера
Карта ресурсов сервера, представляющая собой файл /usr/local/etc/httpd/ conf/srm.conf, указывает, откуда и каким образом сервер Apache должен брать файлы для передачи пользователям. Она позволяет преобразовать абстрактный мир адресов URL, поступающих серверу от клиентов, в реальные файлы и каталоги на компьютере, на котором работает сервер.
Откройте этот файл в редакторе и замените значения по умолчанию значениями, подходящими для вашего Web-сервера. Как и в файле httpd.conf, каждая директива и указанное в ней значение должны находиться в отдельной строке. Пустые строки и строки, начинающиеся с символа номера (#), игнорируются сервером.
Как и для файла httpd.cnf, большинство значений являются приемлемыми, поэтому сейчас вам вряд ли понадобится вносить значительные изменения. Для начала можно вообще оставить файл в исходном виде. Однако из всех файлов конфигурации наиболее важно понимать назначение именно файла srm.conf, поскольку информационное содержимое Web-узла почти полностью организуется и управляется с его помощью.
DocumentRoot
В этой директиве задается каталог, из которого берутся передаваемые клиентам документы. По умолчанию принимается каталог /usr/local/etc/ httpd/htdocs. Можно предоставлять клиентам и файлы, находящиеся в других каталогах, ≈ для этого используются символьные ссылки.
UserDir
В этой директиве задается название подкаталога в домашнем каталоге пользователя, из которого берутся документы в том случае, если вы решите включить возможность пользовательских каталогов. По умолчанию принимается название каталога public_html. Если вам не требуется использовать возможность пользовательских каталогов, следует указать
UserDir DISABLED
Более подробно вопросы пользовательских каталогов и их отображение сервером будут рассмотрены ниже в разделе ⌠Планировка Web-пространства■.
Directorylndex
Эта директива позволяет задать название документа, возвращаемого по запросу, который не содержит в строке URL названия документа. Например, в адресе URL http://www.shoop.com/ отсутствует название документа, поэтому будет возвращен документ, указанный в директиве Directorylndex. Поскольку по умолчанию принимается название index.html, сервер передаст клиенту документ index.html из каталога DocumentRoot на сервере.
В директиве Directorylndex можно задать несколько имен файлов. Если первый документ, указанный в строке, не найден в каталоге, то сервер ищет следующий и, в случае успеха, передает его клиенту. Это особенно полезно при мультиплатформной разработке, поскольку компьютеры, оснащенные системами, основанными на DOS, не поддерживают расширения имен файлов более, чем из трех символов. Например, чтобы разрешить в качестве индексных страниц предавать файлы index.html или index.htm, поместите в строку Directorylndex следующие значения:
Directorylndex index.html index.htm
В этом примере, если в одном и том же каталоге присутствуют файлы index.html и index.htm, в качестве индексной страницы будет передан файл index.html, поскольку он стоит в списке первым.
Вам следует создать файл index.html (или файл с другим именем, в зависимости от того, как вы назовете свои индексные страницы) в каталоге DocumentRoot как для Web-узла, так и для основных разделов с документами (и, например, для домашних страниц пользователей). Эта настройка обеспечивает простой интерфейс пользователям, которым не нужно помнить название конкретного документа.
Она также предоставляет вам важный уровень защиты информации. По умолчанию, если клиент указывает адрес URL каталога, то сервер Apache передает в ответ список файлов, имеющихся в этом каталоге. Создав в каталоге индексный файл, вы лишите пользователей возможности получить список всех файлов в этом каталоге. Вам не обязательно создавать вводную страницу index.html для каждого Web-проекта; достаточно создать символьную ссылку на файл домашней страницы. Например, если ваш документ верхнего уровня называется MyHome.html, то при помощи следующей команды создается символьная ссылка под названием index.html, указывающая на MyHome.html:
$ ln -s MyHome.html index.html
Альтернативой, позволяющей любому другому пользователю использовать в качестве своей индексной страницы файл MyHome.html, является следующее написание директивы Directory Index:
Directoryindex index, html MyHome.html
FancyIndexing
Как уже было отмечено, при получении запроса на передачу каталога сервер Apache:
∙ находит файл, указанный в директиве Directorylndex (если таковой существует), и передает его клиенту;
∙ если файл Directorylndex не существует, передает клиенту оглавление каталога.
Если выбрана опция Fancylndexing, то в оглавлении используются значки и описания файлов. Если эта опция отключена, сервер представляет оглавление в более простом виде.
AddlconByType
При выборе опции Fancylndexing данная директива дает серверу знать, какие значки с какими файлами следует использовать в соответствии с MIME-типами файлов. Сервер использует следующий формат:
AddlconByType (.ALT, URL) MIME
∙ ALT ≈ это маленький фрагмент текста, который пользователи, работающие с текстовыми броузерами, увидят вместо значка.
∙ URL ≈ это адрес URL, по которому на вашем сервере размещен файл значка.
∙ MIME ≈ это MIME-тип либо набор MIME-типов, задаваемый с помощью шаблонов.
Адрес URL /icons задается в директиве Alias в этом же файле.
Этот раздел вам, видимо, можно пропустить, если только вы не используете на сервере файлы специальных типов, для которых требуется создать свои значки.
Addlcon, Defaultlcon
Значение в директиве Addlcon указывает серверу, какие значки следует использовать для представления файлов и каталогов, тогда как Defaultlcon представляет собой адрес URL значка, предназначенного для использования с файлами, не имеющими явно заданного значка.
Категория: Apache | Добавил: Direnor (20.02.2011)
Просмотров: 4507 | Комментарии: 2 | Рейтинг: 0.0/0
Всего комментариев: 0
Имя *:
Email *:
Код *:
Ресурсы Mandriva
Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0