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

Июнь 9, 2019 19:07 Admin

Самым распространенным веб-сервером, на котором работает большая часть сайтов в интернете, является Apache. Трудно назвать точные цифры серверов, которые работают на Apache, но можно утверждать, что их число больше половины. Apache — абсолютно бесплатный сервер и доступен не только для UNIX систем, но и для OC Windows.

Не секрет, что на одном физическом сервере может работать множество виртуальных веб-серверов. Именно поэтому два сайта с разными доменами могут располагаться на одном сервере. Такой подход дает следующие преимущества:

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

Проверяем необходимую конфигурацию

Прежде чем приступать к настройке, хотелось бы отметить, что в данной статье речь пойдет о настройке виртуального хоста на версии apache2. Со второй версии настройки разделены на несколько файлов, в то время, как в версиях ниже они располагались в одном единственном файле httpd.conf.

Во второй версии все конфигурационные файлы веб-сервера располагаются в папке /etc/apache2/, если данной папки у вас нет, вероятно Apache не установлен вовсе. Чтобы установить Apache в Ubuntu можно выполнить следующую команду:

sudo apt-get install apache2

Для наших целей нам потребуются файлы, которые располагаются в папке /etc/apache2/sites-available/. Скорее всего в данном каталоге у вас уже будет располагаться файл вида: 000-default.conf, поэтому его можно взять за основу и просто скопировать. Если же вы удалили данный файл не стоит паниковать чуть ниже будет приведет пример файла со всеми настройками, поэтому вы легко сможете скопировать их себе.

Определяем структуру и добавляем сайт

Для наших целей создадим папку public_html и разместим ее по следующему адресу: /var/www/example.com/public_html. Затем в данной папке разместим файл index.html со следующим содержимым:

<!DOCTYPE html>
<html lang="ru">
<head>
   <title>Example</title>	
</head>
<body>
   <h1>Example site working!</h1>
</body>
</html>

Затем в каталоге /etc/apache2/sites-available/ создадим файл example.com.conf и добавим в него следующие строки:

<VirtualHost *:80>
   ServerAdmin admin@example.com
   ServerAlias www.example.com
   ServerName example.com
   DocumentRoot /var/www/example.com/public_html

   ErrorLog ${APACHE_LOG_DIR}/error.log
   CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
  • ServerAdmin — email администратора;
  • ServerAlias — alias сайта, как в нашем примере создан для поддомена www;
  • ServerName — адрес нашего сайта;
  • DocumentRoot — папка в которой будут располагаться файлы нашего сайта;
  • ErrorLog и CustomLog — местоположение журналов.

Включение виртуального хоста и добавление сайта в файл hosts

Теперь нам необходимо включить только что созданный нами сайт. Для этого у Apache есть встроенная утилита. Просто выполняем команду:

sudo a2ensite example.com.conf

После этого потребуется перезагрузить Apache, сделать это можно следующей командой:

sudo service apache2 restart

Если вы используете не реальное доменное имя, как в нашем случае, то необходимо временно изменить файл /etc/hosts, в котором необходимо добавить запись вида:

127.0.0.1 example.com

Напротив, если же вы производите настройки на реальном сервере с реальным доменным именем, то в файл hosts не надо добавлять никаких записей.