Как настроить виртуальные хосты Apache на CentOS 7

Виртуальные хосты Apache позволяют запускать несколько веб-сайтов на одном веб-сервере. С виртуальными хостами вы можете указать корень документа сайта (каталог, содержащий файлы сайта), создать отдельную политику безопасности для каждого сайта, использовать разные SSL-сертификаты для каждого сайта и многое другое.

В этом руководстве мы предоставим пошаговые инструкции о том, как настроить виртуальные хосты Apache на сервере CentOS 7.

Подготовка

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

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

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

/var/www/
├── example.com
│   └── public_html
├── example-1.com
│   └── public_html
├── example-2.com
│   └── public_html

Мы создаем отдельный каталог для каждого домена, который хотим разместить на нашем сервере, в каталоге /var/www . В каждом из этих каталогов мы создадим каталог public_html котором будут храниться файлы веб-сайта домена.

Создайте корневой каталог для домена example.com с помощью команды mkdir :

sudo mkdir -p /var/www/example.com/public_html

В целях тестирования мы создадим файл index.html внутри корневого каталога документов домена. Откройте ваш редактор и создайте HTML-файл со следующим содержимым:

/var/www/example.com/public_html/index.html
<!DOCTYPE html>
<html lang="en" dir="ltr">
  <head>
    <meta charset="utf-8">
    <title>Welcome to example.com</title>
  </head>
  <body>
    <h1>Success! example.com home page!</h1>
  </body>
</html>

Все команды выполняются от имени пользователя sudo, поэтому вновь созданные файлы и каталоги принадлежат пользователю root. Чтобы убедиться в отсутствии проблем с разрешениями, измените владельца корневого каталога документов домена пользователю apache :

sudo chown -R apache: /var/www/example.com

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

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

По умолчанию Apache настроен на загрузку всех файлов конфигурации, которые заканчиваются на .conf из каталога /etc/httpd/conf.d/ .

Чтобы создать виртуальный хост для определенного веб-сайта, откройте выбранный вами редактор и создайте следующий базовый файл конфигурации виртуального хоста:

/etc/httpd/conf.d/example.com.conf
<VirtualHost *:80>
    ServerName example.com
    ServerAlias www.example.com
    ServerAdmin [email protected]
    DocumentRoot /var/www/example.com/public_html

    <Directory /var/www/example.com/public_html>
        Options -Indexes +FollowSymLinks
        AllowOverride All
    </Directory>

    ErrorLog /var/log/httpd/example.com-error.log
    CustomLog /var/log/httpd/example.com-access.log combined
</VirtualHost>
  • ServerName : домен, который должен соответствовать данной конфигурации виртуального хоста. Это должно быть ваше доменное имя.
  • ServerAlias : все остальные домены, которые также должны соответствовать этому виртуальному хосту, например субдомен www .
  • DocumentRoot : каталог, из которого Apache будет обслуживать файлы домена.
  • Options : эта директива определяет, какие функции сервера доступны в определенном каталоге.
    • -Indexes : предотвращает -Indexes каталогов.
    • FollowSymLinks : этот параметр указывает вашему веб-серверу следовать символическим ссылкам.
  • AllowOverride : указывает, какие директивы, объявленные в файле .htaccess могут переопределять директивы конфигурации.
  • ErrorLog , CustomLog : указывает расположение файлов журнала.

Отредактируйте файл в соответствии с вашими потребностями и сохраните его.

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

Проверьте синтаксис файла конфигурации с помощью:

sudo apachectl configtest

Если ошибок нет, вы увидите следующий вывод:

Syntax OK

Чтобы активировать вновь созданный виртуальный хост, перезапустите службу Apache с помощью:

sudo systemctl restart httpd

Убедитесь, что все работает должным образом, открыв http://example.com :

Выводы

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

Если вы столкнулись с какой-либо проблемой, не стесняйтесь оставлять комментарий.

Оставьте комментарий