Настройка Virtualhost в Apache 2


Долго думал у чём написать сегодня, и всё же решил осветить такую проблему, как настройка VirtualHost в Apache 2. Лично меня, по началу конфигурация сервера apache 2 немного ввела в ступор. Дело в том, что, вспоминая конфигурационные файлы виртуальных хостов в старом apache, а именно virtual.conf, в apache 2 я и близко такое не нашёл:). Но как говорится: глаза боятся, а руки делают.

Открыл по привычке файл httpd.conf в /etc/apache2, я с удивлением обнаружил, что он пуст. Оглядевшись вокруг, я заметил файл apache2.conf, в нём и были привычные параметры конфигурации апач.

Среди параметров конфигурации я не нашёл привычного подключения файла virtual.conf, но нашёл включении целой директории /etc/apache2/sites-enable/. Не много полазив по папкам всё стало ясно. Дело в том, что, а apache 2 для подключения новых виртуальных хостов используются символический ссылки на файлы которые находятся в директории sites-available. А в этой директории лежат отдельные файлы, для настройки под каждый виртуальный хост. Далее я привожу пример такого файла с подобными пояснениями.

‹VirtualHost *:80› // звёдочка означает что сайт будет доступен с любого интерфейса.
ServerAdmin webmaster@localhost // email адрес администратора сайта
ServerName adm-blog.ru // имя нашего виртуального хоста
ServerAlias www.adm-blog.ru //алиас – используется для того, чтобы сайты был доступен и с www и без

DocumentRoot /home/adm-blog.ru/www/ // директория в которой лежит наш сайт
‹Directory /home/adm-blog.ru/www/› // задаём параметры для директории.
Options None
AllowOverride All // директива говорит апач, читать ли файлы .htaccess
Order allow,deny // устанавливает порядок работы директив Deny и Allow
allow from all // разрешает доступ для всех
‹/Directory›

ErrorLog /home/adm-blog.ru/error.log // путь к файлу лога ошибок

LogLevel warn // уровень ведения лога. В данном случае стоит уровень «предупреждение»

CustomLog /home/adm-blog.ru/access.log combined // путь в файлу логу доступа

‹/VirtualHost›

А теперь давайте с Вами всё обобщим и соберём всё воедино. Для того, чтобы добавить виртуальный домен в apache 2 надо, создать файл, например, с именем adm-blog_ru содержанием как показано выше, и сохранить его в каталоге sites-available. Затем добавить символическую ссылку на него в каталог sites-enable:

ln /etc/apache2/sites-enable/adm-blog_ru /etc/apache2/ sites-enable/

Ну а после просто перезагрузить сервер apache командой:

/etc/init.d/apache2 restart

Как видите, всё гениальное как всегда просто.

Кстати, многие модули Apache могу быть крайне полезны. Например, модуль mod_status, может быть полезен в мониторинге нагрузки на сервер. Хорошие пост об установке mod_status, можно прочитать в блог вебмастера Романа Чернышова. На этом, спасибо за внимание. Удачи!

Добавил: admin
Дата добавления: 25-03-2011

Комментарии:
admin   31 Января 2012 в 17:19
Уточните, какуб конкретно ошибку выдаёт?
Гость   31 Января 2012 в 07:19
Здравствуйте, я поднял сервер в локальной сети, повесил один сайт6 на который нормально заходит, по default в папке sites-available создал копию файла и там добавил строки с названием и псевдонимом сервера test.ru указал другую папку, в которой есть заведомо рабочий сайт, указал в sites-enabled, перезагрузил при наборе test.ru выдает ошибку
admin   9 Июня 2011 в 20:28
Здравствуйте! Я не совсем понял суть вопроса. У Вас апач висит на порту 4963? По умолчанию апач использует порт 80(www). Данные настройки(в Apache2) управляются в файле ports.conf. Там указаны директивы NameVirtualHost и Listen вот их требуется менять если хотите перенести его на другой порт. В вашем случае надо проверить данных настройки, и если в них стоит порт 80, указывать ‹VirtualHost *:80›.
Гость   9 Июня 2011 в 12:27
У меня виртуальный сервер (порт указан 4963), добавил дополнительный веб-сервер ( т.е. еще один сайт) Какой порт мне указывать? А если просто оставить * ? ‹VirtualHost *:80›