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

Обновлено: 04.07.2024

В этой статье описывается, как настроить виртуальные хосты Apache в Ubuntu 20.04.

Подготовка

Прежде чем продолжить работу с руководством, убедитесь, что вы выполнили следующие требования:

  • Одно или несколько доменных имен, указывающих на IP вашего публичного сервера. системе Ubuntu .
  • Вы вошли в систему как root или пользователь с привилегиями sudo .

Создание структуры каталогов

Каждый домен, размещенный на сервере, будет иметь корневой каталог документа /var/www/<domain_name>/public_html .

Мы также создадим файл index.html внутри корневого каталога документов домена, который будет отображаться при посещении домена в браузере:

Поскольку приведенные выше команды выполняются от имени пользователя sudo, вновь созданные файлы и каталоги принадлежат пользователю root. Чтобы избежать проблем с разрешениями, измените владельца корневого каталога документов домена и всех файлов в каталоге пользователю apache ( www-data ):

Создание виртуальных хостов

В системах Ubuntu файлы конфигурации виртуальных хостов Apache находятся в каталоге /etc/apache2/sites-available . Их можно включить, создав символические ссылки на каталог /etc/apache2/sites-enabled , который Apache читает во время запуска.

Откройте нужный текстовый редактор и создайте следующий базовый файл конфигурации виртуального хоста:

  • ServerName : домен, который должен соответствовать данной конфигурации виртуального хоста. Это должно быть ваше доменное имя.
  • ServerAlias : все остальные домены или субдомены, которые должны соответствовать этому виртуальному хосту, например субдомен www .
  • DocumentRoot : каталог, из которого Apache будет обслуживать файлы домена.
  • Options : эта директива определяет, какие функции сервера доступны в определенном каталоге.
    • -Indexes : предотвращает -Indexes каталогов.
    • FollowSymLinks : если этот параметр включен, Apache будет следовать символическим ссылкам.

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

    Чтобы включить новый файл виртуального хоста, используйте вспомогательный сценарий a2ensite который создает символическую ссылку из файла виртуального хоста в каталог с поддержкой sites-enabled :

    После этого проверьте конфигурацию на наличие синтаксических ошибок с помощью:

    Если ошибок нет, вы увидите следующий вывод:

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

    Выводы

    Вы узнали, как создать конфигурацию виртуального хоста apache для размещения нескольких доменов на одном сервере Ubuntu.

    Повторите шаги, описанные выше, чтобы создать дополнительные виртуальные хосты для всех ваших доменов.

    Если вы столкнулись с какой-либо проблемой, не стесняйтесь оставлять комментарий.

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

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

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

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

    Требования

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

    sudo apt-get update
    sudo apt-get install apache2

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

    1: Создание структуры каталогов

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

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

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

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

    2: Настройка прав

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

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

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

    sudo chmod -R 755 /var/www

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

    3: Создание демо-страниц для виртуальных хостов

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

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

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

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

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

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

    4: Создание файлов виртуальных хостов

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    Затем отключите стандартный виртуальный хост 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-адрес сервера, а затем доменное имя, которое будет использоваться для доступа к серверу.

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

    7: Результаты

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

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

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

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

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

    Заключение

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

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

    Для начала необходимо произвести установку и первоначальную настройку Apache на вашем VPS.

    Установка Apache

    Apache можно установить из стандартных репозиториев Ubuntu, поэтому для запуска установки зарегистрируйтесь в системе учётной записью, входящей в группу sudo , и наберите в командной строке:

    Настройка межсетевого экрана

    Перед запуском Apache следует произвести некоторые изменения в настройках брандмауэра на вашем сервере. В качестве упрощённого интерфейса для настройки межсетевого экрана в Ubuntu 20.04 как правило используется Uncomplicated Firewall или UFW.

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

    Список приложений UFW при настройке хостов Apache

    Проверьте статус интерфейса UFW:

    Статус UFW

    Проверка доступности веб-сервера

    Сейчас проверьте статус Apache:

    Статус службы Apache при настройке хостов

    И теперь, если в браузере вы введёте IP-адрес вашего VPS, вы увидите стартовую страницу установленного веб-сервера:

    Начальная страница Apache

    Настройка хостов

    • Создать каталог для вашего домена:
    • Изменить владельца каталога:
    • Изменить права на каталог:
    • Теперь создайте в этом каталоге файл index.html , например, с использованием nano :
    • В index.html скопируйте следующий текст:
    • Перед закрытием файла не забудьте сохранить внесённые изменения (если вы используете nano , нажмите Ctrl+X , Y и Enter ).
    • Следующим действием необходимо создать файл конфигурации настраиваемого хоста:
    • Вставьте в него следующий текст (замените my-domain.host на имя своего домена, а в строку ServerAdmin введите доступный вам E-mail):

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

    А дефолтный домен нужно отключить:

    Теперь необходимо протестировать синтаксис конфигурации хоста:

    Убедитесь, что ошибок нет:

    Проверка синтаксиса конфигурации хоста Apache

    Теперь произведите перезапуск Apache:

    И теперь, если в браузере вы введёте имя своего домена, браузер должен показать вам то, что вы сохранили в файле index.html :

    Виртуальный хост Apache в браузере

    Каждый владелец VPS сталкивается с вопросом, как разместить несколько сайтов на одном сервере с одним IP-адресом. Если вы используете в качестве веб-сервера Apache, виртуальные хосты (virtual hosts) — верное решение для разделения ресурсов и отдельной конфигурации для каждого сайта.

    Предварительная настройка

    Все действия осуществляются на сервере через подключение по SSH. Перед тем как приступить к настройке виртуальных хостов, необходимо произвести настройку сервера.

    Создание пользователя

    По умолчанию после создания сервера для доступа к нему создаётся root пользователь. В целях безопасности не рекомендуем работать под суперюзером.

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

    Где UserName — имя нового пользователя.

    Система попросит ввести пароль для нового пользователя и дополнительную информацию:


    Теперь установите права доступа, чтобы новый пользователь мог использовать команду sudo. Для этого выполните команду:

    Где UserName — имя созданного ранее пользователя.

    Готово, новый пользователь создан. Завершите SSH-сеанс под root и подключитесь к серверу под новым пользователем.

    Установка Ubuntu Apache

    Чтобы выполнить действия ниже, у вас должен быть установлен Apache. Для полноценной работы сайта рекомендуем установить LAMP (Linux Apache MySQL PHP). Это минимальный набор ПО, который чаще всего используется для размещения и запуска сайта. Как установить LAMP, вы можете узнать в инструкции.

    Подготовка доменов

    Ваши домены должны быть привязаны к облачному серверу. Сделать это вы можете по инструкции.

    Обратите внимание

    Подготовка каталогов

    Чтобы создать каталоги, выполните команды:

    В этих каталогах будут храниться файлы вашего сайта. Далее необходимо установить права доступа к ним:

    Готово, структура каталогов и права доступа настроены. Далее подготовим демостраницы.

    Создание демостраниц

    Перед тем как настроить конфигурационный файл, для удобной проверки финального результата мы создадим демостраницу для каждого виртуальная хоста. В каждую папку мы поместим файл index.html, в котором будет строка с именем домена.

    Не забудьте заменить доменные имена на ваши.

    Готово, теперь после настройки виртуальных хостов мы сможем проверить корректность их работы.

    Создание конфигурационных файлов и настройка

    Файл конфигурации Ubuntu Apache virtual hosts отвечает за обработку запросов к разным доменам. У Apache существует дефолтный файл конфигурации, который можно использовать в качестве шаблона. Его название может отличаться в зависимости от настроек сервера. В качестве примера мы обозначим название конфига как 000-default.conf. Для каждого виртуального хоста необходимо будет скопировать его, задать произвольное имя (рекомендуем использовать имя домена) и произвести определённые настройки. Обязательное условие — соблюдение расширения файла: .conf

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

    Где 000-default.conf — название конфигурационного файла по умолчанию.

    Откройте созданный файл командой:

    Затем сохраните изменения в файле и закройте его:

    Настройка виртуального хоста для первого домена завершена. Скопируйте этот файл для второго домена с помощью команды:

    Читайте также: