Мультидоменность в Apache без лишних хлопот | ||
Администрирование > Разное Интернет пестрит руководствами по настройке виртуальных хостов в Apache. Но, в большинстве случаев, создание такого поддомена представляется хлопотным делом.По «стандартной» инструкции предлагается сделать следующее:
Некоторые пытаются оптимизировать данный процесс различными скриптами, но проблемы это, по сути, не решает. Итак, попробуем добиться, чтобы процесс создания поддомена сводился лишь к созданию папки для сайта. Возможно ли это? Проверим... Как устанавливать LAMP я рассказывать не буду, так как вы, скорее всего, можете сделать это с закрытыми глазами (смайл). Перейдем к самому интересному. Настройка vhost_alias Включаем модуль vhost_alias. Он то и будет главным действующим лицом. sudo a2enmod vhost_alias Включаем, если нужно, mod_rewrite. sudo a2enmod rewrite Открываем файл httpd.conf и приступаем к непосредственной настройке. #Подставляем имя сервера из заголовка запроса пользователя UseCanonicalName Off
# Формируем логи так, чтобы в них указывалось имя виртуального хоста
LogFormat "%V %h %l %u %t \"%r\" %s %b" vcommon
CustomLog /home/%username%/web/access_log vcommon
# Нужно для работы mod_rewrite
Options FollowSymLinks
AllowOverride All
# Собственно правило, по которому будет искаться нужный нам сайт
VirtualDocumentRoot /home/%username%/web/%-2
%-2 означает, что по хост будет выбран по предпоследней части доменного имени. Другими словами, создав директорию /home/%username%/web/habrahabr, мы сможем обратиться к ней как habrahabr.ru (или habrahabr.com, или даже habrahabr.xxx).Можно также задать свои параметры выбора имени хоста:
Рестартуем Apache. sudo service apache2 restart Наш сервер уже работает. Убедиться в этом мы можем, создав папку с нужным именем, например test и поместив туда index.php с каким-нибудь содержимым, например "". Ах да, нужно ведь еще прописать наш домен в файлике /etc/hosts. 127.0.0.1 test.loc Все, теперь можно открывать в браузере страничку. Стоп, мы так не договаривались! Создание сайта должно сводиться к созданию директории под него. Ну что ж, давайте сделаем… Настройка DNS-сервера Для этого мы будем использовать DNS-сервер bind9. Все домены с суффиксом *.loc будут смотреть на нашу локальную машину. Устанавливаем DNS-сервер sudo apt-get install bind9 Открываем конфигурационный файл named.conf.options и добавляем acl "home" {192.168.1.0/24; 127.0.0.1;};
options {
directory "/var/cache/bind";
auth-nxdomain no;
listen-on-v6 { none; };
listen-on { 127.0.0.1; };
allow-transfer { none; };
allow-query {"home";};
forward first;
# Указываем DNS-адреса провайдера
forwarders {
192.168.1.2;
8.8.8.8;
};
};
Создаем файлы для прямой и обратной доменной зоны. cd /etc/bind/ Содержание db.loc $TTL 86400
$ORIGIN loc.
@ IN SOA skywrtr.loc. admin.skywrtr.loc. (
2010050100; Serial
14400; Refresh
7200; Retry
3600000; Expire
86400 ); Minimum
@ IN NS localhost.
* IN A 127.0.0.1
Содержание db.loc.rev $TTL 86400
$ORIGIN loc.
@ IN SOA skywrtr.loc. admin.skywrtr.loc. (
2010050100; Serial
14400; Refresh
7200; Retry
3600000; Expire
86400 ); Minimum
@ IN NS localhost.
* IN A 127.0.0.1
Наконец, открываем файл named.conf.local и дописываем туда one "loc" {
type master;
file "/etc/bind/db.loc";
allow-transfer { 127.0.0.1; };
notify no;
};
zone "0.0.127.in-addr.arpa" {
type master;
file "/etc/bind/db.loc.rev";
allow-transfer { 127.0.0.1; };
notify no;
};
Остальсь подключиться к нашему DNS-серверу. Либо через файл /etc/resolv.conf, дописав строчку nameserver 127.0.0.1 либо через стандартный менеджер сетевых соединений. В свойствах подключения, на вкладке «Параметры IPv4» дописать адрес 127.0.0.1 в поле «Серверы DNS». Некоторые замечания Есть пара замечаний по работе с vhost_alias.
Источник: http://habrahabr.ru/blogs/linux/129900/ |
||
Комментарии | ||