В этой статье мы покажем вам, как настроить виртуальные хосты Apache на Debian 9. Apache — бесплатный веб-сервер с открытым исходным кодом. Это самый популярный и широко используемый веб-сервер в мире, и он обычно используется на серверах Linux. Он разработан и поддерживается Apache Software Foundation, более половины всех серверов по всему миру используют этот быстрый и безопасный веб-сервер.
Требования
- SSH-доступ с привилегиями root на ваш сервер Debian 9
- правильно установленный и настроенный веб-сервер Apache
1. Войдите на свой сервер
Сначала позвольте нам войти на ваш сервер через SSH:
ssh root@server_ip
2. Проверьте установку Apache
Убедитесь, что apache уже установлен и запущен на вашем сервере. Вы можете сделать это с помощью следующей команды:
dpkg -l apache2
Если apache не установлен, вы можете сделать это, выполнив следующие команды. Во-первых, убедитесь, что системные репозитории обновлены:
apt-get update
Чтобы установить веб-сервер Apache, выполните следующие действия:
apt-get install apache2
После завершения установки, вы должны включить Apache для запуска автоматически после перезагрузки сервера:
systemctl enable apache2
Вы также можете проверить состояние службы Apache с помощью следующей команды:
systemctl status apache2
Теперь, когда мы уверены, что Apache установлен и запущен на нашем сервере, мы можем продолжить следующий шаг и настроить наш первый виртуальный хост.
3. Что такое виртуальный хост?
Виртуальные хосты Apache — это набор директив конфигурации, которые позволяют размещать как можно больше веб-сайтов, используя один веб-сервер. Веб-сервер Apache поддерживает два типа виртуальных хостов:
- Виртуальные хосты на основе имен
- Виртуальные хосты на основе IP
Виртуальный хост на основе имени обычно используется для размещения нескольких веб-сайтов на одном сервере, в то время как на виртуальном хосте на базе IP мы можем настроить только один веб-сайт на одном IP-адресе. В этой статье вы узнаете, как создавать виртуальные хосты на основе имен. Для этой цели мы разместим два веб-сайта с использованием следующих доменных имен: domain1.ru и domain2.ru. Вы также можете заменить их фактическими именами доменов.
4. Создайте каталоги webroot
Перед настройкой виртуальных хостов нам необходимо создать корневые каталоги документов для наших веб-сайтов. Создадим их в каталоге /var/www/html со следующими командами:
mkdir -p /var/www/html/domain1.ru mkdir -p /var/www/html/domain2.ru
Давайте также создадим тестовую демонстрационную страницу для каждого из наших доменов, чтобы позже проверить нашу конфигурацию.
Перейдите в корневой каталог документа domain1.ru:
cd /var/www/domain1.ru
Создайте новую страницу index.html с помощью:
nano index.html
Добавьте следующий контент:
<html> <body> <center><h1>Это domain1.ru!</h1></center> </body> </html>
Теперь давайте сделаем следующее для домена domain2.ru.
cd /var/www/domain2.ru nano index.html
Добавьте следующий контент:
<html> <body> <center><h1>Это domain2.ru!</h1></center> </body> </html>
Теперь мы успешно создали тестовые страницы для обоих доменов. Чтобы наш веб-сервер Apache имел возможность доступа к этим файлам, нам также необходимо предоставить им соответствующие разрешения и установить пользователя и группу в www-data. Мы обновляем разрешения для всего каталога /var/www/html с помощью следующей команды.
chown -R www-data: /var/www/html
5. Создайте файлы виртуальных хостов
Теперь мы можем создавать файлы виртуального хоста. Файлы конфигурации виртуального хоста обычно заканчиваются расширением .conf.
Выполните следующую команду для создания файла конфигурации виртуального хоста для нашего первого домена domain1.ru :
nano /etc/apache2/sites-available/domain1.ru.conf
И добавьте в файл следующий контент:
<VirtualHost *:80> ServerAdmin admin@domain1.ru ServerName domain1.ru ServerAlias www.domain1.ru DocumentRoot /var/www/html/domain1.ru ErrorLog ${APACHE_LOG_DIR}/domain1.ru_error.log CustomLog ${APACHE_LOG_DIR}/domain2.ru_access.log combined </VirtualHost>
Теперь давайте сделаем то же самое для нашего второго доменного имени domain2.ru:
nano /etc/apache2/sites-available/domain2.ru.conf
И добавьте следующий код:
<VirtualHost *:80> ServerAdmin admin@domain2.ru ServerName domain2.ru ServerAlias www.domain2.ru DocumentRoot /var/www/html/domain2.ru ErrorLog ${APACHE_LOG_DIR}/domain2.ru_error.log CustomLog ${APACHE_LOG_DIR}/domain2.ru_access.log combined </VirtualHost>
Ниже приведено краткое описание каждой строки в наших файлах виртуального хоста.
Следующие строки показывают, что виртуальный хост прослушивает порт 80:
<VirtualHost *:80>
ServerAdmin устанавливает адрес контакта, который сервер включает в любые сообщения об ошибках, которые он возвращает клиенту. Здесь вы можете указать свой адрес электронной почты или даже удалить строку.
ServerAdmin admin@domain1.ru
ServerName — это имя домена, а ServerAlias определяет дополнительные имена, которые должны совпадать, как если бы они являлись исходными именами доменов.
ServerName domain1.ru ServerAlias www.domain1.ru
DocumentRoot определяет место, где должен искать Apache при обработке запроса для домена, определенного в ServerName или ServerAlias.
DocumentRoot /var/www/html/domain1.ru
Последние две строки определяют местоположение файлов журнала:
ErrorLog ${APACHE_LOG_DIR}/domain1.ru_error.log CustomLog ${APACHE_LOG_DIR}/domain1.ru_access.log combined
6. Включение виртуальных хостов
Следующим шагом будет создание виртуальных хостов, которые мы только что создали. Вы можете сделать это со следующими командами:
a2ensite domain1.ru.conf a2ensite domain2.ru.conf
Другой альтернативный способ сделать это — создать символическую ссылку для каждого виртуального хоста в /etc/apache2/sites-enabled
ln -s /etc/apache2/sites-available/domain1.ru.conf /etc/apache2/sites-enabled/ ln -s /etc/apache2/sites-available/domain2.ru.conf /etc/apache2/sites-enabled/
После включения виртуальных хостов, используя один из вышеперечисленных методов, вам необходимо перезапустить веб-сервер Apache:
systemctl restart apache2
Вот и все. Если вы все инструкции правильно, вы должны теперь открыть каждый из доменов в своем веб-браузере и получить результат с текстом:
Это http://domain1.ru!
Это http://domain2.ru!