Веб-сервер Apache является наиболее распространенной платформой для развертывания сервисов, работающих по протоколу HTTP. Популярность объяснима – программное обеспечение включает динамически подгружаемые модули, поддержку множества форматов файлов, взаимодействие с другим профильным софтом.
Необходимые условия
Работа с HTTP-сервером Apache требует предварительно настроенной операционной системы, в этой статье за основу возьмем CentOS 8, но инструкция подойдет и для других версий. Будет достаточно создать пользователя с привилегиями sudo и разрешить соединение во встроенном брандмауэре. Разворачивать систему можно на локальном ПК или виртуальной машине, арендованной у провайдера timeweb.cloud.
Шаг 1. Инсталляция Apache
Пакет с инструментом Apache есть в официальном репозитории CentOS, поэтому он доступен для установки при помощи dnf. Выполним команду:
После подтверждения диспетчер пакетов выполняет установку веб-сервера Apache в CentOS и всех необходимых для его функционирования зависимостей. Важно, чтобы фаервол уже был настроен для ответа на запросы по протоколу HTTP. Например, понадобится открытый порт 443 вместе со включенной службой http.
После применения команды обязательна перезагрузка брандмауэра, иначе новые правила не начнут действовать:
Установка Apache завершена, пора запускать его и проверять работоспособность.
Шаг 2. Проверка HTTP-сервера
Поначалу веб-сервер требует ручного запуска, поэтому введем команду:
Проверить, запустилась ли служба, можно при помощи команды:
Если веб-сервер работает штатно, пользователь увидит сообщение, в котором должен отразиться статус active (running):
Второй способ проверки – открыть хост через браузер по IP-адресу сервера:
Найти IP сервера можно в панели управления или в письме, которое пришло на почту после установки сервера.
Шаг 3. Управление процессом Apache
Теперь можно опробовать некоторые команды systemctl, используемой при взаимодействии со службой. Например, остановка HTTP-сервера будет после ввода:
Повторный запуск происходит по команде:
Перезапуск, например, для принятия изменений в настройках:
Возможен рестарт без прерывания текущего соединения:
По умолчанию процессы Apache запускаются при загрузке сервера. Если это нежелательно, то отключите автозапуск:
Первоначальные настройки HTTP-сервера предполагают развертывание всего одного сайта. Но есть возможность создать виртуальные хосты, на каждом из которых создают отдельные ресурсы.
Шаг 4. Настройка виртуальных хостов
В системе Apache они схожи с построением в Nginx. Их также используют, чтобы обеспечить разделение конфигурации и развертывание на одной виртуальной машине или физическом сервере двух и более доменов. В этой статье везде будем указывать условный сайт под названием example.com. При работе его заменяют реальным доменом.
Теперь приступим к настройке. Создайте папку html в каталоге example.com (var/www/):
В дополнение желательно создать отдельную папку, где будут храниться файлы журнала:
Переменной среды $USER назначают права владельца:
Перед продолжением желательно проверить, что у корневой папки установлены стандартные разрешения:
Теперь можно в любом редакторе кода сформировать index.html. Например, запустим vi:
Внесем простейшее содержимое:
После сохранения изменений в index.html у нас почти все готово для генерации файлов. Они задают настройки каждого отдельно взятого домена и транслируют их Apache, чтобы HTTP-сервер понимал, как обрабатывать запросы. Хранить их будем в каталоге sites-available, к нему создается папка sites-enabled, указывающая на готовность хоста принимать трафик из сети:
Остается дать команду HTTP-серверу найти виртуальные хосты в папке sites-enabled. Чтобы процесс прошел как надо, нужно предварительно изменить основной конфигурационный файл Apache командой:
Затем переместить курсор в самый конец файла и внести там строчку:
Теперь настало время для формирования непосредственно файла виртуального хоста:
В него вносится следующая информация:
Вместо example.com нужно везде проставить реальный домен. Тогда файл укажет веб-серверу, где найти корневой каталог сайта, где сохранять журналы ошибок и обращений к сайту. После закрытия файла с сохранением изменений останется активировать виртуальные хосты – сформировать символьную ссылку для доменов в каталоге sites-enabled:
Теперь настройка завершена, и хост готов к функционированию. Но перед перезапуском веб-сервера желательно проверить, что модуль SELinux правильно обрабатывает запросы.
Шаг 5. Настройка разрешений в SELinux
Модуль безопасности Linux SELinux повышает безопасность операционной системы. В CentOS встроен пакет, уже настроенный для взаимодействия с Apache. Но в данном примере мы изменили ее, поэтому при старте служб веб-сервера пользователь получит ошибку. Чтобы решить такую проблему, нужно изменение политик SELinux в отношении Apache. Всего применяют два способа корректировки – универсальный и для конкретной папки.
Вариант №1. Универсальный
Процедура позволяет модулю безопасности использовать любые процессы Apache через булеву переменную httpd_unified. Такой подход удобен, но не рассматривает раздельную политику папок и файлов. Запуск универсальной политики:
Команда setsebool нужна для замены булевых значений, флаг -P – для обновления времени запуска при старте, при каждой перезагрузке оно сохраняется. В данном примере булево значение httpd_unified было активировано со значением 1.
Вариант №2. Корректировка политик Apache для каталога
Отдельная настройка требует дополнительных действий, зато позволяет задавать разрешения для каждого каталога или файла. При выборе этой методики придется вручную задавать тип контекста для каждой новой папки. Например, проверим параметры /var/www/example.com/log командой:
В результате пользователь увидит сообщение:
Судя по нему, сейчас используется контекст httpd_sys_content_t, т.е. служба Apache будет читать только те файлы, которые размещены в указанной папке. Если изменить его на httpd_log_t, веб-сервер будет генерировать данные для файла журнала:
Применить внесенные изменения можно командой:
Флаг -R позволяет запускать ее рекурсивно с обновлением существующих файлов. Символ -V распечатывает вносимые изменения. Это выглядит так:
Если хочется убедиться в изменении типа контекста, просмотрите еще раз текущее состояние:
Вывод на экран:
Шаг 6. Тестирование виртуального хоста
После перенастройки разрешений в SELinux HTTP-сервер будет без проблем записывать данные в каталог /var/www/example.com/log. Перезапустим процесс Apache:
Сформируем перечень содержимого каталога /var/www/example.com/log, это позволит убедиться в том, что система создала журнал:
Результат выглядит так:
Первая строка подтверждает наличие файла error.log, а вторая – requests.log. Это практически финал, пользователь может проверить работоспособность домена через браузер. В качестве ответа будет примерно такая надпись:
Она подтверждает, что виртуальный хост был настроен и начал обслуживать контент. По каждому новому сайту повторяют шаги 4-5, заменив домен на соответствующий.
Выводы
Мы рассмотрели настройку Apache в CentOS под единственный или несколько доменов, расположенных на одной физической или виртуальной машине. После проверки каждого из подключенных сайтов можно разворачивать CMS и приступать к наполнению контентом.
