- •Принципы работы арасне
- •Директивы сервера
- •Блочные директивы
- •Запуск нескольких экземпляров Apache
- •Виртуальные хосты
- •Управление виртуальными хостами
- •Перезапуск Apache
- •Использование файлов .Htaccess
- •Общий шлюзовый интерфейс (cgi)
- •Установка переменных среды
- •Браузеры
- •Обработчики
- •Аутентификация
- •Команды allow и deny
- •Выбор языка
- •Поддержка русскоязычных кодировок,
- •Переадресация
- •Сенсорные изображения
- •Кэширование
- •Var Значение этого атрибута — имя переменной.
Виртуальные хосты
В последнем примере были запущены две различные версии Apache, каждая из которых обслуживает свой URL. В реальной жизни так обычно не делают. Как правило, запускается несколько виртуальных Apache[l], которые будут направлять входящие запросы по разным URL на разные наборы документов. Это могут быть домашние страницы сотрудников организации или клиентов. Рассмотрим пример, в котором создаются два виртуальных хоста: один для покупателей, другой для продавцов.
User nobody
Group nogroup
#Для Apache необходимо указывать название сервера даже в том случае, когда оно не будет
# использоваться. Это имя сервера будет использоваться по умолчанию
# для тех серверов, имена которых не указаны в директиве VirtualHost
ServerName customer my.company.com
AccessConfig /dev/null
ResourceConfig /dev/null
<VirtualHost customer .mycompany .com>
ServerAdmin sales@mycompany.com
DocumentRoot/usr/local/www/htdocs/customers
ServerName customer.my copany .com
ErrorLog /usr/local/www /logs/customers/error log
TransferLog /usr/local/www /logs/customers/access log
</VirtualHost>
<VirtualHost sales .my company .com>
ServerAdmin sales_mgr@mycompany.com
DocumentRoot /usr/local/www /htdocs/salesmen
ServerName sales.mycompany.com
ErrorLog /usr/local/www/logs/salesmen/error_log
TransferLog /usr/local/www logs/salesmen/access log
</VirtualHost>
Если хост с именем, указанным в директиве ServerName в начале файла, не обнаруживается (либо с помощью DNS-сервера, либо с помощью файла /etc/hosts), то Apache выводит сообщение об ошибке и прекращает работу:
Cannot determine local host name
Use ServerName to set it manually
(«не могу определить имя локального хоста
установите его вручную с помощью ServerName»)
Суть этого файла заключена в двух секциях <VirtualHost ... >. Кроме того здесь используются следующие директивы:
ServerAdmin <адрес_электронной_почты >
Эта директива задает адрес электронной почты и используется в автоматически генерируемых сообщениях об ошибках, чтобы пользователю было куда обратиться в случае возникновения проблем.
TransferLog <файл_или_команда>
Эта директива задает имя файла, который сервер будет использовать для регистрации входящих запросов. Аргумент <файл_или_команда> может принимать одно из следующих значений:
имя_файла
Имя файла относительно каталога ServerRoot
Команда
Программа, которая будет принимать агентскую регистрационную информацию на свой стандартный ввод. Новая программа, заданная для виртуального хоста, заданного директивой <VirtualHost ... >, не запускается, если этот хост наследует директиву TransferLog от главного сервера. Если программа используется, она выполняется с учетом привилегий, которые имеет пользователь, запустивший httpd. Обычно это пользователь root, если сервер запускался им, поэтому для данной программы обязательно должны быть приняты меры по защите.
Директива DocumentRoot в файле httpd.conf организует торговый зал для предложений покупателям. Директива ErrorLog сообщает Apache о том, где следует регистрировать ошибки, a TransferLog - где следует регистрировать успехи. Можно также осуществлять настройку режима сохранения информации в этих файлах. Организовав блок для покупателей, можно продублировать этот блок, и, внеся в него несколько незначительных изменений, удовлетворить нужды продавцов. У этих двух серверов - разные значения директив DocumentRoot, чего и следовало ожидать, потому что именно по этой причине и ^создаются два виртуальных хоста. У них также разные файлы регистрации передачи и ошибок, но это не обязательно. Может быть один файл регистрации передачи и один файл регистрации ошибок. Можно также записывать все данные регистрации по обоим узлам в один файл.
