Как настроить виртуальные хосты в 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.
-
6.
Заполните поля:
- ServerAdmin — укажите электронный адрес администратора;
- ServerName — укажите домен, для которого вы создаёте конфигурационный файл;
- ServerAlias — раскомментируйте эту строку: удалите решётку в начале строки. В ней укажите псевдоним домена. Часто используется вид www.domain.ru;
- DocumentRoot — укажите каталог домена, который вы создали на этапе подготовки;
- ErrorLog и CustomLog — упомяните домен в названии файла. Так вы сможете быстрее идентифицировать файлы логов;
- Directory — ещё раз укажите каталог домена, который вы создали на этапе подготовки.
Затем сохраните изменения и закройте файл:
org/HowToStep»>
7.
-
8.
Перезапустите Apache командой:
sudo service apache2 restart
Откройте файл для редактирования:
sudo nano /etc/apache2/sites-available/support-faq.ru.conf
Деактивируйте конфиг по умолчанию командой:
sudo a2dissite 000-default.conf
И активируйте созданные конфиги:
sudo a2ensite faq-reg.ru.conf
sudo a2ensite support-faq.ru.conf
Готово, создание и настройка виртуальных хостов завершена. Далее можем проверить результат.
Проверка работы виртуальных хостов
Если вы заранее привязали ваши домены к серверу и делегирование уже произошло, при переходе по домену должна открыться страница, которую мы создали на этапе «Создание демостраниц».
Если с момента изменения 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.
04Далее следует проверить состояние сервера 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.