Виртуальные хосты Apache на Debian 10 (Buster)

Apache HTTP Server

Веб-сервер Apache – кроссплатформенный свободный веб-сервер. Более половины всех серверов по всему миру используют Apache.

Достоинства

  • Быстродействие, надёжность, безопасность
  • Гибкость конфигурации
    • основа — текстовые конфигурационные файлы на собственном языке с блоками директив.
    • Три уровня конфигурации
      1. сервера (httpd.conf).
      2. виртуального хоста (httpd.conf c версии 2.2, extra/httpd-vhosts.conf).
      3. каталога (.htaccess).
  • Возможность подключения внешних модулей (более 500) для предоставления данных, использовать СУБД для аутентификации пользователей, модифицировать сообщения об ошибках и т.д.
  • Встроенный механизм виртуальных хостов, позволяющий обслуживать на одном IP-адресе множество сайтов (доменных имён) с собственным содержимым, а также настройками ядра и модулей, ограничениями доступами ко всему сайту или отдельным файлам.

Установка

ssh root@server_ip
Подключение к серверу по SSH.
dpkg -l apache2
Проверка, не установлен ли Apache ранее.
sudo apt update
apt-get install apache2
Установка Apache. Возможно: apache2-doc libapache2-mod-php
systemctl enable apache2
Включить Apache для запуска автоматически после перезапуска сервера.
systemctl status apache2
Проверка состояния службы Apache.
w@deb-del:~$ systemctl status apache2
● apache2.service - The Apache HTTP Server
   Loaded: loaded (/lib/systemd/system/apache2.service; enabled; vendor preset: 
   Active: active (running) since Thu 2019-09-26 05:26:49 MSK; 3h 47min ago
     Docs: https://httpd.apache.org/docs/2.4/
  Process: 671 ExecStart=/usr/sbin/apachectl start (code=exited, status=0/SUCCES
 Main PID: 804 (apache2)
    Tasks: 7 (limit: 4915)
   Memory: 25.0M
   CGroup: /system.slice/apache2.service
           ├─804 /usr/sbin/apache2 -k start
           ├─818 /usr/sbin/apache2 -k start
           ├─819 /usr/sbin/apache2 -k start
           ├─820 /usr/sbin/apache2 -k start
           ├─821 /usr/sbin/apache2 -k start
           ├─822 /usr/sbin/apache2 -k start
           └─823 /usr/sbin/apache2 -k start

Виртуальные хосты

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

Типы виртуальных постов

Веб-сервером Apache поддерживаются два типа виртуальных хостов — на основе имен (name-based virtual hosts) и на основе IP (IP-based virtual hosts).

Виртуальные хосты на основе имен
Применяются при размещении несколько веб-сайтов на одном сервере
Виртуальный хост на основе IP
Позволяет иметь только один веб-сайт на одном IP-адресе

Однако, локальный сервер имеет только один IP: 127.0.0.1, поэтому вариант с привязкой к IP подходит далеко не всегда. В связи с этим, наиболее распространенным является использование виртуальных хостов на базе имен, привязанных к одному IP-адресу. Таким образом, можно хранить множество сайтов на одном IP.

webroot — каталоги сайтов

В качестве примера будет создано два сайта:

  • vblog.ru
  • vvlaw.ru

Для хранения компонентов этих сайтов необходимо создать корневые директории. Обычно их размещают в директории /var/www/

Это легко сделать при помощи команд:

sudo mkdir -p /var/www/vblog.ru/public_html
sudo mkdir -p /var/www/vvlaw.ru/public_html

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

Стартовые страницы

Затем в поддиректория public_html каждого сайта, командой nano index.html, нужно создать тестовые стартовые (индексные) страницы index.html следующего содержания:

<!DOCTYPE html>
<html lang="en" dir="ltr">
  <head>
    <meta charset="utf-8">
    <title>Новый сайт</title>
  </head>
  <body>
    <h1>Привет!</h1>
    <p>Это новый сайт vblog.ru / vvlaw.ru <!-- соответственно --></p>
  </body>
</html>

Затем веб-серверу Apache необходимо предоставить требуемый доступ к этим файлам (дать соответствующие разрешения), а также установить пользователя и группу.

Важно обратить внимание , что поддиректории в /var/www/ созданы с помощью sudo, поэтому принадлежат пользователю root. Чтобы обычные пользователи могли редактировать файлы в этих директориях, нужно дать им такие права:

sudo chown -R $USER:$USER /var/www/vblog.ru/public_html
sudo chown -R $USER:$USER /var/www/vvlaw.ru/public_html

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

Кроме того, нужно не забыть предоставить пользователям право на чтение директории сайта и всех его поддиректорий (чтобы страницы отображались правильно). Для следует выполнить команду:

sudo chmod -R 755 /var/www

Создание структуры директорий завершено.

Файлы виртуальных хостов

Теперь следует создать файлы виртуальных хостов (с расширением .conf). Они задают настройки отдельных сайтов и помогают Apache корректно отвечать на запросы.

Стандартный файл хоста с именем 000-default.conf, который можно использовать в качестве шаблона, поставляется с Apache и размещается в директории /etc/apache2/sites-available/. Его нужно скопировать его, чтобы создать виртуальный хост для каждого доменного имени: vblog.ru и vvlaw.ru.

# для vblog.ru
sudo cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/vblog.ru.conf
# для vvlaw.ru.conf
sudo cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/vvlaw.ru.conf

Затем следует открыть и отредактировать файлы:

# для vblog.ru
sudo nano /etc/apache2/sites-available/vblog.ru.conf
# для vvlaw.ru
sudo nano /etc/apache2/sites-available/vvlaw.ru.conf

По умолчанию файл .conf обычно имеет следующее содержание:

<VirtualHost *:80>
# виртуальный хост прослушивает порт 80:
  ServerAdmin webmaster@localhost
# указывает адрес адрес электронной почты администратора, включаемый сервером в любые сообщения об ошибках (без возвращения клиенту). Атрибут необязательной, можно вообще удалить строку.
  DocumentRoot /var/www/html
# определяет место, где должен искать Apache при обработке запроса для домена, определенного в ServerName или ServerAlias
  ErrorLog ${APACHE_LOG_DIR}/error.log
  CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

Нужно отредактировать конфигурацию по умолчанию, заменив соответствующие значения собственными.

<VirtualHost *:80>

ServerAdmin admin@vblog.ru
ServerName vblog.ru
ServerAlias www.vblog.ru
DocumentRoot /var/www/vblog.ru/public_html

ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined

</VirtualHost>

Настройка локальных хостов (опционально)

Если у вас нет доменного имени, и вместо настоящего вы использовали условный домен, вы можете протестировать настройки, временно отредактировав файл hosts на локальном компьютере. он будет перехватывать запросы на настроенные ранее домены и направлять их на VPS (то есть, выполнять работу DNS). Но этот метод работает только на локальной машине и подходит только для тестирования.

Примечание: Убедитесь, что вы перешли на локальную машину. Для выполнения данного раздела нужны учётные данные администратора.

Отредактируйте файл hosts с привилегиями администратора.

sudo nano /etc/hosts

В этом файле нужно указать IP-адрес сервера, а затем доменное имя, которое будет использоваться для доступа к серверу.

К примеру, если IP-адрес сервера — 111.111.111.111, в конец файла хоста нужно внести следующие строки:

127.0.0.1   localhost
...
111.111.111.111 vblog.ru
111.111.111.111 vvlaw.ru

Теперь все запросы к vblog.ru и vvlaw.ru будут отправлены на локальный компьютер, а оттуда — на IP-адрес сервера.

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

6: Результаты

Чтобы протестировать настройку виртуальных хостов, просто откройте домен в веб-браузере: vblog.ru

сообщение:

Success! The vblog.ruvirtual host is working!

Примечание: Результат, появившийся на экране, зависит от содержания созданного html файла.

Точно так же нужно проверить и второй сайт: vvlaw.ru

Если оба сайта работают, значит, виртуальные хосты настроены правильно.

Примечание: Если файл hosts на локальном компьютере был изменён, после тестирования удалите внесённые в него строки, чтобы не засорять файл ненужными записями.


Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *