Веб сервер Apache наиболее популярный веб сервер для размещения сайтов в интернете. Хорошо, когда на одном сервере или VPS всего один сайт, а когда их несколько? Для этого нужно настроить virtual hosts Apache.
Настройка virtual hosts Apache наиболее востребована в случае если вы решили перейти с shared-hosting на свой, например VPS.
Виртуальные хосты (virtual hosts) позволяют администратору использовать один сервер для размещения нескольких сайтов (в рамках одного интерфейса или IP-адреса). Каждый домен, настроенный таким образом, будет направлять посетителя на соответствующий сайт. Количество виртуальных хостов на одном сервере ограничивается исключительно ресурсами этого сервера.
Данное руководство поможет настроить виртуальные хосты (virtual hosts Apache) на VPS с Ubuntu 16.04, что позволит размещать любое количество своих сайтов.
Условия
- Сервер с установленной Ubuntu 16.04 server
- Созданный пользователь(не root) с привилегиями суперпользователя. Как создать такого пользователя?
- Доступ к серверу по ssh
Инструкция по настройке virtual hosts (виртуальных хостов) на Apache в Ubuntu 16.04 server
В данном примере будем настраивать virtual hosts для двух вымышленных доменов test.com и virtual.com (Не забудьте поменять их на свои домены).
Шаг № 1 Установка веб сервера Apache
Для установки выполним следующие команды:
1 2 |
sudo apt update sudo apt install apache2 |
Шаг № 2 Настройка директорий для виртульнных хостов (virtual hosts)
По умолчанию веб сервере apache настроен на просмотр основной директории для размещения сайтов /var/www В ней будем создавать новые директории для наших сайтов
1 2 |
sudo mkdir -p /var/www/test.com/html sudo mkdir -p /var/www/virtual.com/html |
Контент сайтов будем размещать в папку /html
Настроим права доступа для всех папок и подпапок в директории /var/www командой:
1 |
sudo chmod -R 755 /var/www |
Структура для будущих сайтов test.com и virtual.com — готовы.
Шаг № 3 Создаем тестовую страницу для каждого из сайтов (virtual hosts)
Для каждого из сайтов создадим простую страниц вида index.html
Выполним следующую команду:
1 |
sudo nano /var/www/test.com/html/index.html |
В созданный файл добавим следующий текст:
1 2 3 4 5 6 7 8 9 10 11 |
<!DOCTYPE html> <html lang="ru-RU"> <head> <meta http-equiv="content-type" content="text/html; charset=UTF-8"> <title>test.com</title> </head> <body> <h1>Домен: test.com</h1> <h1>Виртуальный хост для сайта test.com - настроен</h1> </body> </html> |
Сохраняем файл и выходим.
Создаем такой же файл для сайт virtual.com
1 |
sudo nano /var/www/virtual.com/html/index.html |
И добавляем такой же текст. Меня только название домена
1 2 3 4 5 6 7 8 9 10 11 |
<!DOCTYPE html> <html lang="ru-RU"> <head> <meta http-equiv="content-type" content="text/html; charset=UTF-8"> <title>virtual.com</title> </head> <body> <h1>Домен: virtual.com</h1> <h1>Виртуальный хост для сайта test.com - настроен</h1> </body> </html> |
Шаг № 4 Создаем virtual hosts файлов
Virtual hosts Apache файл содержит все настройки для каждого из сайтов.
В Apache есть файл по умолчания для virtual hosts он называется 000-default.conf
Возьмем его за основу для настройки наших сайтов. По умолчанию каждый файл для virtual hosts должен заканчиваться на .conf
Создание директив для сайта test.com
Копируем файл по умолчанию и редактируем его для сайт test.com
1 |
sudo cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/test.com.conf |
Открываем новый файл для редактирования
1 |
sudo nano /etc/apache2/sites-available/test.com.conf |
Пример файла виртуального хоста с убранными комментариями для удобства восприятия
1 2 3 4 5 6 |
<VirtualHost *:80> ServerAdmin webmaster@localhost DocumentRoot /var/www/html ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined </VirtualHost> |
Первым делом меняем директиву ServerAdmin, указав в нем электронный адрес администратора этого сайта, например:
1 |
ServerAdmin admin@test.com |
После этого добавим две директивы. Первая будет называться ServerName, где мы указываем реальный домен своего сайта и вторую ServerAlias, где так же указываем свой домен но добавляем в начале www, в итоге они буду выглядеть:
1 2 |
ServerName test.com ServerAlias www.test.com |
Теперь настроим путь к нашему новому виртуальному хосту (virtual hosts). Это путь где будет размещен наш новый сайт
1 |
DocumentRoot /var/www/test.com/html |
В итоге файл настройки virtual hosts для для домена test.com будет выглядеть:
1 2 3 4 5 6 7 8 |
<VirtualHost *:80> ServerAdmin admin@test.com ServerName test.com ServerAlias www.test.com DocumentRoot /var/www/test.com/html ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined </VirtualHost> |
Сохраняем и закрываем файл. (В редакторе nano это комбинация клавиш ctrl + x)
Создание директив для сайта virtual.com
Копируем настройки уже готового сайта test.com
1 |
sudo cp /etc/apache2/sites-available/test.com.conf /etc/apache2/sites-available/virtual.com.conf |
Открываем файл virtual.com.conf
1 |
sudo nano /etc/apache2/sites-available/virtual.com.conf |
И приводим его к виду:
1 2 3 4 5 6 7 8 |
<VirtualHost *:80> ServerAdmin admin@virtual.com ServerName virtual.com ServerAlias www.virtual.com DocumentRoot /var/www/virtual.com/html ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined </VirtualHost> |
Сохраняем и закрываем файл.
Шаг № 5 Активируем virtual hosts наших сайтов
Для активации воспользуемся утилитой Apache a2ensite
1 2 |
sudo a2ensite test.com.conf sudo a2ensite virtual.com.conf |
Отключаем стандартный файл конфигурации
1 |
sudo a2dissite 000-default.conf |
Когда мы закончили, для применения изменений перезапустим веб сервер Apache
1 |
sudo service apache2 restart |
Шаг № 6 Настройка файлов host (опционально)
Данный шаг, нужен если вы экспериментируете с настройками apache на своем компьютере, на котором веб сервер Apache развернут например в VirtualBox. Если вы настраиваете виртуальные хосты на своем VPS сервере, данный шаг можно пропустить.
Если на рабочем компьютере установлен Mac или Linux (например на моем рабочем компьютере установлена Ubuntu 16.04), то для работы с виртуальными хостами вносим изменения в файл /etc/hosts
Если у тестового сервера ip адрес 192.168.0.110 то на основном компьютере, на котором установлен VirtualBox настройки файла /etc/hosts будут выглядеть следующим образом
1 2 3 4 |
127.0.0.1 localhost 127.0.1.1 desktop 192.168.0.110 test.com 192.168.0.110 virtual.com |
Шаг № 7 Проверяем результат
Если вы работаете с VPS не забудьте в панели управления доменов, добавить A-запись для каждого из доменов с ip адресом VPS сервера.
Вводим в браузере:
1 |
http://test.com |
Если все сделано правильно, увидим результат:
Вывод
Поздравляю! Мы настроили virtual hosts на веб сервере Apache в Ubuntu 16.04 server. Теперь можно размещать любое количество веб сайтов, но с учетом допустимых ресурсов сервера.
Удачи !