My domain on Apache!

Настройка виртуальных хостов Apache

Apache — это один из самых популярных веб-серверов для размещения сайтов на хостингах и VPS, а также для создания тестовых окружений. Если на вашем сервере один сайт, то все довольно просто, все запросы, поступающие к серверу, отправляется этот единственный сайт. А что если сайтов несколько? Как Apache будет понимать кому адресован запрос?

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

Как работают виртуальные хосты Apache?

Не будем пока о локальных системах. Если у вас есть веб-сайт, то наверное, вы занимались парковкой домена и уже знаете как все настраивается. Сначала используется DNS сервер, который выдает IP адрес вашего сервера всем клиентам, запросившим адрес этого домена. Затем клиенты отправляют запрос на ip вашего сервера, а веб-сервер уже должен его обработать.

Обычно, на хостингах один веб-сервер обслуживает десятки, а то и сотни сайтов. И как вы понимаете, все запросы поступают на один ip. Для распределения их между папками на сервере используется имя домена, которое передается вместе с запросом в HTTP заголовке «Host». Именно поэтому нужно выполнять парковку домена не только на DNS сервисе, но и на вашем сервере.

Вы настраиваете виртуальные хосты Apache, а затем веб-сервер сравнивает домен, переданный в заголовке «Host» с доступными виртуальными доменами и если находит совпадение, то возвращает содержимое настроенной папки или содержимое по умолчанию, или ошибку 404. Нужно сказать, что вы можете настроить виртуальный хост для любого домена, например, vk.com или losst.pro. Но пользователи смогут получить доступ к этому домену у вас, только если к вам будут поступать запросы от браузеров, в которых будет значиться этот домен. А теперь детальнее про настройку.

Настройка виртуальных хостов Apache?

Я уже подробно рассматривал как настроить Apache в отдельной статье. Поэтому не буду полностью расписывать здесь все конфигурационные файлы. Остановимся на файлах виртуальных хостов. Для удобства они вынесены в отдельные папки:

Читайте также:  Удаление лишнего linux mint

Ясно, что это разделение очень условно. Вы можете его убрать и добавлять свои виртуальные хосты прямо в основной конфигурационный файл. Все файлы из этих папок подключаются к нему с помощью директив Include. Но ведь так намного удобнее. В папке sites-available находятся все конфигурационные файлы, но они пока еще не активированы и отсюда не импортируются никуда. При активации нужного хоста на него просто создается ссылка в папку /etc/apache2/sites-enabled.

Для примера, создадим новый конфигурационный файл для виртуального хоста site1.ru. Для этого просто скопируем существующую конфигурацию для хоста по умолчанию — 000-default:

$ sudo cp /etc/apache2/sites-enabled/000-default.conf /etc/apache2/sites-enabled/site1.ru.conf

Сначала рассмотрим синтаксис того, что вы увидите в этом файле:


ServerName домен
ServerAlias псевдоним_домена
ServerAdmin емейл@администратора
DocumentRoot /путь/к/файлам/сайта
ErrorLog /куда/сохранять/логи/ошибок/error.log
CustomLog /куда/сохранять/логи/доступа/access.log combined

Это минимальная конфигурация, которую вам нужно указать, чтобы создать виртуальный хост Apache. Конечно, здесь вы можете использовать и другие директивы Apache, такие как Deny, Allow и многие другие. А теперь рассмотрим наш пример для тестового сайта site1.ru:


ServerName site1.ru
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html/site1.ru/
ErrorLog $/error.log
CustomLog $/access.log combined

Здесь мы используем звездочку вместо ip адреса, это значит, что веб-сервер будет слушать соединения на всех адресах, как на внешнем, так и на localhost. Порт 80, это порт по умолчанию. Затем указываем домен, электронный адрес администратора, и путь к папке, в которой будут находиться данные сайта. Две строчки Log говорят куда сохранять логи, но добавлять их необязательно. Дальше, нам нужно активировать этот хост. Мы можем вручную создать ссылку или использовать уже заготовленную команду:

Затем перезапустите Apache:

sudo systemctl restart apache2

И нам осталось все это протестировать. Если ваш сервер имен еще не направляет запросы к домену на ваш ip, а вы хотите уже проверить как все работает, можно пойти обходным путем. Для этого достаточно внести изменения в файл /etc/hosts на машине, с которой вы собрались открывать сайт. Этот файл, такой себе локальный DNS. Если компьютер находит ip для домена в нем, то запрос в интернет уже не отправляется. Если вы собираетесь тестировать с той же машины, на которую установлен Apache2, добавьте:

Читайте также:  Arch linux i3wm install

Если же это будет другой компьютер, то вместо 127.0.0.1 нужно использовать адрес вашего сервера, на котором установлен Apache. Затем можете открыть сайт в браузере:

Настройка виртуальных хостов с SSL

Если вы хотите использовать современный безопасный протокол https для работы вашего виртуального хоста, то вам кроме обычного хоста на порту 80 будет необходимо создать виртуальный хост на порту 443. Здесь будет не так много отличий, вот пример, для нашего сайта site1.ru:



ServerAdmin webmaster@localhost
DocumentRoot /var/www/html
ServerName site1.ru
ErrorLog $/error.log
CustomLog $/access.log combined
SSLEngine on
SSLCertificateFile /etc/ssl/certs/ssl-cert-snakeoil.pem
SSLCertificateKeyFile /etc/ssl/private/ssl-cert-snakeoil.key

SSLOptions +StdEnvVars


Теперь о каждой новой строчке более подробно:

  • — весь код в этой секции будет выполнен только в том случае, если активирован модуль mod_ssl. Это нужно для безопасности, чтобы если модуль не активирован, то код не вызывал ошибок;
  • SSLEngine — включает поддержку SSL;
  • SSLCertificateFile, SSLCertificateKeyFile — пути к файлам сертификата и приватного ключа;
  • SSLOptions — для скриптов php, cgi и других мы передаем стандартные SSL опции.

Вот и все. Как видите, не так сложно. Осталось перезапустить Apache и проверить как все работает:

sudo a2enmod ssl
sudo a2ensite site1.ru-ssl
sudo systemctl restart apache2

Затем откройте https адрес в браузере:

Выводы

В этой статье мы рассмотрели как выполняется настройка виртуальных хостов Apache. Как видите, один веб-сервер может обслуживать сотни сайтов, а создание виртуальных хостов apache совсем не сложно. Надеюсь, эта статья была вам полезной. Если у вас остались вопросы, спрашивайте в комментариях!

Обнаружили ошибку в тексте? Сообщите мне об этом. Выделите текст с ошибкой и нажмите Ctrl+Enter.

Источник

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

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

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

Установка Apache

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

$ sudo apt update $ sudo apt install apache2

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

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

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

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

Чтобы разрешить доступ только трафику без шифрования, вам нужно открыть на UFW только порт 80 или профиль ‘ Apache ‘:

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

Статус UFW

Если статус UFW – не активный, брандмауэр следует активировать:

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

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

$ sudo systemctl status apache2

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

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

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

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

И вот, настало время посмотреть, как непосредственно осуществляется настройка виртуальных хостов Apache в Ubuntu 20.04. В качестве домена используйте имя своего зарегистрированного сайта (в примере это – my-domain.host ). Учитывая это, необходимо произвести следующие действия:

$ sudo mkdir /var/www/my-domain.host
$ sudo chown -R $USER:$USER /var/www/my-domain.host
$ sudo chmod -R 755 /var/www/my-domain.host
$ sudo nano /var/www/my-domain.host/index.html
    

MY-DOMAIN.HOST

It is my domain.

  • Перед закрытием файла не забудьте сохранить внесённые изменения (если вы используете nano , нажмите Ctrl+X , Y и Enter ).
  • Следующим действием необходимо создать файл конфигурации настраиваемого хоста:
$ sudo nano /etc/apache2/sites-available/my-domain.host.conf
  • Вставьте в него следующий текст (замените my-domain.host на имя своего домена, а в строку ServerAdmin введите доступный вам E-mail):
 ServerAdmin mail@my-domain.host ServerName my-domain.host ServerAlias www.my-domain.host DocumentRoot /var/www/my-domain.host ErrorLog $/error.log CustomLog $/access.log combined 

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

$ sudo a2ensite my-domain.host.conf

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

$ sudo a2dissite 000-default.conf

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

$ sudo apache2ctl configtest

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

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

$ sudo systemctl restart apache2

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

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

Таким образом, вы произвели настройку хоста Apache на вашем VPS для одного из ваших сайтов. Вы вполне можете поместить на этот же сервер ещё один или даже несколько ваших доменов. Для чего необходимо ещё раз произвести действия, описанные в разделе “Настройка хостов”, но при этом, каждый раз вам нужно использовать уже другое доменное имя для добавления хоста Apache в систему.

Источник

Оцените статью
Adblock
detector