Как правильно настроить виртуальные хосты веб-сервера Apache на Linux?

как правильно настроить виртуальные
хосты веб-сервера apache на linux?

Предпосылки к созданию виртуальных хостов

У многих пользователей возникает желание создать на локальной машине несколько проектов, доступных по разным адресам в браузере, и расположенных в файловой системе более удобно, чем это позволяют настройки по умолчанию.

В веб-сервере Apache существует возможность настройки виртуальных хостов[1]. Концепция виртуального хоста позволяет множеству сайтов быть привязанным к одному IP-адресу. Apache определяет полное доменное имя[2], которое запрашивает пользователь, ищет в конфигурации нужную директорию и работает с ней в дальнейшем. Это в полной мере удовлетворяет вышеописанные пожелания разработчиков, позволяет им настраивать проекты отдельно друг от друга и комфортно осуществлять резервное копирование.

В предыдущей статье мы поэтапно рассмотрели установку PHP, Apache и MySQL на операционную систему Linux. Теперь, когда мы имеем рабочую версию веб-сервера на локальной машине, перейдем к настройке виртуальных хостов.

Настройка доменных имен локальных сайтов

При вводе полного доменного имени в адресную строку, браузер посылает запрос к DNS. Так он узнает IP-адрес машины, на которой располагается ваш сайт. Естественно, что DNS ничего не знает о сайтах, расположенных на вашей локальной машине и не может связать доменное имя с её IP-адресом.

Мы можем заставить браузер не осуществлять запросы к DNS для определенных доменных имен. Допустим, мы хотим, чтобы сайт с адресом http://my-test-site был расположен в конкретной директории файловой системы, а при запросе ваша операционная система сообщала браузеру, что сайт расположен на вашей локальной машине.

Для этого мы должны выполнить приведенные ниже команды. Они добавят в начало конфигурационного файла /etc/hosts информацию о доменном имени, привязанном к вашей локальной машине. Либо просто откройте файл в текстовом редакторе (от имени администратора) и добавьте туда строку «127.0.0.1 localhost my-test-site».

sudo sed -i '1 i 127.0.0.1 localhost my-test-site' /etc/hosts

Создание и настройка виртуального хоста

Для создания виртуального хоста, к которому будет привязан наш локальный сайт, необходимо отредактировать два конфигурационных файла.

В папке /etc/apache2 лежат конфигурационные файлы, отвечающие за настройки общие для всех сайтов. Нас интересует файл /etc/apache2/apache2.conf. Откройте его в текстовом редакторе (с правами администратора) и найдите конструкцию <Directory /var/www/>. Необходимо удалить её полностью от открывающего тега до закрывающего и заменить на конструкцию, приведенную ниже.

<Directory /home/user/http>
    AllowOverride All
    Require all denied
    Require ip 127.0.0.1
    Require host localhost
</Directory>

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

Теперь добавим нашего пользователя в группу веб-сервера, создадим папку в файловой системе и зададим ей права доступа.

sudo usermod -a -G www-data user
mkdir /home/user/http
sudo chgrp www-data /home/user/http
chmod -R 775 /home/user/http

Следующий конфигурационный файл расположен в папке /etc/apache2/sites-available. В ней хранятся конфигурационные файлы каждого отдельного сайта. Сразу после установки в этой папке лежат два файла 000-default.conf и default-ssl.conf. Они содержат конфигурационные структуры, созданные по умолчанию для сайтов, работающих через протокол HTTP и HTTPS. Нас интересует файл 000-default.conf. Скопируем его в эту же папку под другим именем.

sudo cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/my-test-site.conf 

Теперь откроем его в визуальном редакторе (от имени администратора) и удалим все содержимое. Вместо удаленных строк вставим конструкцию, приведенную ниже.

<VirtualHost *:80>
    ServerName my-test-site
    ServerAdmin webmaster89localhost
    DocumentRoot /home/user/http/my-test-site

    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

Как видите, в строке DocumentRoot мы указали точную директорию, в которой будут храниться файлы виртуального хоста. Эта папка расположена внутри директории, которую мы ранее создали как корневую для всех сайтов.

Если вы выбрали другое расположение корневой папки или локальное доменное имя, исправьте строки начинающиеся с ServerName и DocumentRoot.

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

mkdir /home/user/http/my-test-site
sudo chgrp www-data /home/user/http
chmod -R 775 /home/user/http/my-test-site
sudo a2ensite my-test-site
sudo service apache2 restart

Мы закончили с настройками, теперь протестируем, все ли работает нормально. В папке нашего тестового сайта «/home/user/http/my-test-site» создадим файл с именем index.html. Добавьте в него HTML-разметку, приведённую ниже.

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
    </head>
    <body>
        <h1>Виртуальный хост настроен</h1>
    </body>
</html>

Если все этапы настройки были сделаны правильно, то при открытии нового окна браузера и вводе в адресную строку «http://my-test-site» вы увидите следующий ответ.

скриншот с сообщением об удачной настроке виртуального хоста ApacheРис 1. Сообщение, свидетельствующее о правильной
настройке виртуального хоста.

Термины, использованные в статье

  1. Виртуальный хост — технология, которая позволяет многим сайтам быть привязанным к одному IP-адресу. Ей пользуются хостинговые компании, разделяя дисковое пространство между сайтами. Но при этом они предоставляют доступ к одному и тому же программному обеспечению всем пользователям.
  2. Полное доменное имя - включает полную спецификацию с определением имени хоста и доменов, в которые он входит. К примеру, «site-name.ru» говорит, что информация об IP-адресе этого хоста хранится в Российском сегменте DNS, а именем хоста является «site-name».

Последние публикации