Всех категорически приветствую!
Теперь пробежимся по настройкам Apache. Не по всем, конечно, а по наиболее часто пригождающимся, а именно: создание виртуальных хостов, назначение порта для прослушки и создание защищенных хостов (HTTPS).
Краткий обзор по установке и настройке связки LAMP был в предыдущей статье (почитайте, если сборка LAMP у вас еще не установлена).
Чуть забегая вперед, скажу, что информация о настройке HTTPS, о портах хостов и работа с .htaccess и .htpasswd будут описаны в следующих двух публикациях. Статьи решил сделать отдельными для того, чтобы материал был более легкочитаемым. Иначе, свалка всей информации в одну статью приводит к тому, что ее просто тяжело переваривать из-за большого объема.
Итак, начнем. В этой статье о хостах.
Виртуальные хосты.
Хост – это, так скажем, некий функциональный оконечник. Если очень сильно обобщить, то любой девайс в сети, которому можно назначить IP-адрес, так или иначе можно назвать хостом. Это может быть физический девайс (железный сервер, например) так и виртуальный. Виртуальность, как мы понимаем, это абстракция, которая может трактоваться очень гибко. Виртуальные хосты, в нашем случае, будет обслуживать программный сервер Apache, позволяющий создать несколько программных (виртуальных) web-серверов и умеющий перенаправить на них пользовательские запросы.
Почему их называют виртуальными? Потому что физический хост (сервер) у нас всего один, как и один IP-адрес (в моем случае). Но сайтов на этом сервере мы хотим держать, к примеру, два или три. Не ставить же два или три железных сервера). Поэтому придумали программные серверы, умеющие эмулировать работу физических, т.е. – виртуальные.
Например:
- у нас имеется один физический сервер, на котором стоит Apache и есть один фиксированный IP-адрес, условно, 192.168.44.201, назначенный этому серверу. Так же у нас имеется 2 доменных имени – www.test-site1.ru и www.test-site2.ru;
- в доменных записях типа «A» у нас оба этих имени привязаны к IP-адресу 192.168.44.201, т.е. при вводе в браузере любого из двух, выше приведенных, доменных имен, мы будем отправлены на IP-адрес 192.168.44.201. И вот тут вступает в работу Apache, задача которого по доменному имени понять, на какой именно сайт мы хотим попасть;
- если настройка виртуальных хостов не была произведена, то при обращении к любому из двух сайтов мы будем всегда попадать на дефолтную страницу или на первый сайт, имеющийся в Apache.
Вот общая схема, отражающая суть работы виртуальных хостов Apache:
Настройка Apache для работы с виртуальными хостами сводится к трем шагам:
1) создание корневой директории для размещения сайта и настройка прав доступа;
2) настройка конфигурации виртуального хоста (на каждый хост отдельный конфиг);
3) активация хоста в Apache (и рестарт Apache).
1) Создание корневой директории для сайта
Логично, что для каждого сайта крайне желательно иметь отдельную директорию. Этакую квартиру в большом доме. Согласитесь, что поселить несколько семей в одной здоровой комнате без личного пространства – идея очень глупая и приведет к постоянной ругани хозяек на одной кухне и к хаосу. Так же иногда в субдиректории сайта админы селят, например, тематические форумы (а форум чаще всего – это отдельный сайт), так или иначе относящиеся к сайту. Это сродни тому, что вы подселили к себе в квартиру тёщу. До определенного момента на одной кухне с дочерью они будут находить консенсус, но только до определенного момента… Не приветствую такой поход и вам не советую. Так же и с сайтами. Поэтому создадим для наших тестовых сайтов две директории.
Я использую классическое расположение общедоступных директорий Apache – «/var/www/html» и плясать буду именно отсюда.
- директория для www.test-site1.ru - /var/www/html/tsite1ru
- директория для www.test-site2.ru - /var/www/html/tsite2ru
Старайтесь называть директории (а в дальнейшем, конфиги логи и т.п.), относящиеся к сайту, предельно лаконично, иначе будет «ёёё-маёё…»
Для дальнейшей проверки разместим в этих директориях по одному файлику «index.html» с таким содержанием:
<html>
<center>
Site 1 (Site 2 для второго)
</center>
</html>
(файлики из консоли создаются командой «touch имя_файла.html»)
Определим созданным папкам и файлам права доступа.
#> chown -R www-data:www-data /var/www/html/tsite1ru
#> chown -R www-data:www-data /var/www/html/tsite2ru
#> chmod -R 755 /var/www/html/tsite1ru
#> chmod -R 755 /var/www/html/tsite2ru
(файлы и директории приписали пользователю и к группе www-data – это пользователь и группа, от имени которых по умолчанию работает Apache, если вы не меняли конфигурацию. Так же определили права доступа к директориям и файлам – 755 = владелец – rwx; группа – r-x; все остальные – r-x)
Вообще, тема прав доступа отдельная и весьма обширная. Для каждых случаев права настраиваются индивидуально под конкретные цели и задачи. Я их подробно обсуждать не буду.
Почитать о правах доступа в Linux можно ТУТ
Или на хелп убунту ТУТ
2) С директориями закончили. Теперь второй пункт – настройка конфигурации виртуальных хостов.
Как я уже говорил, для каждого хоста в Apache создается отдельный конфигурационный файл. Эти файлы хранятся в директории «/etc/apache2/sites-available».
В свежеустановленном Apache имеется два дефолтных конфига – для http (000-default.conf) и для https (default-ssl.conf). В них содержится минимальный набор настроек. В принципе, можно эти конфиги скопировать, дополнить своими пунктами и использовать в своих целях. Я же приведу готовый вариант своих рабочих конфигов. Дабы не загромождать статью кодом, ниже прямые ссылки на файлы с моего сайта (без вирусов, естественно).
Расположение файлов выглядит так:
В наших конфигах (они аналогичны друг, отличаются только цифрой 1 и 2 соответственно) пока интересны только следующие строки:
Разжевывать смысл каждой строки не буду. Почитать про назначение директив конфига Apache можно ТУТ
Сохраняем файлик (и не забываем во втором конфиге везде проставить цифру 2 вместо 1).
3) Активируем виртуальные хосты
Теперь, когда директории и конфиги готовы к употреблению, нужно активировать хосты. Задача весьма банальная:
#> a2ensite tsite1ru.conf
#> a2ensite tsite2ru.conf
#> systemctl reload apache2
Хосты активированы. Проверяем:
(для корректного обращения к серверу по тестовым доменным именам я создал статические DNS-записи на маршрутизаторе. Вы можете использовать файлик hosts в винде или в линуксе)
Что и требовалось получить.
***
«Ручной» способ активации хоста (вдруг пригодится)
Прописать символическую ссылку в директории «/etc/apache2/sites-enabled» на файл конфига и рестартануть Apache:
#> ln –s /etc/apache2/sites-available/tsite1ru.conf /etc/apache2/sites-enabled/tsite1ru.conf
#> ln –s /etc/apache2/sites-available/tsite2ru.conf /etc/apache2/sites-enabled/tsite2ru.conf
#> systemctl restart apache2
Шпаргалка:
Активация хоста: a2ensite имя_конфига.conf;
Деактивация хоста: a2dissite имя_конфига.conf;
Вывод всех команд «a2»: набрать «a2» и понажимать TAB;
Вывод всех доступных конфигов: набрать a2ensite (a2dissite) и понажимать TAB;
Перезагрузка конфигов Apache: systemctl reload apache2;
Создать символическую ссылку: ln –s /путь_к_файлу /путь_для_хранения_ссылки
На этом сегодня все!
В следующей статье об HTTPS и портах Apache.
Ставьте лайк и подписывайтесь!
До связи!