Как настроить виртуальные хосты в 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 — раскомментируйте эту строку: удалите решётку в начале строки. В ней укажите псевдоним домена. Часто используется вид
- 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 и support-faq.ru.conf на имена ваших доменов.
- 5. Откройте файл для редактирования:
sudo nano /etc/apache2/sites-available/support-faq.ru.conf
- 6.
Заполните поля:
- ServerAdmin — укажите электронный адрес администратора;
- ServerName — укажите домен, для которого вы создаёте конфигурационный файл;
- ServerAlias — раскомментируйте эту строку: удалите решётку в начале строки. В ней укажите псевдоним домена. Часто используется вид www.domain.ru;
- DocumentRoot — укажите каталог домена, который вы создали на этапе подготовки;
- ErrorLog и CustomLog — упомяните домен в названии файла. Так вы сможете быстрее идентифицировать файлы логов;
- Directory — ещё раз укажите каталог домена, который вы создали на этапе подготовки.
Затем сохраните изменения и закройте файл:
- 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 можно удалить. Далее вы можете загрузить файлы сайта в созданные директории.
Помогла ли вам статья?
Да
1 раз уже помогла
Как настроить виртуальные хосты Apache в Ubuntu 18.04
26 Октября 2020 | Ubuntu
В этом руководстве мы предоставим пошаговые инструкции о том, как настроить виртуальные хосты Apache в Ubuntu 18.04.
Виртуальные хосты Apache позволяют запускать более одного веб-сайта на одной машине.
Хотя это руководство написано для Ubuntu 18.04 Bionic Beaver, те же шаги можно использовать для Ubuntu 16.04 Xenial Xerus.
Введение
Прежде чем продолжить изучение этого руководства, убедитесь, что вы выполнили следующие предварительные условия:
- У вас есть доменное имя, указывающее на IP-адрес вашего публичного сервера. Мы будем использовать
example.com
. - У вас установлен Apache, следуя этим инструкциям .
- Вы вошли в систему как пользователь с привилегиями sudo .
Создайте структуру каталогов
Корневой каталог документа — это каталог, в котором файлы веб-сайта для доменного имени хранятся и обслуживаются в ответ на запросы. Вы можете установить корень документа в любое место, которое хотите, в этом руководстве мы будем использовать следующую структуру каталогов:
/var/www/ ├── domain1. com │ └── public_html ├── domain2.com │ └── public_html ├── domain3.com │ └── public_html
По сути, мы создадим отдельный каталог для каждого домена, который хотим разместить на нашем сервере внутри /var/www
каталога. В каждом из этих каталогов мы создадим public_html
каталог, в котором будут храниться файлы веб-сайта домена.
Начните с создания корневого каталога
для example.com
домена:
sudo mkdir -p /var/www/example.com/public_html
В целях тестирования также создайте index.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> <h2>Success! example.com home page!</h2> </body> </html>
В этом руководстве мы запускаем команды от имени пользователя sudo, а вновь созданные файлы и каталоги принадлежат пользователю root.
Чтобы избежать проблем с разрешениями, мы можем изменить владельца корневого каталога документов домена на пользователя apache ( www-data
):
sudo chown -R www-data: /var/www/example.com
Создать виртуальные хосты
По умолчанию в системах Ubuntu файлы конфигурации виртуальных хостов Apache хранятся в /etc/apache2/sites-available
каталоге, и их можно включить, создав символические ссылки на /etc/apache2/sites-enabled
каталог.
Откройте выбранный вами редактор и создайте следующий базовый файл конфигурации виртуального хоста:
/etc/apache2/sites-available/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 ${APACHE_LOG_DIR}/example.com-error.log CustomLog ${APACHE_LOG_DIR}/example.com-access.log combined </VirtualHost>
ServerName
: Домен, который должен соответствовать этой конфигурации виртуального хоста. Это должно быть ваше доменное имя.ServerAlias
: Все остальные домены, которые также должны соответствовать этому виртуальному хосту, напримерwww
субдомен.DocumentRoot
: Каталог, из которого Apache будет обслуживать файлы домена.Options
: Эта директива определяет, какие функции сервера доступны в определенном каталоге.-Indexes
: Предотвращает отображение каталогов.FollowSymLinks
: Этот параметр указывает вашему веб-серверу переходить по символическим ссылкам.
AllowOverride
: Указывает, какие директивы, объявленные в.htaccess
файле, могут переопределять директивы конфигурации.ErrorLog
,CustomLog
: Задает расположение файлов журнала.
Вы можете назвать файл конфигурации по своему усмотрению, но лучше всего использовать доменное имя в качестве имени файла конфигурации виртуального хоста.
Чтобы включить новый файл виртуального хоста, нам нужно создать символическую ссылку из файла виртуального хоста в sites-enabled
каталог, который apache2 читает во время запуска.
Самый простой способ включить виртуальный хост — использовать a2ensite
помощник:
sudo a2ensite example. com
sudo ln -s /etc/apache2/sites-available/example.com.conf /etc/apache2/sites-enabled/
После этого проверьте конфигурацию на наличие синтаксических ошибок с помощью:
sudo apachectl configtest
Если ошибок нет, вы увидите следующий вывод:
Syntax OK
Перезапустите службу Apache, чтобы изменения вступили в силу:
sudo systemctl restart apache2
Наконец, чтобы убедиться, что все работает должным образом, откройте http://example.com
в выбранном браузере, и вы увидите что-то вроде этого:
Вывод
Вы узнали, как создать конфигурацию виртуального хоста apache для размещения нескольких доменов на одном сервере Ubuntu. Вы можете повторить описанные выше шаги и создать дополнительные виртуальные хосты для всех своих доменов.
Как настроить виртуальный хост в Ubuntu
Настройте виртуальный хост для своего веб-сайта, чтобы посетители могли видеть различный контент в зависимости от того, какую страницу они посещают. Таким образом, вы можете использовать несколько доменов (веб-сайтов) на одном сервере без необходимости настраивать отдельные серверы. Это позволяет создавать несколько веб-сайтов на одном сервере без использования отдельных IP-адресов.
Что такое виртуальный хост?
Виртуальный хост позволяет запускать более одного веб-сайта на одном веб-сервере с помощью отдельных файлов конфигурации. Это означает, что вы можете настроить каждый сайт с собственным доменным именем, IP-адресом и другими параметрами. Вы также можете вносить изменения в один и тот же файл конфигурации для нескольких сайтов одновременно.
Предпосылки
- Учетная запись хостинга
- Сервер для размещения вашего веб-сайта.
Если вы используете Ubuntu Linux, вы можете установить Apache 2.0, набрав sudo apt-get install apache2 в окне терминала. Затем вы должны перезагрузить компьютер, прежде чем продолжить остальные шаги.
Если вы хотите создать новое доменное имя для своего сайта, вы должны сначала установить веб-сервер. Самый простой способ сделать это — загрузить и установить последнюю версию Apache с http://httpd.apache.org/. Затем вы можете настроить Apache для работы с вашим доменным именем с помощью виртуальных хостов. Виртуальный хост позволяет создавать несколько веб-сайтов на одном физическом компьютере. Например, если вы являетесь владельцем www.example.com, вы можете создать второй веб-сайт с именем www.example2.com. Для этого вам потребуется создать два виртуальных хоста. Один виртуальный хост будет настроен для обработки запросов для www.example.com, а другой — для обработки www.example2.
Добавить имя субдомена в диспетчере доменов
Здесь мы собираемся использовать Godaddy в качестве менеджера домена. Вы можете использовать другого регистратора доменов.
- Войдите в свою учетную запись godaddy и перейдите на DNS
- Перейдите в свою зону хостинга, т. е. (ваше доменное имя), и создайте набор записей.
- Добавьте свое доменное имя, которое вы хотите создать, например: — example.metamug.net, а затем добавьте к нему адрес сервера.
Вы также можете выполнить сопоставление IP-адресов с godaddy или любым другим провайдером, если вы зарегистрированы у них.
Настройка сервера на Ubuntu
- Загрузите папку вашего веб-сайта на сервер Ubuntu по этому адресу
/var/www/
Добавьте файл conf в папку apache2 в этом месте /etc/apache2/sites-available/
назовите его example.metamug.net.conf
Имя сервера example.metamug.net DocumentRoot /var/www/example.metamug.net Журнал ошибок ${APACHE_LOG_DIR}/error. log CustomLog ${APACHE_LOG_DIR}/access.log вместе <Каталог /var/www/example.metamug.net> Опционы Индексы FollowSymLinks MultiViews Разрешить переопределить все Порядок разрешить, запретить разрешить от всех Каталог> Виртуальный хост>
Добавьте приведенный выше код в файл конфигурации, например, example.metamug.net.conf, и сохраните его.
Включите файл конфигурации, например, example.metamug.net.conf, а затем перезапустите сервер apache2.
sudo a2ensite example.metamug.net.conf. sudo service apache2 restart
Войдите на свой веб-сайт http://example.metamug.net
Включение SSL на виртуальном хосте
После настройки виртуального хоста. Вы можете включить SSL с помощью Lets Encrypt.
Поддержка виртуального хоста Apache на базе IP
Поддержка виртуального хоста на основе IP-адреса Apache — HTTP-сервер Apache версии 2.4HTTP-сервер Apache версии 2. 4
Apache > HTTP-сервер > Документация > Версия 2.4 > Виртуальные хосты
Доступные языки: en | фр | я | ко | tr
- Что такое виртуальный хостинг на базе IP
- Системные требования
- Как настроить Apache
- Настройка нескольких демонов
- Настройка одного демона с виртуальными хостами
См. также
- Поддержка виртуальных хостов на основе имен
- Комментарии
Виртуальный хостинг на основе IP — это способ применения различных директив на основе IP-адреса и порта, на который получен запрос. Наиболее часто, это используется для обслуживания разных веб-сайтов на разных портах или интерфейсах.
Во многих случаях на основе имени виртуальные хосты более удобны, так как позволяют несколько виртуальных хостов для совместного использования одного адреса/порта. См. раздел «На основе имени» и «на основе IP». Виртуальные хосты, чтобы помочь вам принять решение.
Как указывает термин на базе IP , сервер должен иметь другую комбинацию IP-адреса/порта для каждого IP-адреса. виртуальный хост . Этого можно добиться с помощью машины наличие нескольких физических сетевых подключений или использование виртуальные интерфейсы, которые поддерживаются большинством современных операционных системы (подробности см. в системной документации, это часто называемые «псевдонимами IP», а команда «ifconfig» чаще всего используется для их настройки) и/или с использованием нескольких номера портов.
В терминологии HTTP-сервера Apache использование одного IP-адреса но несколько портов TCP, также является виртуальным хостингом на основе IP.
Существует два способа настройки Apache для поддержки нескольких
хосты. Либо запустив отдельный демон httpd
для
каждое имя хоста или запустив один демон, который поддерживает все
виртуальные хосты.
Использовать несколько демонов, когда:
- Существуют проблемы с секционированием безопасности, например, компания1
не хочет, чтобы кто-либо в компании2 мог читать их
данных, кроме как через Интернет. В этом случае вам понадобится два
демоны, каждый из которых работает с разными
User
,Group
,Listen
иServerRoot
настройки. - Вы можете позволить себе память и файловый дескриптор
требования прослушивания каждого псевдонима IP на
машина. Возможно только
Прослушать
до «шаблона» адрес или по конкретным адресам. Поэтому, если у вас есть потребность слушать конкретный адрес по какой-либо причине, то вы нужно будет слушать все конкретные адреса. (Хотя одинhttpd
мог слушать N-1 из адресов, а другой мог прослушайте оставшийся адрес.)
Используйте один демон, когда:
- Совместное использование конфигурации httpd между виртуальными хостами является приемлемым.
- Машина обслуживает большое количество запросов, поэтому потеря производительности при запуске отдельных демонов может быть значительный.
Создайте отдельную установку httpd
для каждого
виртуальный хост. Для каждой установки используйте Слушайте директиву
в
файл конфигурации для выбора IP-адреса (или виртуального хоста)
этот демон обслуживает. например
Listen 192.0.2.100:80
Рекомендуется использовать IP-адрес вместо имя хоста (см. предупреждения DNS).
В этом случае один httpd
будет обслуживать
запросы к основному серверу и всем виртуальным хостам. Директива VirtualHost
в файле конфигурации используется для установки значений ServerAdmin
, ServerName
, DocumentRoot
, ErrorLog
и TransferLog
или CustomLog
директивы конфигурации для разных значений для каждого виртуального
хозяин. например
<Виртуальный хост 172.20.30.40:80> Администратор сервера [email protected] DocumentRoot "/www/vhosts/www1" Имя сервера www1. example.com ErrorLog "/www/logs/www1/error_log" CustomLog "/www/logs/www1/access_log" в сочетании виртуальный хост> <Виртуальный хост 172.20.30.50:80> Администратор сервера [email protected] DocumentRoot "/www/vhosts/www2" Имя сервера www2.example.org ErrorLog "/www/logs/www2/error_log" CustomLog "/www/logs/www2/access_log" в сочетании Виртуальный хост>
Рекомендуется использовать IP-адрес вместо
имя хоста в директиве
Определенные IP-адреса или порты имеют приоритет над их подстановочными знаками эквиваленты, и любой совпадающий виртуальный хост имеет приоритет над базовая конфигурация серверов.
Почти любая директива конфигурации может быть поставить в директиве VirtualHost, за исключением директивы, управляющие созданием процессов, и некоторые другие директивы. Чтобы узнать, можно ли использовать директиву в VirtualHost, проверьте контекст с помощью директивный указатель.