Поиск по сайту:

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


Введение

Веб-сервер Apache — самый популярный способ обслуживания веб-контента в Интернете. На его долю приходится более половины всех активных веб-сайтов в Интернете, и он чрезвычайно мощный и гибкий.

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

Эти обозначения позволяют администратору использовать один сервер для размещения нескольких доменов или сайтов за пределами одного интерфейса или IP-адреса с помощью механизма сопоставления. Это актуально для всех, кто хочет разместить более одного сайта на одном VPS.

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

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

Предпосылки

Прежде чем приступить к работе с этим учебным пособием, вы должны создать пользователя без полномочий root, как описано в шагах 1–4 здесь.

Вам также потребуется установить Apache, чтобы выполнить эти шаги. Если вы еще этого не сделали, вы можете установить Apache на свой сервер с помощью apt-get:

sudo apt-get update
sudo apt-get install apache2

После того, как эти шаги выполнены, мы можем приступить к работе.

Для целей этого руководства моя конфигурация создаст виртуальный хост для example.com и еще один для test.com. Они будут упоминаться в руководстве, но вы должны заменить свои собственные домены или значения, следуя далее.

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

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

Шаг первый — создайте структуру каталогов

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

Наш корневой каталог документа (каталог верхнего уровня, который Apache просматривает для поиска контента для обслуживания) будет установлен в отдельные каталоги в каталоге /var/www. Здесь мы создадим каталог для обоих виртуальных хостов, которые мы планируем создать.

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

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

<пред>

Части, выделенные красным цветом, представляют собой доменные имена, которые мы хотим обслуживать с нашего VPS.

Шаг второй — Предоставление разрешений

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

<пред>

Переменная $USER примет значение пользователя, под которым вы в данный момент вошли в систему, когда вы нажимаете \ENTER. Таким образом, наш обычный пользователь теперь владеет public_html подкаталоги, где мы будем хранить наш контент.

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

sudo chmod -R 755 /var/www

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

Шаг третий — создайте демонстрационные страницы для каждого виртуального хоста

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

Мы собираемся просто для демонстрации, поэтому наши страницы будут очень простыми. Мы просто создадим страницу index.html для каждого сайта.

Начнем с example.com. Мы можем открыть файл index.html в нашем редакторе, набрав:

<пред>

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

<пред>

Сохраните и закройте файл, когда закончите.

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

<пред>

Затем мы можем открыть файл и изменить соответствующие фрагменты информации:

<пред>

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

Шаг четвертый — создайте новые файлы виртуального хоста

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

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

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

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

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

<пред>

Откройте новый файл в вашем редакторе с правами суперпользователя:

<пред>

Файл будет выглядеть примерно так (я удалил здесь комментарии, чтобы сделать файл более доступным):

<пред>

Как видите, здесь не так уж и много. Здесь мы настроим элементы для нашего первого домена и добавим некоторые дополнительные директивы. Этот раздел виртуального хоста соответствует любым запросам, сделанным через порт 80, порт HTTP по умолчанию.

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

<пред>

После этого нам нужно добавить две директивы. Первый, называемый ServerName, устанавливает базовый домен, который должен соответствовать этому определению виртуального хоста. Скорее всего, это будет ваш домен. Второй, называемый ServerAlias, определяет дополнительные имена, которые должны совпадать, как если бы они были базовым именем. Это полезно для сопоставления определенных вами хостов, таких как www:

<пред>

Единственное, что нам нужно изменить для базового файла виртуального хоста, — это расположение корня документа для этого домена. Мы уже создали нужный каталог, поэтому нам просто нужно изменить директиву DocumentRoot, чтобы она отражала созданный нами каталог:

<пред>

Итого наш файл виртуального хоста должен выглядеть так:

<пред>

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

Скопируйте первый виртуальный хост и настройте для второго домена

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

Начните с его копирования:

<пред>

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

<пред>

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

<пред>

Сохраните и закройте файл, когда закончите.

Шаг пятый — включите новые файлы виртуального хоста

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

Мы можем использовать инструмент a2ensite, чтобы включить каждый из наших сайтов следующим образом:

<пред>

Когда вы закончите, вам нужно перезапустить Apache, чтобы эти изменения вступили в силу:

sudo service apache2 restart

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

 * Restarting web server apache2
 AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.0.1. Set the 'ServerName' directive globally to suppress this message

Это безобидное сообщение, которое не влияет на наш сайт.

Шаг шестой — настройте файл локальных хостов (необязательно)

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

Это перехватит любые запросы для настроенных вами доменов и направит их на ваш VPS-сервер, как это сделала бы система DNS, если бы вы использовали зарегистрированные домены. Однако это будет работать только с вашего компьютера и просто полезно для целей тестирования.

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

Если вы работаете на компьютере Mac или Linux, отредактируйте локальный файл с правами администратора, набрав:

sudo nano /etc/hosts

Если вы работаете на компьютере с Windows, инструкции по изменению файла hosts можно найти здесь.

Детали, которые вам нужно добавить, — это общедоступный IP-адрес вашего сервера VPS, за которым следует домен, который вы хотите использовать для доступа к этому VPS.

Для доменов, которые я использовал в этом руководстве, предполагая, что мой IP-адрес VPS — 111.111.111.111, я мог бы добавить следующие строки в конец файла hosts:

<пред>

Это будет направлять любые запросы для example.com и test.com на наш компьютер и отправлять их на наш сервер по адресу 111.111.111.111. Это то, что нам нужно, если мы на самом деле не являемся владельцами этих доменов, чтобы протестировать наши виртуальные хосты.

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

Шаг седьмой — проверьте свои результаты

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

<пред>

Вы должны увидеть страницу, которая выглядит следующим образом:

Аналогичным образом, если вы можете посетить свою вторую страницу:

<пред>

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

Если оба этих сайта работают хорошо, вы успешно настроили два виртуальных хоста на одном сервере.

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

Если вам нужен доступ в долгосрочной перспективе, подумайте о покупке доменного имени для каждого нужного вам сайта и настройке его так, чтобы он указывал на ваш VPS-сервер.

Заключение

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

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

Джастин Эллингвуд