Установка Apache в CentOS 8

Установка Apache в CentOS 8


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 blld.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




ServerAdmin admin@example.com

DocumentRoot /var/www/example.com

ServerName example.com

ServerAlias www.example.com



AllowOverride all



ErrorLog logs/example.com_error.log

CustomLog logs/example.com_access.log combined


Рассмотрим структуру файла example.com.conf. Вот основные директивы, которые там используются:


  • FollowSymLinks -при использовании этой директивы сервер будет следовать символическим ссылкам в указанном каталоге. Настройка директивы всегда остаётся заданной по умолчанию. Параметр FollowSymLinks работает только в разделах или файлах .htaccess.

  • AllowOverride - найдя файл .htaccess, сервер должен знать, какие директивы, объявленные в этом файле, могут переопределить более ранние директивы конфигурации. Директива AllowOverride допустима к использованию только в разделах , указанных без регулярных выражений, но не в разделах , или . Если директива 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




ServerAdmin admin@example.com

DocumentRoot /var/www/example.com

ServerName example.com

ServerAlias www.example.com



#AllowOverride all



SSLEngine on

SSLCertificateFile /etc/pki/tls/certs/example.com.crt

SSLCertificateKeyFile /etc/pki/tls/certs/example.com.key

ErrorLog logs/example.com_ssl-error.log

CustomLog logs/example.com_ssl-access.log combined




В файле example.com.conf используются три директивы для включения поддержки ssl apache centos виртуальным хостом. Давайте рассмотрим их подробнее.


  • SSLEngine - эта директива переключает использование механизма протокола SSL/TLS. Это обычно используется внутри для  включения поддержки SSL /TLS конкретным виртуальным хостом. По умолчанию механизм протокола SSL/TLS отключён как для основного сервера, так и для всех настроенных виртуальных хостов. В Apache 2.1 и более поздних версиях SSLEngine устанавливается опционально. Эта директива может принимать два значения: on или off, что означает включено либо выключено.

  • SSLCertifacateFile - эта директива создаёт файл типа "всё в одном", в котором можно собрать сертификаты центров сертификации (ЦС), с клиентами которых вы имеете дело. Они используются для аутентификации клиента. Такой файл — просто объединение различных файлов сертификатов, закодированных в PEM, в порядке предпочтения. Это может быть использовано в качестве альтернативы или дополнительно к SSLCACertificatePath.

  • SSLCertificateKeyFile -  указывает на PEM-кодированный файл закрытого ключа для сервера. Если содержащийся закрытый ключ зашифрован, диалог парольной фразы принудительно запускается во время запуска. Директиву можно использовать несколько раз (ссылаясь на разные имена файлов) для поддержки нескольких алгоритмов аутентификации сервера. Для каждой директивы SSLCertificateKeyFile должна быть соответствующая директива SSLCertificateFile.

Закрытый ключ также может быть объединён с сертификатом в файле, предоставленном SSLCertificateFile, но эта практика крайне нежелательна. Если он используется, то файлы сертификатов, использующие такой встроенный ключ, должны быть настроены после сертификатов, использующих отдельный файл ключей.


Теперь, создав и настроив конфигурационный файл, сохраните изменения в файле виртуального хоста и перезагрузите службу Apache, используя следующую команду:



systemctl reload httpd.service



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

Автору будет очень приятно получить обратную связь.

Комментариев 0