Настройка виртуальных хостов в ubuntu

apache

Количество сайтов растет, а количество внешних IP остается на прежнем уровне, и на каждый сайт не будешь ведь ставить отдельный сервер. В общем возникла задача, которую нужно решить.

Принцип работы виртуальных доменов заключается в умении Web-сервера обрабатывать запросы согласно имен, указанных в них.

Настройку зон DNS я пропускаю, о ней как нибудь в другой раз.

Приступаем к решению. Всё оказывается очень просто, вся настройка производится в конфигурации apache и занимает несколько минут.

В каталоге /etc/apache2/sites-available находятся файлы конфигурации хостов. За основу берем файл default:

<VirtualHost *:80>

ServerAdmin webmaster@localhost

DocumentRoot /var/www

<Directory />

Options FollowSymLinks

AllowOverride None

</Directory>

<Directory /var/www/>

Options Indexes FollowSymLinks MultiViews

AllowOverride None

Order allow,deny

allow from all

</Directory>

ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/

<Directory «/usr/lib/cgi-bin»>

AllowOverride None

Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch

Order allow,deny

Allow from all

</Directory>

ErrorLog /var/log/apache2/error.log

# Possible values include: debug, info, notice, warn, error, crit,

# alert, emerg.

LogLevel warn

CustomLog /var/log/apache2/access.log combined

Alias /doc/ «/usr/share/doc/»

<Directory «/usr/share/doc/»>

Options Indexes MultiViews FollowSymLinks

AllowOverride None

Order deny,allow

Deny from all

Allow from 127.0.0.0/255.0.0.0 ::1/128

</Directory>

</VirtualHost>

и создаем новые конфигурации.

sudo cp /etc/apache2/sites-available/default /etc/apache2/sites-available/site1.ru

sudo cp /etc/apache2/sites-available/default /etc/apache2/sites-available/site2.ru

Далее файл конфигурации site1.ru приводим к виду (Изменить 2 строки, добавить одну.):

<VirtualHost *:80>

ServerAdmin webmaster@localhost

ServerName site1.ru

DocumentRoot /var/www /site1

<Directory />

Options FollowSymLinks

AllowOverride None

</Directory>

<Directory /var/www/site1/>

Options Indexes FollowSymLinks MultiViews

AllowOverride None

Order allow,deny

allow from all

</Directory>

ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/

<Directory «/usr/lib/cgi-bin»>

AllowOverride None

Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch

Order allow,deny

Allow from all

</Directory>

ErrorLog /var/log/apache2/error.log

# Possible values include: debug, info, notice, warn, error, crit,

# alert, emerg.

LogLevel warn

CustomLog /var/log/apache2/access.log combined

Alias /doc/ «/usr/share/doc/»

<Directory «/usr/share/doc/»>

Options Indexes MultiViews FollowSymLinks

AllowOverride None

Order deny,allow

Deny from all

Allow from 127.0.0.0/255.0.0.0 ::1/128

</Directory>

</VirtualHost>

Для site2.ru по аналогии.

Создаём каталоги для сайтов (в них размещаем сами сайты):

sudo mkdir /var/www/site1

sudo mkdir /var/www/site2

Практически всё готово. Добавляем новые хосты:

sudo a2ensite site1.ru; a2ensite site2.ru;

И заставляем Apache перечитать конфигурацию:

/etc/init.d/apache2 reload

Всё сделано, теперь набрав в адресной строке браузера http://site1.ru и http://site2.ru мы увидим свои сайты.

Если потребуется отключить виртуальный хост:

a2dissite site1.ru