CentOS 8 — в настоящий момент последняя версия CentOS Linux, основанная на исходных кодах Red Hat Enterprise Linux 8. Apache HTTP-сервер — свободный кроссплатформенный веб-сервер, поддерживающий такие операционные системы, как Linux, BSD, Mac OS, Microsoft Windows, Novell NetWare, BeOS.
Основными достоинствами веб-сервера Apache считаются его надёжность и гибкость конфигурации, позволяющие подключать к нему внешние модули предоставления данных, использовать СУБД, производящие аутентификацию пользователей, анализировать сообщения об ошибках и многое другое. В Apache HTTP-сервер реализована поддержка протокола IPv6. В нашей статье мы расскажем вам как выполнить Apache на CentOS 8 или RHEL 8 с дополнительной конфигурацией и настройкой SSL.
Установка Apache на CentOS 8
Для выполнения команд в инструкции вам потребуются привилегии sudo, требуемые для установки необходимых пакетов. Получить их можно, сменив пользователя на пользователя sudo командой:
sudo su
Шаг 1. Установка пакетов
Установка Apache CentOS 8 выполняется с помощью команды приведенной ниже. Она позволит установить не только сам сервер, но и дополнительные пакеты, необходимые для его работы в вашей системе:
dnf install httpd
Шаг 2. Настройка службы Apache
Управление службой Apache выполняется при помощи команды systemctl. По окончании установки используйте команду systemctl для добавления службы Apache в автозагрузку и её запуска:
sudo systemctl enable httpd.service
sudo systemctl start httpd.service
Если вы хотите перезапустить apache CentOS 8, то можете использовать команду:
systemctl restart httpd.service
Перезапуск Apache без завершения активных соединений можно выполнить командой reload:
systemctl reload httpd.service
Шаг 3. Настройка фаервола
Для корректной работы установленного веб сервера необходимо открыть порты, используемые по умолчанию в файрволе, следующими командами:
firewall-cmd --zone=public --permanent --add-service=http
firewall-cmd --zone=public --permanent --add-service=https
firewall-cmd --reload
Шаг 4. Проверка работы Apache
Теперь вы можете получить информацию об установленной версии Apache на вашем сервере, используя следующую команду:
httpd -v
Вывод результатов выполнения команды представлен на рисунке ниже:
Создайте тестовую html-страницу в корневом каталоге веб-сервера по умолчанию (/var/www/html).
echo "Hello Losst.ru" > /var/www/html/index.html
Теперь откройте ваш любимый браузер и, используя IP-адрес сервера или домен, указывающий на IP-адрес вашего сервера, перейдите на только что созданную тестовую страницу:
Если вы видите текст, который ранее записали в тестовый файл, значит установка apache centos прошла успешно.
Шаг 5. Создание виртуальных хостов
Виртуальный хост — специальный раздел, используемый в конфигурации веб-сервера, выполняющий сопоставление доступных на сервере IP-адресов, доменов и директорий сервера, а также управляющий сайтами, созданными на веб-сервере. Давайте разберемся как создать виртуальный хост Apache Apache CentOS на примере сайта example.com. Создайте пример индексного файла в каталоге /var/www/example.com:
mkdir -p /var/www/example.com
echo "hello example.com" | sudo tee /var/www/example.com/index.html
Далее создайте файл конфигурации виртуального хоста и отредактируйте его, добавив следующее содержимое: можно изменить доменное имя в соответствии с вашим доменом:
sudo nano /etc/httpd/conf.d/example.com.conf
Рассмотрим структуру файла example.com.conf. Вот основные директивы, которые там используются:
- FollowSymLinks -при использовании этой директивы сервер будет следовать символическим ссылкам в указанном каталоге. Настройка директивы всегда остаётся заданной по умолчанию. Параметр FollowSymLinks работает только в разделах <Directory> или файлах .htaccess.
- AllowOverride — найдя файл .htaccess, сервер должен знать, какие директивы, объявленные в этом файле, могут переопределить более ранние директивы конфигурации. Директива AllowOverride допустима к использованию только в разделах <Directory>, указанных без регулярных выражений, но не в разделах <Location>, <DirectoryMatch> или <Files>. Если директива AllowOverride принимает значение None, то файлы .htaccess полностью игнорируются. В этом случае сервер даже не будет пытаться читать файл .htaccess в файловой системе. Если эта директива принимает значение Allow, то любая директива, имеющая свои htaccess-разрешения может переопределить более ранние директивы конфигурации.
- Order — наряду с директивами Allow (разрешено) и Deny (запрещено), управляет трёхпроходной системой контроля доступа. Первый проход обрабатывает либо все разрешающие, либо все запрещающие директивы, как указано в директиве Order. Второй проход анализирует остальные директивы (запретить или разрешить). Третий проход применяется ко всем запросам, не соответствующим ни одному из первых двух. Обратите внимание, что все директивы Allow и Deny обрабатываются иначе, чем обычный брандмауэр, использующий только первое значение правила. Кроме того, порядок, в котором строки появляются в файлах конфигурации, не имеет значения — все разрешающие строки обрабатываются как одна группа, все запрещающие строки рассматриваются как другая группа, а состояние по умолчанию рассматривается само по себе. Директива Order всегда принимает одно из двух значений: Allow или Deny.
- Директивы Allow и Deny. Вариант Allow, Deny подразумевает, что сперва оцениваются все директивы Allow. По крайней мере одна из них должна совпадать, иначе запрос отклоняется. Затем оцениваются все директивы Deny. В случае совпадения запрос отклоняется. Наконец, любые запросы, не соответствующие директиве Allow или Deny, по умолчанию отклоняются. В случае использования Deny, Allow оцениваются все директивы Deny. Если они совпадают, запрос отклоняется. Любые запросы, не соответствующие директивам Allow или Deny, разрешены.
Чтобы изменения вступили в силу надо перезапустить службу. Перезагрузка Apache выполняется командой:
systemctl reload httpd.service
Настройка виртуальных хостов Apache CentOS завершена.
Шаг 4. Настройка SSL
Если вы не собираетесь использовать SSL в работе вашего сайта, то можете смело пропускать этот шаг. Однако, безопасность всегда является главной задачей для любого веб-сайта. Для того, чтобы использовать SSL в связке с Apache, требуется установить пакет mod_ssl в вашей системе. Для этого выполните команду:
dnf install mod_ssl
По окончании установки пакета создайте директорию, в которой будет хранится наш
SSL-сертификат:
mkdir -p /etc/pki/tls/certs
Перейдите в него, выполнив команду:
cd /etc/pki/tls/certs
Теперь создайте SSL-сертификат, который будет использоваться при настройке виртуального хоста. Для этого выполните команду:
openssl req -x509 -nodes -newkey rsa:2048 -keyout example.com.key -out example.com.crt
Эта команда создаст закрытый ключ и сертификат в необходимой директории.
Вы можете использовать файл конфигурации /etc/httpd/conf/ssl.conf для настройки SSL вашего виртуального хоста или же можете создать отдельный файл конфигурации виртуального хоста для вашего домена, например, /etc/httpd/conf.d/example.com.conf. Добавьте в него следующее содержимое:
nano /etc/httpd/conf.d/example.com.conf
В файле example.com.conf используются три директивы для включения поддержки ssl apache centos виртуальным хостом. Давайте рассмотрим их подробнее.
- SSLEngine — эта директива переключает использование механизма протокола SSL/TLS. Это обычно используется внутри <VirtualHost> для включения поддержки SSL /TLS конкретным виртуальным хостом. По умолчанию механизм протокола SSL/TLS отключён как для основного сервера, так и для всех настроенных виртуальных хостов. В Apache 2.1 и более поздних версиях SSLEngine устанавливается опционально. Эта директива может принимать два значения: on или off, что означает включено либо выключено.
- SSLCertifacateFile — эта директива создаёт файл типа «всё в одном», в котором можно собрать сертификаты центров сертификации (ЦС), с клиентами которых вы имеете дело. Они используются для аутентификации клиента. Такой файл — просто объединение различных файлов сертификатов, закодированных в PEM, в порядке предпочтения. Это может быть использовано в качестве альтернативы или дополнительно к SSLCACertificatePath.
- SSLCertificateKeyFile — указывает на PEM-кодированный файл закрытого ключа для сервера. Если содержащийся закрытый ключ зашифрован, диалог парольной фразы принудительно запускается во время запуска. Директиву можно использовать несколько раз (ссылаясь на разные имена файлов) для поддержки нескольких алгоритмов аутентификации сервера. Для каждой директивы SSLCertificateKeyFile должна быть соответствующая директива SSLCertificateFile.
Закрытый ключ также может быть объединён с сертификатом в файле, предоставленном SSLCertificateFile, но эта практика крайне нежелательна. Если он используется, то файлы сертификатов, использующие такой встроенный ключ, должны быть настроены после сертификатов, использующих отдельный файл ключей.
Теперь, создав и настроив конфигурационный файл, сохраните изменения в файле виртуального хоста и перезагрузите службу Apache, используя следующую команду:
systemctl reload httpd.service
Выводы
В этой статье мы разобрали как выполняется установка Apache в CentOS 8. Выполнив указанные в нашей статье действия, вы сможете установить и настроить веб сервер Apache на вашем сервере CentOS 8.