IPHosting (платный профессиональный хостинг)

Здравствуйте, Гость

Главная страница » Интернет-бизнес » Хостинг, технологии, домены » Сервер Apache - Настройка. Как настроить сервер Apache

Сервер Apache - Настройка. Как настроить сервер Apache

Добавлено: Гость | 15.03.2009
Просмотров: 20049
Слов: 2954
Рейтинг: 39.91


В сервере Apache есть три файла конфигурации, которые находятся в каталоге /usr/local/etc/httpd/conf. Это основные файлы настройки для функционирования сервера. После изменения и редактирования этих файлов в соответствии с вашими предпочтениями, можно запускать сервер. Других настроек не потребуется.

 

Прежде всего нужно перейти в каталог, содержащий файлы конфигурации, /usr/local/etc/httpd/conf. Здесь вы найдете три файла конфигурации.

 

Поскольку эти файлы должны служить для вас примером, не стоит сразу их редактировать; сначала сделайте копии, а уже затем приступайте к настройке сервера:

 

$for I in *-dist

 

>do

>mycopy = -basename $i v 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 на сервере.

Об авторе

opennet.ru



Условия перепечатки

При репосте статьи "Сервер Apache - Настройка. Как настроить сервер Apache", пожалуйста укажите источник - сайт http://www.iphosting.ru/ (Платный профессиональный хостинг) — и информацию об авторе.
Смотрите также

Почему совместный сон положительно влияет на развитие грудничков...атмосфера радости дома
Еще до рождения малыша каждая будущая мама начинает задумываться: как ей растить своего малыша, чем кормить, что одевать, как развивать своё чадо? Как только ребенок рождается, он об этом заявляет всем громким криком и это даёт мамам возможность пройти интересный путь по развитию своего крохи. С чего же начать развитие ребенка? Некоторые мамочки считают в первые недели жизни ребенка, что ее малыш только и способен, что плакать, есть и справлять естественные потребности.

Источники питания. Качественное энергоснабжение.
Не просто так многочисленные фантасты на текущий момент предсказывают разрушение человеческой цивилизации, в случае, если придет коллапс системы электрического снабжения.