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

Привет всем читателям блога, в этой статье я опишу процесс того, как настроить виртуальные хосты в Apache на ОС Ubuntu 14. Думаю что описанные действия также можно применить и в более ранней/поздней версии Ubuntu.

Введение

Веб-сервер Apache разделяет свои функции и компоненты на отдельные части, которые могут быть настроены независимо друг от друга. Виртуальный хост (virtual host) – это базовая часть, которая отвечает за отдельный сайт или домен.

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

Перед настройкой

Убедитесь что у вас установлен Apache. Про установку LAMP, куда включён веб-сервер Apache, можно прочитать тут.

Далее будет рассмотрено создание виртуального хоста для доменного имени example.com . Для кириллических доменов необходимо перевести доменное имя в punycode, например в помощью этого сервиса:

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

Шаг 1. Создаём структуру директорий

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

Наш корневой каталог (или document root) будет настроен на использование директорий внутри директории /var/www. Здесь мы создадим директорию для виртуального хоста example.com, который мы планируем настроить. Также создадим вложенную директорию public_html, которая будет содержать файлы сайта.

Создадим нужные директории следующей командой:

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

Шаг 2. Назначаем права доступа

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

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

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

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

sudo chmod -R 755 /var/www

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

Шаг 3. Создаём демо-страницу для хоста

Теперь, когда структура директорий готова, то можно создать какой-нибудь контент для отображения посетителям сайта example.com.

Мы делаем это просто для проверки, поэтому тестовая страница будет очень простой.

В папке public_html домена example.com создадим файл index.php:

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

В этом файле создадим простой PHP-скрипт, чтобы убедится что всё работает:

<?php 
    phpinfo();
?>

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

Шаг 4. Создаём файл виртуального хоста

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

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

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

Файл будет иметь примерно такое содержание:

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

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

ServerAdmin admin@example.com

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

ServerName example.com
ServerAlias www.example.com

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

DocumentRoot /var/www/example.com/public_html

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

<VirtualHost *:80>
    ServerAdmin admin@example.com
    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
</VirtualHost>

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

Шаг 5. Включаем новый виртуальный хост

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

sudo a2ensite example.com.conf

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

sudo service apache2 restart

Шаг 6. Тестируем результат

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

http://example.com

Вы должны увидеть похожую страницу:

Как установить LAMP - phpinfo

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

815