Как настроить виртуальные хосты в Apache на Ubuntu 18.04/20.04
Каждый владелец VPS сталкивается с вопросом, как разместить несколько сайтов на одном сервере с одним IP-адресом. Если вы используете в качестве веб-сервера Apache, виртуальные хосты (virtual hosts) — верное решение для разделения ресурсов и отдельной конфигурации для каждого сайта.
Предварительная настройка
Все действия осуществляются на сервере через подключение по SSH. Перед тем как приступить к настройке виртуальных хостов, необходимо произвести настройку сервера.
Создание пользователя
По умолчанию после создания сервера для доступа к нему создаётся root пользователь. В целях безопасности не рекомендуем работать под суперюзером.
Чтобы создать пользователя, введите команду:
adduser userName
Где UserName — имя нового пользователя.
Система попросит ввести пароль для нового пользователя и дополнительную информацию:
Теперь установите права доступа, чтобы новый пользователь мог использовать команду sudo. Для этого выполните команду:
usermod -aG sudo UserName
Где UserName — имя созданного ранее пользователя.
Готово, новый пользователь создан. Завершите SSH-сеанс под root и подключитесь к серверу под новым пользователем.
Установка Ubuntu Apache
Чтобы выполнить действия ниже, у вас должен быть установлен Apache. Для полноценной работы сайта рекомендуем установить LAMP (Linux Apache MySQL PHP). Это минимальный набор ПО, который чаще всего используется для размещения и запуска сайта. Как установить LAMP, вы можете узнать в инструкции.
Подготовка доменов
Ваши домены должны быть привязаны к облачному серверу. Сделать это вы можете по инструкции.
Обратите внимание
В данной инструкции будут приведены примеры с доменами faq-reg.ru и support-faq.ru. В тех местах, где они будут встречаться, измените домены на свои.
Подготовка каталогов
Подготовим структуру каталогов. Рабочая директория Apache — /var/www. В данной директории мы будем создавать отдельные каталоги для каждого домена (виртуального хоста).
Чтобы создать каталоги, выполните команды:
sudo mkdir -p /var/www/faq-reg.ru/
sudo mkdir -p /var/www/support-faq.ru/
В этих каталогах будут храниться файлы вашего сайта. Далее необходимо установить права доступа к ним:
sudo chmod -R 755 /var/www
sudo chown -R $USER:$USER /var/www/faq-reg.ru/
sudo chown -R $USER:$USER /var/www/support-faq.ru/
Готово, структура каталогов и права доступа настроены. Далее подготовим демостраницы.
Создание демостраниц
Перед тем как настроить конфигурационный файл, для удобной проверки финального результата мы создадим демостраницу для каждого виртуальная хоста. В каждую папку мы поместим файл index.html, в котором будет строка с именем домена.
Для faq-reg.ru:
echo "<h2>faq-reg.ru</h2>" > /var/www/faq-reg.ru/index.html
Для support-faq. ru:
echo "<h2>support-faq.ru</h2>" > /var/www/support-faq.ru/index.html
Не забудьте заменить доменные имена на ваши.
Готово, теперь после настройки виртуальных хостов мы сможем проверить корректность их работы.
Создание конфигурационных файлов и настройка
Файл конфигурации Ubuntu Apache virtual hosts отвечает за обработку запросов к разным доменам. У Apache существует дефолтный файл конфигурации, который можно использовать в качестве шаблона. Его название может отличаться в зависимости от настроек сервера. В качестве примера мы обозначим название конфига как 000-default.conf. Для каждого виртуального хоста необходимо будет скопировать его, задать произвольное имя (рекомендуем использовать имя домена) и произвести определённые настройки. Обязательное условие — соблюдение расширения файла: .conf
Создание конфига для faq-reg.ru
-
1.
sudo cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/faq-reg.ru.conf
Где 000-default.conf — название конфигурационного файла по умолчанию.
-
2.
Откройте созданный файл командой:
sudo nano /etc/apache2/sites-available/faq-reg.ru.conf
-
3.
В файле присутствует секция VirtualHost для обработки запросов на 80 порт (порт для HTTP-запросов). Заполните оставшиеся поля:
- ServerAdmin — укажите электронный адрес администратора;
- ServerName — укажите домен, для которого вы создаёте конфигурационный файл;
- ServerAlias — раскомментируйте эту строку: удалите решётку в начале строки.
В ней укажите псевдоним домена. Часто используется вид www.domain.ru;
- DocumentRoot — укажите каталог домена, который вы создали на этапе подготовки;
- ErrorLog и CustomLog — упомяните домен в названии файла. Так вы сможете быстрее идентифицировать файлы логов;
- Directory — ещё раз укажите каталог домена, который вы создали на этапе подготовки.
Затем сохраните изменения в файле и закройте его:
-
4.
Настройка виртуального хоста для первого домена завершена. Скопируйте этот файл для второго домена с помощью команды:
sudo cp /etc/apache2/sites-available/faq-reg.ru.conf /etc/apache2/sites-available/support-faq.ru.conf
Не забудьте изменить faq-reg.ru.conf и
- org/HowToStep»>
5.
Откройте файл для редактирования:
sudo nano /etc/apache2/sites-available/support-faq.ru.conf
-
6.
Заполните поля:
- ServerAdmin — укажите электронный адрес администратора;
- ServerName — укажите домен, для которого вы создаёте конфигурационный файл;
- ServerAlias — раскомментируйте эту строку: удалите решётку в начале строки. В ней укажите псевдоним домена. Часто используется вид www.domain.ru;
- DocumentRoot — укажите каталог домена, который вы создали на этапе подготовки;
- ErrorLog и CustomLog — упомяните домен в названии файла. Так вы сможете быстрее идентифицировать файлы логов;
- Directory — ещё раз укажите каталог домена, который вы создали на этапе подготовки.
Затем сохраните изменения и закройте файл:
- org/HowToStep»>
7.
Деактивируйте конфиг по умолчанию командой:
sudo a2dissite 000-default.conf
И активируйте созданные конфиги:
sudo a2ensite faq-reg.ru.conf
sudo a2ensite support-faq.ru.conf
-
8.
Перезапустите Apache командой:
sudo service apache2 restart
Готово, создание и настройка виртуальных хостов завершена. Далее можем проверить результат.
Проверка работы виртуальных хостов
Если вы заранее привязали ваши домены к серверу и делегирование уже произошло, при переходе по домену должна открыться страница, которую мы создали на этапе «Создание демостраниц».
Если с момента изменения DNS прошло менее 24 часов и домен ещё не делегирован, увидеть результат вы можете, настроив локальные хосты в файле hosts. Подробнее в инструкции.
При переходе по домену faq-reg. ru:
При переходе по домену support-faq.ru:
Готово, файл index.html можно удалить. Далее вы можете загрузить файлы сайта в созданные директории.
Помогла ли вам статья?
Да
раз уже помогла
Как установить Apache на Ubuntu 20.04 и разместить веб-сайт
Содержание
- Установка Apache2 в Ubuntu 20.04
- Проверка Состояния Сервера Apache2 в Ubuntu 20.04
- Протестируйте установленный веб-сервер Apache2
- Настройка виртуальных хостов Apache2 в Ubuntu
- Создание виртуального хоста
- Создать корневой каталог документа
- Создание индексного файла сайта
- Измените конфигурацию виртуального хоста
- Включите виртуальный хост Apache2
- Основные команды для управления HTTP-сервером Apache
- Помощники Apache2
- Базовая конфигурация Apache2 и файлы журналов
- Конфигурационные файлы Apache2
- Файлы журналов Apache2
- Заключение
Apache — это программное обеспечение бесплатного веб-сервера, с открытым исходным кодом, разработан Apache Software Foundation. Официально он называется Apache HTTP Server. Apache является одним из самых старых, кросс-платформенных веб-серверов.
В этой инструкции мы установим Apache версии 2 (Apache2) на Ubuntu 20.04. Кроме того, мы настроим виртуальные хосты таким образом, чтобы на одном сервере могли размещаться несколько веб-сайтов.
Установка Apache2 в Ubuntu 20.04
Первое что требуется сделать это проверить наличие обновлений пакетов с помощью команды ниже.
$ sudo apt update
Во — вторых, выполните следующую команду, чтобы установить Apache версии 2 из репозитория пакетов Ubuntu.
$ sudo apt install apache2
При появлении запроса введите Y, чтобы продолжить установку.
После успешной установки Apache2 выполните следующую команду для просмотра версии.
Проверка версии сервера Apache$ apache2 -v
Проверка Состояния Сервера Apache2 в Ubuntu 20.

Далее следует проверить состояние сервера Apache2, для этого выполните следующую команду.
Проверка состояния сервера Apache$ sudo systemctl status apache2
По умолчанию служба Apache2 должна быть активна (запущена). Если нет, запустите службу следующей командой.
$ sudo systemctl start apache2
Протестируйте установленный веб-сервер Apache2
Последний шаг — это тестирование веб-сервера Apache2. Откройте веб-браузер и введите IP — адрес вашего сервера Ubuntu. Или введите localhost, если вы локально подключены к серверу.
Вы должны увидеть страницу Apache2 Ubuntu default page, как показано на рисунке ниже.
Страница Apache2 Ubuntu по умолчаниюНастройка виртуальных хостов Apache2 в Ubuntu
Виртуальные хосты позволяют размещать более одного веб-сайта на одном сервере Apache2. В Nginx это называется серверными блоками.
По умолчанию Apache2 поставляется с одним виртуальным хостом, а его конфигурационная информация хранится в файле /etc/apache2/sites-enabled/000-default.conf. Кроме того, корень веб-сайта по умолчанию — располагается в /var/www/html.
Настроить новый виртуальный хост очень просто. Следуйте инструкции и просто замените setiwik своим собственным зарегистрированным доменным именем.
Примечание: ваше зарегистрированное доменное имя должно указывать на IP-адрес вашего сервера Ubuntu.
Создание виртуального хоста
Создайте новый конфигурационный файл виртуального хоста, скопировав файл по умолчанию следующим образом.
$ cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/setiwik.conf
Далее отключите виртуальный хост по умолчанию с помощью приведенной ниже команды.
$ sudo a2dissite 000-default.
conf
Создать корневой каталог документа
Выполните следующую команду, чтобы создать корневой каталог документа для хранения файлов веб — сайта.
$ sudo mkdir /var/www/setiwik
Затем сделайте учетную запись Пользователя службы Apache2 (www-data) и группу (www-data) владельцами корневого каталога документа. Это можно сделать следующим образом.
$ sudo chown www-data:www-data /var/www/setiwik
Далее, предоставьте учетной записи Пользователя службы Apache2 (www-data) полный доступ к корневому каталогу документа с помощью следующей команды.
$ sudo chmod 755 /var/www/setiwik
Создание индексного файла сайта
Теперь создайте индексный файл в корневом каталоге документа с помощью команды:
$ sudo nano /var/www/setiwik/index.html
Скопируйте и вставьте пример HTML-кода ниже.
<!DOCTYPE html>
<html>
<head>
<title>Welcome to SETIWIK!</title>
<style>
body {
width: 35em;
margin: 0 auto;
font-family: Tahoma, Verdana, Arial, sans-serif;
}
</style>
</head>
<body>
<h2>Welcome to SETIWIK!</h2>
<p>Если вы видите эту страницу, веб-сайт SETIWIK работает правильно</p>
</body>
</html>
Сохраните и закройте файл index.html.
Измените конфигурацию виртуального хоста
Затем отредактируйте новый файл конфигурации виртуального хоста с помощью следующей команды.
$ sudo nano /etc/apache2/sites-available/setiwik.conf
Теперь раскомментируйте строку, которая начинается с ServerName, а затем замените www.example.com с фактическим URL-адресом веб-сайта. А так же замените /var/www/html новым корневым путем документа.
Ниже приведен пример того, что ожидается после внесения изменений.
<VirtualHost *:80>
ServerName www.setiwik.ru
ServerAdmin webmaster@localhost
DocumentRoot /var/www/setiwik
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
Сохраните и закройте файл конфигурации виртуального хоста.
Включите виртуальный хост Apache2
Чтобы включить виртуальный хост Apache2, выполните команду.
$ sudo a2ensite setiwik.conf
Наконец, перезапустите веб-сервер Apache2 с помощью:
$ sudo systemctl restart apache2
Теперь мой сайт доступен через www.setiwik.ru как показано на рисунке ниже.
Добро пожаловать в виртуальный хост setiwikОсновные команды для управления HTTP-сервером Apache
В заключение мы приведем некоторые основные команды systemctl, которые помогут вам управлять вашим веб-сервером Apache2.
Используйте restart, чтобы остановить службу Apache2, а затем запустить ее снова.
$ sudo systemctl restart apache2
Используйте опцию reload, чтобы указать Apache2 перезагрузить свои конфигурационные файлы, но без остановки службы.
$ sudo systemctl reload apache2
Выполните команду stop, чтобы остановить службу Apache2.
$ sudo systemctl stop apache2
Чтобы включить запуск службы Apache2 при загрузке сервера, выполните следующие действия:
$ sudo systemctl enable apache2
Помощники Apache2
a2ensite – включить сайт apache2 или виртуальный хост.
$ sudo a2ensite setiwik.conf
a2dissite – используется для отключения сайта apache2 или виртуального хоста.
sudo a2dissite setiwik.
conf
Базовая конфигурация Apache2 и файлы журналов
Конфигурационные файлы Apache2
/etc/apache2/apache2.conf — основной конфигурационный файл, который извлекает информацию из всех других конфигурационных файлов при запуске веб-сервера.
/etc/apache2/ports.conf — определяет порты прослушивания для входящих соединений.
/etc/apache2/mods-enabled — содержит информацию о конфигурации для управления модулями.
/etc/apache2/conf-enabled — содержит некоторую глобальную информацию о конфигурации.
/etc/apache2/sites-available — хранит конфигурации виртуальных хостов.
/etc/apache2/sites-enabled — определяет включенные виртуальные хосты.
Файлы журналов Apache2
/var/log/apache2/error.log — содержит информацию об ошибках, с которыми сталкивается Apache2.
/var/log/apache2/access.log — содержит все запросы, обработанные Apache2.
Заключение
В этой инструкции мы установили и настроили HTTP-сервер Apache вместе с виртуальным хостом на Ubuntu 20.04. Кроме того, мы рассмотрели некоторые полезные команды для управления Apache2. Наконец, мы дали краткое описание важных конфигов и лог-файлов, используемых Apache2.
Apache2 на виртуальном хостинге Ubuntu с разными портами
НастройкаШаги, описанные в этом руководстве, требуют наличия у пользователя привилегий root. Вы можете увидеть, как это настроить, в здесь Начальная настройка сервера. Вы можете реализовать любое имя пользователя, которое вам подходит. Кроме того, на вашем виртуальном сервере должен быть уже установлен и запущен apache
Шаг первый — создание нового каталога Первым шагом в создании виртуального хоста является создание каталога, в котором мы будем хранить информацию о новом веб-сайте. Это расположение будет корневым каталогом документа в файле виртуальной конфигурации Apache позже. Добавляя -p к строке кода, команда автоматически создает всех родителей для нового каталога.
Создание дополнительных виртуальных хостов Чтобы добавить дополнительные виртуальные хосты, вы можете просто повторить описанный выше процесс, тщательно настроив новый корень документа с соответствующим доменным именем и затем создайте и активируйте новый файл виртуального хоста.
|
Как управлять и использовать виртуальные хосты Apache в Ubuntu
Что такое виртуальные хосты Apache?
Термин виртуальный хост относится к методу работы с одним веб-сайтом, например yourdomain.com, test.yourdomain.com, или www.yourdomain.com, www.yourdomain2.com в одной системе. В Apache существует два типа виртуального хостинга: виртуальный хостинг на основе IP и виртуальный хостинг на основе имени. С помощью виртуального хостинга на основе IP вы можете разместить несколько веб-сайтов или доменов в одной системе, но каждый веб-сайт/домен будет иметь уникальный IP-адрес. С помощью виртуального хостинга на основе имени вы можете разместить несколько веб-сайтов/доменов на одном и том же IP-адресе. Виртуальный хостинг может быть полезен, если вы хотите разместить различные веб-сайты и домены на одном физическом сервере или VPS. Надеюсь, вы получили общее представление о виртуальных хостах Apache. Сегодня мы увидим, как настроить виртуальные хосты Apache в Ubuntu.
1. Необходимые условия
- Операционная система под управлением Ubuntu Linux
- Пользователь root или обычный пользователь с привилегиями Sudo
- Имеет стабильное подключение к Интернету
- Окно терминала/Командная строка
2. Обновите локальные репозитории
Обновите все системные пакеты до последней версии. Выполните следующую команду:
#! /бин/баш sudo apt-получить обновление sudo apt-get upgrade -y
3. Установка Apache на VPS
Apache Virtual Host позволяет максимально эффективно использовать ресурсы при настройке веб-сайта. Это мощное программное обеспечение может использовать один сервер и один IP-адрес для размещения множества доменов.
Перед настройкой виртуальных хостов Apache необходимо установить веб-сервер Apache. Выполните следующую команду:
#! /бин/баш sudo apt-get install apache2
Введите Y для ответа Да и нажмите Введите .
Если у вас возникли проблемы с настройкой веб-сервера, обратитесь к нашему подробному руководству по установке Apache в Ubuntu.
Apache уже должен быть запущен. Чтобы проверить статус, выполните следующую команду:
Проверьте установку, посетив IP-адрес вашего сервера в браузере. Вы должны увидеть Apache2 Ubuntu Default Page .
Если это не так, возможно, возникли проблемы при установке Apache. В этом случае рекомендуется удалить Apache и выполнить новую установку.
Чтобы удалить Apache, выполните следующую команду:
#! /бин/баш sudo apt-get purge apache2
4. Структура каталога виртуального хоста Apache
Перейдите в каталог, где хранятся все файлы конфигурации Apache, выполните следующую команду:
#! /бин/баш cd /etc/apache2
Когда вы войдете, запустите команду ls
, и вы увидите несколько файлов и каталогов. Вот некоторые важные каталоги и файлы, которые вы увидите в каталоге /etc/apache2
.
- apache2.conf — это основной файл конфигурации Apache.
- conf-available содержит все дополнительные файлы конфигурации.
- conf-enabled содержит символические ссылки на файлы конфигурации, которые включены.
- Файл envvars содержит переменные среды.
- Доступные моды содержит все доступные модули Apache.
- с поддержкой модов содержит символические ссылки на разрешенные модули.
- ports.conf включают конфигурацию порта (на каком порту вы хотите прослушивать запросы?).
- site-available содержит все файлы виртуальных хостов, которые мы создаем.
- site-enabled содержит симлинки всех виртуальных хостов, которые мы хотим включить.
Мы должны сосредоточиться на доступных сайтах и сайтах с поддержкой каталогов из всех этих файлов и каталогов, потому что эти каталоги будут содержать все наши файлы конфигурации виртуального хоста.
5. Настройка виртуального хоста на Apache
Пример конфигурации виртуального хоста, показанный в этом руководстве, основан на имени, поскольку он использует доменное имя веб-сайта для различения запросов. Существует еще один режим на основе IP, когда несколько доменов должны быть связаны с уникальным IP-адресом.
В примере этого руководства mypersonaldomain.com будет использоваться в качестве домена, но вам придется использовать существующий домен, которым вы владеете.
Получив доступ к IP-адресу сервера, на котором вы только что установили Apache, вы обычно можете найти содержимое своего веб-сайта в общедоступной папке по адресу 9.0269 вар/www/html .
Если вы хотите разместить несколько веб-сайтов, легко увидеть, как создать столько папок, сколько существует веб-сайтов, при условии, что для каждого веб-сайта правильно настроен файл конфигурации виртуального хоста, который сделает его доступным через Интернет.
Итак, перейдите в /var/www
и создайте папку для своего сайта. Вы можете присвоить каждой папке соответствующее доменное имя:
#! /бин/баш компакт-диск /var/www sudo mkdir -p yourdomain.com/{public_html,logs}
Добавьте следующий образец HTML:
#! /бин/баш sudo nano /var/www/yourdomain.com/public_html/index.html
<голова>Добро пожаловать на YourDomain.com! <тело>Успех! Виртуальный хост yourdomain.com работает!
Сохраните и закройте этот файл.
Измените владельца файла каталога, выполните следующую команду:
#! /бин/баш sudo chown -R $USER:$USER /var/www/yourdomain.com/public_html
В приведенном выше коде мы используем $USER для предоставления разрешения обычным пользователям без полномочий root на доступ к этому каталогу.
Нам также необходимо изменить права доступа к файлам корневой папки документов, чтобы обеспечить правильное обслуживание всех файлов и страниц.
#! /бин/баш sudo chmod -R 755 /var/www
Теперь создайте первый файл виртуального хоста в каталоге, доступном для сайтов, выполните следующую команду:
#! /бин/баш sudo nano /etc/apache2/sites-available/yourdomain.conf
Теперь вставьте следующее содержимое в файл виртуального хоста. Я объясню эти директивы подробно позже в этом руководстве.
<Виртуальный хост *:80> ServerAdmin [email защищен] Имя сервера yourdomain.com Псевдоним сервера www.yourdomain.com DocumentRoot /var/www/yourdomain.com/public_html Журнал ошибок /var/www/yourdomain.com/logs/error.log CustomLog /var/www/yourdomain.com/logs/access.log вместе
Сохраните и закройте, используя комбинацию CTRL + X , затем нажмите Y и подтвердите, нажав ENTER .
Не забудьте заменить yourdomain.com на ваше доменное имя. Давайте сначала разберемся с директивами, используемыми в этом файле виртуального хоста.
- ServerAdmin : Электронная почта, указанная вами в этой директиве, будет отображаться, если пользователь столкнется с внутренней ошибкой сервера. Чтобы они могли связаться с вами напрямую по электронной почте.
- ServerName : это основной домен вашего приложения. Здесь я использую domain1.com. Вы можете заменить его любым доменным именем, которое хотите разместить на своем сервере.
- ServerAlias : Эта директива содержит все различные домены/поддомены, которые вы хотите использовать для доступа к сайту. Здесь вы можете добавить несколько имен хостов, разделенных пробелом.
- DocumentRoot : В этой директиве укажите каталог, в который вы хотите направлять запросы, поступающие для этого файла виртуального хоста, если они разрешают его. Это означает, что запросы, поступающие на domain1.com, будут направляться в каталог /var/www/domain1.com/public_html.
- ErrorLog : В этой директиве укажите путь к файлу журнала ошибок.
Все ошибки, возникающие во время выполнения, будут регистрироваться в упомянутом здесь файле.
- CustomLog : Указанный здесь путь к файлу журнала будет содержать все журналы доступа.
И
— это блок виртуального хоста. Вы можете создать несколько таких блоков в одном файле yourdomain.conf для нескольких доменов, и он все равно будет работать!
Затем включите новый сайт и отключите конфигурацию Apache по умолчанию:
#! /бин/баш sudo a2ensite yourdomain
После этого проверьте конфигурацию на наличие синтаксических ошибок:
#! /бин/баш sudo apachectl configtest
Ответ Синтаксис OK
должен быть возвращен. Затем перезапустите Apache, чтобы применить изменения и заставить веб-сервер использовать ваш файл конфигурации.
#! /бин/баш sudo systemctl перезапустить apache2
Теперь, когда вы настроили виртуальные хосты, вы можете проверить свою настройку, перейдя к доменам, которые вы настроили в веб-браузере:
http://yourdomain.