Привет всем читателям блога, в этой статье я опишу процесс того, как настроить виртуальные хосты в Apache на ОС Ubuntu 14. Думаю что описанные действия также можно применить и в более ранней/поздней версии Ubuntu.
Введение
Веб-сервер Apache разделяет свои функции и компоненты на отдельные части, которые могут быть настроены независимо друг от друга. Виртуальный хост (virtual host) – это базовая часть, которая отвечает за отдельный сайт или домен.
Виртуальные хосты позволяют использовать один сервер для хостинга нескольких сайтов используя один интерфейс или IP. Это удобно для тех, кто хочет использовать один VPS для хранения нескольких сайтов. Каждый настроенный соответствующим образом домен будет направлять пользователя к определенной директории сервера, содержащей информацию этого сайта, соответствующего домену.
Перед настройкой
Убедитесь что у вас установлен Apache. Про установку LAMP, куда включён веб-сервер Apache, можно прочитать тут.
Далее будет рассмотрено создание виртуального хоста для доменного имени example.com . Для кириллических доменов необходимо перевести доменное имя в 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
Вы должны увидеть похожую страницу:
Если сайт работает, значит вы успешно сконфигурировали виртуальный хост на веб-сервере Apache под Ubuntu! Apache может работать с любым количеством доменных имен, так что можете добавлять виртуальные хосты в Apache до тех пор, пока ваш сервер справляется с нагрузкой.
1222