Apache настройка виртуальных хостов: Настройка виртуальных хостов Apache на Ubuntu

Настройка виртуальных хостов Apache на Ubuntu

  • Что такое виртуальный хост
  • Как настроить виртуальные хосты Apache
  • Шаг 1. Создание каталогов и настройка прав
  • Шаг 2. Настройка конфигурационных файлов
  • Шаг 3. Создание тестовой HTML-страницы
  • Шаг 4. Включение виртуального хоста в Apache
  • Шаг 5. Проверка работы виртуального хоста

Apache ― это популярный веб-сервер, на котором работает 24% веб-сайтов в интернете. В статье Что такое Apache мы рассказывали о истории его создания, принципах работы и преимуществах. В этой статье мы расскажем, для чего нужны в Apache виртуальные хосты и как их настроить в Ubuntu 18.04 и 20.04.

Что такое виртуальный хост

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

Файлы сайтов хранятся на серверах в отдельных директориях. На одном сервере может быть размещено множество сайтов. Чтобы сервер понимал, какую директорию использовать, когда пользователь переходит на сайт, нужно связать домен и директорию между собой. За это отвечают виртуальные хосты. Они связывают доменное имя сайта с директорией, в которой находятся нужные файлы. 

Настройка хостов при помощи связи домена с директорией называется Name-based (на основании имени). Есть и другие способы настройки виртуальных хостов. Например, Port-based (на основании порта) и IP-based (на основании IP-адреса). 

Мы рассмотрим вариант настройки виртуального хоста на основании домена и покажем, как это сделать в Apache на сервере с Ubuntu 18.04 и 20.04.

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

Если на вашем сервере нет Apache, установите его. Для этого:

Обновите список пакетов:


sudo apt update

Установите Apache:


sudo apt install apache2

Готово, этого будет достаточно, чтобы настроить виртуальный хост и протестировать его работу при помощи HTML. Если в дальнейшем вы хотите запустить сайт на PHP с базой данных, выполните установку остальных компонентов LAMP (Linux, Apache, MySQL/MariaDB, PHP) по инструкции.

Дальше в инструкции мы будем использовать тестовый домен faq-2d.ru. При работе с инструкцией вы можете использовать как его, так и собственный домен.

Всю процедуру настройки виртуального хоста мы разделили на шаги. 

Стандартная корневая директория для хостов ― /var/www. Здесь в отдельных каталогах хранятся виртуальные хосты. Создайте директорию для faq-2d.ru:


sudo mkdir -p /var/www/faq-2d.ru

Смените владельца директории на текущего пользователя, под которым вы авторизованы:


chown -R $USER:$USER /var/www/faq-2d.ru

Задайте права для этой директории:


sudo chmod -R 755 /var/www

Шаг 2. Настройка конфигурационных файлов

У каждого виртуального хоста есть свой конфигурационный файл (конфиг). Конфиги отвечают за настройку хоста и за поведение Apache при получении запросов. Они хранятся в директории /etc/apache2/sites-available. Там же есть стандартный файл конфигурации 000-default.conf, который можно использовать в качестве шаблона для новых виртуальных хостов. 

Чтобы создать конфигурационный файл для нового виртуального хоста (faq-2d.ru в нашем случае), воспользуйтесь шаблоном:

1. Скопируйте содержимое файла 000-default.conf в новый файл:


sudo cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/faq-2d.ru.conf

Вместо faq-2d.ru введите имя вашего домена.

2. Откройте новый файл при помощи текстового редактора:


sudo nano /etc/apache2/sites-available/faq-2d.ru.conf

3. В файле есть директивы и комментарии (строки, которые начинаются с символа #). Если исключить комментарии, останутся следующие директивы:


<VirtualHost *:80>
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html
ErrorLog ${APACHE_LOG_DIR}/error. log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

Где:

  • <VirtualHost *:80>
    и </VirtualHost> ― это раздел виртуального хоста. Все директивы, которые находятся внутри этого раздела, применяются к запросам, которые поступают на 80 порт;
  • ServerAdmin webmaster@localhost ― это электронная почта администратора. Замените webmaster@localhost на свой почтовый ящик;
  • DocumentRoot /var/www/html ― это корневая директория сайта, которую вы создали на 1 шаге. Вместо /var/www/html укажите путь к корневой папке виртуального хоста;
  • ErrorLog и CustomLog ― это логи ошибок и доступа. 


3. Добавьте 3 новые директивы после строки <VirtualHost *:80>:


ServerName faq-2d.ru
ServerAlias www.faq-2d. ru
DirectoryIndex index.html

Где: 

  • ServerName faq-2d.ru ― это основной домен виртуального хоста;
  • ServerAlias www.faq-2d.ru ― это псевдоним основного домена. Нужен для того, чтобы сайт открывался и по поддомену www.
  • DirectoryIndex index.html ― эта директива указывает, что файл index.html ― это главная страница сайта. Этот файл будет открываться при переходе по домену.

В итоге в файле будут следующие директории:


<VirtualHost *:80>
ServerName faq-2d.ru
ServerAlias www.faq-2d.ru
DirectoryIndex index.html
ServerAdmin [email protected]
DocumentRoot /var/www/faq-2d.ru
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

Готово, вы настроили конфигурационный файл виртуального хоста.

Чтобы проверить работу хоста, создайте страницу с простым кодом на HTML.

Для этого выполните команду:


echo "<h2>faq-2d.ru</h2>" > /var/www/faq-2d.ru/index.html

Вместо /var/www/faq-2d.ru/ введите путь до корневой директории виртуального хоста. 

Готово, вы создали тестовую страницу. 

Шаг 4. Включение виртуального хоста в Apache

1. Отключите стандартный конфиг:


sudo a2dissite 000-default.conf

2. Активируйте новый виртуальный хост:


sudo a2ensite faq-2d.ru.conf

Вместо faq-2d.ru введите имя вашего домена. 

3. Перезапустите веб-сервер Apache:


sudo systemctl restart apache2

Готово, файл для проверки создан. 

Шаг 5. Проверка работы виртуального хоста

Если ваш домен привязан к виртуальному серверу, перейдите по домену. Если вы правильно настроили хост, на сайте вы увидите текст, который добавили на 3 шаге:

Если вы использовали домен faq-2d.

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


123.123.123.123 faq-2d.ru www.faq-2d.ru

Где:

123.123.123.123 ― IP-адрес сервера,
faq-2d.ru ― домен, который вы использовали. 

Готово, вы настроили и проверили работу виртуального хоста.

Настройка виртуальных хостов Apache в Ubuntu 16.04

Apache является одним из самых популярных веб-серверов в мире.

Компоненты и функции Apache разделены на отдельные элементы, которые можно индивидуально устанавливать и настраивать. Одним из базовых элементов, отвечающим за индивидуальные параметры сайта или домена, является виртуальный хост.

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

Данное руководство поможет настроить виртуальные хосты на выделенном сервере Ubuntu 16.04, что позволит обслуживать разный контент в зависимости от запрашиваемого домена.
Требования

Предварительно настроенный сервер Ubuntu 16.04.
Не-root пользователь с расширенными привилегиями.
Установленный веб-сервер Apache:

sudo apt-get update
sudo apt-get install apache2

Примечание: В руководстве используются условные домены example.com и test.com; не забудьте заменить их своим доменным именем.

Если у вас нет доменного имени, в конце руководства показано, как протестировать настройку с фиктивными значениями.
1: Создание структуры каталогов

Для начала нужно создать структуру каталогов, в которой будут храниться данные сайта.

Каталог document root (каталог, содержащий контент для Apache) по умолчанию находится в /var/www; в нём нужно создать отдельный каталог для каждого виртуального хоста. В каждом таком каталоге будет размещен каталог public_html, в котором будут находиться нужные файлы. Благодаря этому хостинг становится более гибким.

Необходимые каталоги можно создать при помощи следующих команд:

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

Примечание: Не забудьте указать свои доменные имена в командах.
2: Настройка прав

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

sudo chown -R $USER:$USER /var/www/example.com/public_html
sudo chown -R $USER:$USER /var/www/test.com/public_html

Переменная $USER примет имя текущего пользователя. После этого подкаталоги каталоги public_html, содержащие контент сайтов, будут принадлежать текущему пользователю.

Также нужно изменить привилегии и открыть веб-каталог и всё его содержимое для чтения, в противном случае страницы будут отображаться некорректно.

sudo chmod -R 755 /var/www

Теперь все права установлены верно; можно приступать к созданию контента в специальных каталогах.
3: Создание демо-страниц для виртуальных хостов

Создайте тестовый контент; для пробной настройки хостов простых страниц будет достаточно. Просто создайте страницы index.html для каждого сайта.

Начнём с example.com; откройте файл index.html в текстовом редакторе:

nano /var/www/example.com/public_html/index.html

В этом файле создайте простой HTML-документ, который указывает, к какому сайту подключена страница. В данном случае этот файл выглядит так:

Success! The example.com virtual host is working!

Сохраните и закройте файл.

Затем можно скопировать этот файл и использовать его как шаблон для второго сайта:

cp /var/www/example.com/public_html/index.html /var/www/test.com/public_html/index.html

Откройте скопированный файл и внесите соответствующие коррективы:

nano /var/www/test.com/public_html/index.html
Success! The test.com virtual host is working!

Сохраните и закройте файл. Теперь тестовые страницы готовы.
4: Создание файлов виртуальных хостов

Файлы виртуальных хостов задают настройки отдельных сайтов и помогают Apache корректно отвечать на запросы.

Apache поставляется со стандартным файлом хоста по имени 000-default.conf, который можно использовать в качестве шаблона. Скопируйте его, чтобы создать виртуальный хост для каждого доменного имени.

Примечание: По умолчанию настройки Ubuntu требуют, чтобы файлы виртуальных хостов заканчивались на .conf.

Для начала скопируйте файл для первого домена:

sudo cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/example.com.conf

Откройте файл в текстовом редакторе с привилегиями root:

sudo nano /etc/apache2/sites-available/example.com.conf

С опущенными комментариями файл будет выглядеть примерно так:

ServerAdmin webmaster@localhost
DocumentRoot /var/www/html
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined

Как видите, файл не такой уж объёмный. Теперь нужно внести данные о первом домене и добавить несколько директив. Этот виртуальный хост будет отвечать на запросы, отправляемые на стандартный HTTP-порт 80.

Сначала нужно изменить директиву ServerAdmin, указав электронный адрес администратора сайта.

ServerAdmin [email protected]

После этого нужно добавить две директивы. Первая – ServerName, которая определяет базовый домен, для которого предназначен хост. Вторая – ServerAlias, которая определяет псевдонимы домена (например, домен с префиксом www):

ServerName example.com
ServerAlias www.example.com

Осталось внести в файл хоста последнее изменение – указать нахождение document root этого домена. Укажите в DocumentRoot ранее созданный каталог:

DocumentRoot /var/www/example.com/public_html

В результате файл хоста выглядит так:

ServerAdmin [email protected]
ServerName example.com
ServerAlias www.example.com
DocumentRoot /var/www/example.com/public_html
ErrorLog ${APACHE_LOG_DIR}/error. log
CustomLog ${APACHE_LOG_DIR}/access.log combined

Сохраните и закройте файл.

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

sudo cp /etc/apache2/sites-available/example.com.conf /etc/apache2/sites-available/test.com.conf

Откройте новый файл с привилегиями root в текстовом редакторе:

sudo nano /etc/apache2/sites-available/test.com.conf

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

ServerAdmin [email protected]
ServerName test.com
ServerAlias www.test.com
DocumentRoot /var/www/test.com/public_html
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined

Сохраните и закройте файл.
5: Включение виртуальных хостов

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

К примеру, для этого можно использовать a2ensite:

sudo a2ensite example.com.conf
sudo a2ensite test.com.conf

Затем отключите стандартный виртуальный хост 000-default.conf:

sudo a2dissite 000-default.conf

Перезапустите Apache, чтобы активировать изменения:

sudo systemctl restart apache2

Обратите внимание: система Ubuntu 16.04 использует systemctl.

Также можно использовать команду:

sudo service apache2 restart

Эта команда ещё поддерживается, однако она может вернуть нестандартный результат.
6: Настройка локальных хостов (опционально)

Если у вас нет доменного имени, и вместо настоящего вы использовали условный домен, вы можете протестировать настройки, временно отредактировав файл hosts на локальном компьютере. он будет перехватывать запросы на настроенные ранее домены и направлять их на VPS (то есть, выполнять работу DNS). Но этот метод работает только на локальной машине и подходит только для тестирования.

Примечание: Убедитесь, что вы перешли на локальную машину. Для выполнения данного раздела нужны учётные данные администратора.

В системах Mac или Linux отредактируйте файл hosts с привилегиями администратора.

sudo nano /etc/hosts

Примечание: Пользователи Windows могут найти необходимые инструкции по этой ссылке.

В этом файле нужно указать IP-адрес сервера, а затем доменное имя, которое будет использоваться для доступа к серверу.

К примеру, если IP-адрес сервера — 111.111.111.111, в конец файла хоста нужно внести следующие строки

127.0.0.1 localhost
127.0.1.1 guest-desktop
111.111.111.111 example.com
111.111.111.111 test.com

Теперь все запросы к example.com и test.com будут отправлены на локальный компьютер, а оттуда — на IP-адрес сервера.

Сохраните и закройте файл.
7: Результаты

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

http://example.com

В данном случае на экране появится сообщение:

Success! The example. com virtual host is working!

Примечание: Результат, появившийся на экране, зависит от содержания файла, созданного в разделе 3.

Точно так же нужно проверить и второй сайт:

http://test.com

На экране появится следующий результат:

Success! The test.com virtual host is working!

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

Теперь сервер Ubuntu 16.04 поддерживает два сайта на отдельных доменах. В целом, количество хостов, которое может поддерживать Apache, зависит только от ресурсов виртуального выделенного сервера. Чтобы добавить на сервер новый виртуальный хост, просто повторите весь вышеописанный процесс.

Настройка виртуального хоста на основе имени в Apache —

Последнее обновление:  2021-12-02

Автор:  Rocio Rodriguez


С помощью виртуальных хостов на основе имени вы можете размещать несколько веб-сайтов на одном IP-адресе/сервере. Для каждого веб-сайта потребуется уникальное имя хоста.

Примечание . В этой статье предполагается, что на вашем сервере установлен Apache.

Предварительные условия

  • Веб-сервер Apache.
  • Доступ к привилегированному пользователю Linux, например root.
  • Доступ к записям DNS домена или поддомена.

Процедура

  1. Войдите на свой сервер через SSH и переключитесь на пользователя root.

     $ вс
    или
    $ судо -я
     
  2. Перейдите к конфигурации вашего сайта Apache.

     Дистрибутивы на основе #RHEL и CentOS:
    # компакт-диск /etc/httpd/conf/httpd.conf
    Дистрибутивы на основе #Ubuntu и Debian:
    # cd /etc/apache2/сайты доступны
     
  3. Откройте файл конфигурации, в котором находится ваш сайт.

    Примечание : Этот и следующие шаги могут отличаться в зависимости от вашей конфигурации. Будем считать, что вы используете стандартную версию.

     # нано 000-default.conf
     

    или

     # vim 000-default.conf
     
  4. Добавьте или отредактируйте (если они уже существуют) следующие директивы для желаемого виртуального хоста.

    Примечание : Вы можете добавить столько виртуальных хостов, сколько захотите. Однако каждый из них должен иметь уникальное имя сервера. Если вы используете SSL : вы также должны добавить эти директивы к виртуальному хосту SSL, порт 443.

     <Виртуальный хост *:80>
        # Вот имя хоста, к которому вы хотите подключиться:
        Имя сервера www.example.com
        # Возможно, вы захотите добавить псевдоним (необязательно):
        Псевдоним сервера example.com
        # Это расположение файлов вашего сайта:
        DocumentRoot "/www/домен"
    
     
  5. Сохраните и закройте файл. Использование Нано: Сохранить: Контр. + О Введите Выйти: Ctrl + X

    Использование Vim: Esc :wq Введите

  6. Перезапустите Apache Примечание . Этот шаг может меняться в зависимости от вашей ОС.

     Дистрибутивы на основе #RHEL и CentOS:
    # systemctl перезапустить httpd
    Дистрибутивы на основе #Ubuntu и Debian:
    # systemctl перезапустить apache2
     
  7. Добавьте запись A для выбранного имени хоста, указывающую на IP-адрес вашего сервера.

  • Управление записями DNS на портале MyRackspace (специализированные клиенты)
  • Создание записей DNS с помощью Cloud DNS (Cloud Customers)

Используйте вкладку «Обратная связь», чтобы оставлять комментарии или задавать вопросы. Вы также можете начать разговор с нами.

Поделитесь этой информацией:

© Rackspace US, Inc., 2020.

Если не указано иное, контент на этом сайте находится под лицензией Creative Commons Attribution-NonCommercial-NoDerivs 3.0 Unported License

См. особенности лицензии и ОТКАЗ ОТ ОТВЕТСТВЕННОСТИ

Файлы конфигурации виртуального хоста | Документация Plesk Obsidian

Настройки конфигурации каждого виртуального хоста хранятся в его конфигурационные файлы в /var/www/vhosts/system/ /conf/ каталог. В частности, это следующие файлы:

  • <версия> _httpd.conf — конфигурация виртуального хоста Apache.
  • <версия> _nginx.conf — конфигурация nginx.

Окончательная конфигурация Apache будет включать все httpd.conf и nginx.conf файлов со всех виртуальных хостов.

Plesk позволяет администраторам и владельцам доменов просматривать историю изменений в файлах конфигурации виртуального хоста, сохраняя каждую версию этих файлы. <версия> здесь уникальный номер, присвоенный определенному состояние конфигурации, которое используется сейчас или использовалось ранее. Позволить администраторы и владельцы доменов легко получают доступ к используемым в настоящее время конфигурационный файл, Plesk хранит ссылки last_httpd.conf и last_nginx.conf , которые указывают на соответствующие файлы.

Система повторно создает файлы конфигурации после каждого изменения конфигурация виртуального хоста, например, изменение типа хостинга домен. Поэтому, если вы отредактируете файлы httpd.conf и nginx.conf вручную ваши изменения будут потеряны после смены виртуального хоста настройки в пользовательском интерфейсе Plesk. Чтобы избежать этого, используются дополнительные файлы для указать пользовательскую конфигурацию для доменов:

  • vhost.conf и vhost_ssl.conf — пользовательские директивы Apache для две ситуации: когда клиенты заходят на сайт по HTTP и HTTPS соответственно. Эти файлы включены в httpd.conf .
  • vhost_nginx.conf — пользовательские директивы nginx. Этот файл включен в nginx.conf .

Файлы с пользовательской конфигурацией для каждого домена хранятся в /var/www/vhosts/system/ Каталог /conf/ .

Большинство параметров, указанных в этих файлах, переопределяют общесерверные конфигурация виртуального хоста ( httpd. conf и nginx.conf ). Для например, если вы включаете директивы, которые уже существуют на сайте текущий файл httpd.conf , система будет использовать ваши значения из файлы vhost.conf и vhost_ssl.conf .

Существует два способа редактирования файлов конфигурации виртуального хоста:

  1. Вручную. Вы можете добавить пользовательские директивы в следующие файлы из /var/www/vhosts/system/ /conf/ каталог:
    • vhost.conf и vhost_ssl.conf
    • vhost_nginx.conf
  2. В графическом интерфейсе Plesk . На веб-сайтах и ​​доменах > выберите веб-сайт > Вкладка Настройки веб-сервера можно указать:
    • Общие настройки Apache . Наиболее часто используемые директивы (например, типы MIME или индексные файлы).

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *