Linux-сервер своими руками
Шрифт:
Рис. 12.2. Конфигурирование Apache с помощью netconf
С помощью netconf вы легко можете установить основные параметры Apache (см. рис. 12.3), определить виртуальные хосты, установить параметры подкаталогов, определить спецификацию каталогов и модулей, а также установить параметры модуля mod_ssl (см. рис. 12.4), конфигурирование которого рассмотрено ниже в этой главе.
Рис. 12.3.
Рис. 12.4. Конфигурирование модуля mod_ssl
12.3. Каталоги пользователей
Директива UserDir включает поддержку пользовательских каталогов. Эта директива определяет общее название подкаталога в домашних каталогах всех пользователей. По умолчанию используется каталог public_html. Данная возможность очень удобна при использовании ее в большой корпорации, где каждый сотрудник имеет собственную страничку. Раньше эта возможность часто использовалась на серверах, предоставляющих бесплатный хостинг. Может быть, помните адреса видаСейчас же все чаще используется технология виртуальных серверов, которую мы рассмотрим в следующем пункте, но знать что такое каталоги пользователей и как с ними работать тоже не помешает. Тем более, что домашние каталоги настраиваются намного быстрее и проще, чем виртуальный сервер — нужно всего лишь определить директиву UserDir и указать месторасположения домашних каталогов.
Доступ к файлам, расположенным в этих каталогах, производится с помощью указания через наклонную черту пользователя после имени сервера. Например, пусть имя сервера www.server.com, имя пользователя — denis, тогда URL-адрес будет выглядеть так:При этом сервер самостоятельно определит, где именно расположен домашний каталог пользователя. Если домашний каталог пользователя /home/den, то сервер передаст клиенту файл /home/den/public_html/index.html.
12.4. Виртуальный HTTP-сервер
Концепция виртуальных хостов позволяет серверу Apache поддерживать несколько Web-узлов. Получается, что один Web-сервер заменяет несколько серверов, и вместо одного узла пользователи видят отдельные Web-узлы. Это очень удобно, если нужно организовать персональные Web-узлы пользователей или собственные Web-узлы подразделений компании, например, develop.mycompany.com.
Сервер Apache можно настроить несколькими способами: чтобы запускался один сервер, который будет прослушивать ВСЕ обращения к виртуальным серверам, или запускать отдельный процесс для каждого виртуального сервера. В первом случае один сервер будет одновременно обслуживать все виртуальные. Если вас интересует такой вариант, нужно настраивать виртуальные сервера с помощью директивы VirtualHost. Настройка отдельных процессов для каждого сервера осуществляется с помощью директивы Listen и BindAddress.
В этом разделе я буду рассматривать именно первый случай. Внутри блока директивы VirtualHost можно использовать любые директивы, кроме ServerType, BindAddress, Listen, NameVirtualHost, ServerRoot, TypesConfig, PidFile, MinRequestPerChild, MaxSpareServers, MinSpareServers, так как некоторые из них относятся к основному HTTP-серверу (например, ServerType), а некоторые — ко второму варианту настройки виртуальных серверов и здесь неприемлемы. Обязательно должны присутствовать директивы ServerName, DocumentRoot, ServerAdmin и ErrorLog.
В зависимости
12.4.1. Виртуальные серверы с идентификацией по имени
Идентификация по имени имеет существенное преимущество перед идентификацией по IP-адресу: вы не ограничены количеством адресов, имеющемся у вас в распоряжении. Вы можете использовать любое количество виртуальных серверов, и при этом вам не потребуются дополнительные адреса. Такое возможно благодаря использованию протокола HTTP/1.1. Данный протокол поддерживается всеми современными браузерами.
Поддержка виртуальных хостов обеспечивается директивами VirtualHost и NameVirtualHost. Если ваша система имеет только один IP-адрес, его нужно указать в директиве VirtualHost. Внутри блока директивы VirtualHost записывается директива ServerName. Эта директива задает доменное имя для создаваемого виртуального сервера. Это обязательно нужно сделать, чтобы избежать поиска службой DNS — вы же не хотите, чтобы при неудачном поиске виртуальный сервер был заблокирован? Все директивы VirtualHost используют один и тот же IP-адрес, заданный директивой NameVirtualHost. В блоке VirtualHost записываются параметры виртуального сервера, причем они записываются для каждого виртуального сервера отдельно. Пример приведен в листинге 12.9.
Если ваша система имеет только один IP-адрес, доступ к основному серверу станет невозможным, то есть вы не сможете использовать его напрямую. Можно основной сервер использовать в качестве виртуального, что я и сделал в листинге 12.9: основной сервер www является виртуальным. При наличии двух IP-адресов можно один присвоить основному серверу, а другой — виртуальному.
Сервер Apache позволяет использовать несколько доменных имен для доступа к одному серверу, например:
При этом запросы, посланные по IP-адресам, которые присвоены вашим виртуальным хостам, должны соответствовать одному из указанных доменных имен. Чтобы зафиксировать запросы, не соответствующие ни одному их этих имен, нужно с помощью опции default:* создать виртуальный хост, который будет обслуживать такие запросы: <VirtualHost _default_:*>