Веб-сервер Apache – это популярный сервер HTTP с открытым исходным кодом, который продолжает сохранять огромную долю рынка в индустрии хостинга. Он поставляется с множеством функций, включая улучшения модулей, поддержку нескольких протоколов, упрощенную конфигурацию и поддержку многих языков, чтобы упомянуть лишь некоторые.
Читать также: Как установить Nginx на CentOS 8
В этом руководстве мы рассмотрим процесс установки веб-сервера Apache на CentOS 8 и RHEL 8 с использованием окружения виртуального хоста. На момент написания этого учебного пособия последняя версия Apache – Apache 2.2.43.
Установка веб-сервера Apache
Для начала обновите список пакетов вашей системы CentOS 8 или RHEL 8 с помощью следующей команды dnf.
$ sudo dnf update
После завершения обновления установите веб-сервер Apache, выполнив следующую команду.
$ sudo dnf install httpd
После установки вы можете проверить версию Apache, выполнив команду rpm.
$ rpm -qi httpd

Команда выводит массив информации, такой как версия, дата выпуска, сборка и архитектура пакета.
Для запуска веб-сервиса Apache HTTP выполните команду systemctl.
$ sudo systemctl start httpd
Чтобы убедиться, что сервис запущен, выполните.
$ sudo systemctl status httpd

Из вывода, статус ‘active‘ зелёного цвета указывает на то, что веб-сервер Apache запущен и работает.
Чтобы убедиться, что веб-сервер работает, запросите тестовую страницу от Apache, перейдя по IP-адресу вашего сервера или доменному имени, как показано.
http://server-ip
Вы можете узнать IP-адрес вашего сервера, выполнив команду ifconfig. Если ваш сервер размещён в облаке, вы можете получить публичный IP-адрес, выполнив команду curl.
$ curl ifconfig.me OR $ curl -4 icanhazip.com

При переходе по IP-адресу сервера вы должны увидеть следующую веб-страницу.

Это является надёжным подтверждением работы веб-сервера.
Управление веб-сервером Apache
После установки и запуска Apache вы можете использовать инструмент проверки systemctl для управления Apache.
Например, чтобы остановить Apache, выполните команду:
$ sudo systemctl stop httpd
Чтобы снова запустить сервис, выполните:
$ sudo systemctl start httpd
Перезапуск службы обычно вызывает прерывание службы. Лучшая альтернатива – просто перезагрузить без каких-либо прерываний соединения.
$ sudo systemctl restart httpd
Чтобы автоматически запускать веб-сервер Apache при загрузке или перезагрузке, выполните следующую команду. Это обеспечит автоматический запуск Apache без вашего вмешательства.
$ sudo systemctl reload httpd
Если вы выберете не запускать службу автоматически при загрузке, выполните:
$ sudo systemctl enable httpd
Настройка виртуальных хостов Apache
$ sudo systemctl disable httpd
По умолчанию веб-сервер Apache настроен на обслуживание или хостинг только одного сайта. Если вы хотите разместить только один сайт, то этот шаг не требуется. Но если вы планируете разместить несколько доменов на своем сервере, то вам нужно настроить виртуальные хосты Apache.
Виртуальный хост по умолчанию находится в каталоге /var/www/html
. Это работает только для одного сайта. Чтобы создать отдельный виртуальный хост для нашего домена, мы создадим другую структуру каталогов в каталоге /var/www
, как показано ниже.
A virtual host is a separate file that contains configurations that allow you to set up a separate domain from the default one. For this guide, we will set up a virtual host for the domain crazytechgeek.info.
Кроме того, вы также можете создать каталог для хранения файлов журналов.
$ sudo mkdir -p /var/www/crazytechgeek.info/html
Затем отредактируйте разрешения файла, используя переменную среды $USER
, как показано ниже.
$ sudo mkdir -p /var/www/crazytechgeek.info/log
Также отрегулируйте разрешения каталога веб-корневого каталога, как показано ниже.
$ sudo chown -R $USER:$USER /var/www/crazytechgeek.info/html
Затем создайте пример файла index.html
, как показано ниже.
$ sudo chmod -R 755 /var/www
Нажмите клавишу 'i'
на клавиатуре и вставьте некоторое примерное содержимое, которое будет отображаться в веб-браузере при тестировании виртуального хоста, как показано ниже.
$ sudo vim /var/www/crazytechgeek.info/html/index.html
Сохраните и закройте файл конфигурации.
<html> <head> <title>Welcome to crazytechgeek.info!</title> </head> <body> <h1>Success! The crazytechgeek.info virtual host is up and perfectly working!</h1> </body> </html>
Сохраните и закройте файл конфигурации.
Теперь, когда созданы образец индексного файла и каталог сайта, вы можете приступить к созданию файла виртуального хоста. Файл виртуального хоста будет содержать конфигурацию сайта вашего домена и указывать Apache, как реагировать на запросы клиентов.
Файл виртуального хоста будет содержать конфигурацию сайта вашего домена и указывать Apache, как реагировать на запросы клиентов. Но перед этим вам нужно создать 2 каталога: каталоги sites-available
и sites-enabled
.
Файл виртуального хоста будет храниться в каталоге sites-available
, а каталог sites-enabled
будет содержать символическую ссылку на виртуальный хост.
Создайте оба каталога, как показано.
$ sudo mkdir /etc/httpd/sites-available $ sudo mkdir /etc/httpd/sites-enabled
Затем измените основной конфигурационный файл веб-сервера Apache и укажите Apache, где находить виртуальный хост в каталоге sites-enabled.
$ sudo vim /etc/httpd/conf/httpd.conf
Добавьте строку, как показано, в самом конце конфигурационного файла.
IncludeOptional sites-enabled/*.conf
Сохраните и закройте.
Теперь создайте файл виртуального хоста, как показано:
$ sudo vim /etc/httpd/sites-available/crazytechgeek.info
Вставьте содержимое ниже и замените crazytechgeek.info
на имя вашего собственного домена.
<VirtualHost *:80> ServerName www.crazytechgeek.info ServerAlias crazytechgeek.info DocumentRoot /var/www/crazytechgeek.info/html ErrorLog /var/www/crazytechgeek.info/log/error.log CustomLog /var/www/crazytechgeek.info/log/requests.log combined </VirtualHost>
Сохраните и закройте файл.
Теперь включите файл виртуального хоста, создав символическую ссылку в каталоге sites-enabled
.
$ sudo ln -s /etc/httpd/sites-available/crazytechgeek.info.conf /etc/httpd/sites-enabled/crazytechgeek.info.conf
Настройка разрешений SELinux для виртуальных хостов
CentOS 8 и RHEL 8 поставляются с SELinux, который является модулем безопасности для укрепления безопасности системы Linux. Поскольку вы настроили пользовательский каталог log на предыдущем этапе, вам нужно обновить некоторые политики SELinux, чтобы указать веб-серверу Apache писать в этот каталог.
Существует 2 подхода к настройке политик SELinux Apache: настройка политик универсально и политик на каталог. Последний предпочтительнее, потому что он более предпочтителен.
Настройка политик SELinux на каталог
Редактирование разрешений SELinux для каталога журналов дает вам абсолютный контроль над политиками веб-сервера Apache. Этот метод довольно длинный и требует вручную настройки типа контекста для дополнительных каталогов, указанных в файле конфигурации виртуального хоста.
Прежде чем начинать, сначала подтвердите тип контекста, назначенный каталогу журналов SELinux:
$ sudo ls -dlZ /var/www/crazytechgeek.info/log/
Вывод должен быть похож на приведенный ниже.

Из вывода набора контекста httpd_sys_content_t. Это указывает на то, что веб-сервер может только читать файлы в каталоге журналов. Вам нужно изменить этот контекст на httpd_log_t, чтобы разрешить Apache создавать и добавлять записи в журнале.
Поэтому выполните команду:
$ sudo semanage fcontext -a -t httpd_log_t "/var/www/crazytechgeek.info/log(/.*)?"
Если вы получили ошибку “semanage: команда не найдена“,
это означает, что пакеты, предоставляющие команду semanage, не установлены. Чтобы исправить эту ошибку, вам нужно установить эти пакеты. Но сначала проверьте, какие пакеты предоставляют команду semanage, запустив:
$ sudo dnf whatprovides /usr/sbin/semanage
Вывод дает нам пакет, предоставляющий semanage, который является policycoreutils-python-utils.
Теперь установите пакет, как показано с помощью менеджера пакетов DNF.
$ sudo dnf install policycoreutils-python-utils
Команда для изменения контекста теперь должна работать.
$ sudo semanage fcontext -a -t httpd_log_t "/var/www/crazytechgeek.info/log(/.*)?"
Чтобы сохранить изменения и сделать их постоянными, выполните команду restorecon, как показано:
$ sudo restorecon -R -v /var/www/crazytechgeek.info/log
Вы можете подтвердить изменения, еще раз запустив команду:
$ sudo ls -dlZ /var/www/crazytechgeek.info/log/

Обратите внимание, что тип контекста изменился на httpd_log_t
, как видно из вывода.
Перезапустите Apache, чтобы изменения вступили в силу.
$ sudo systemctl restart httpd
Теперь вы можете подтвердить, сохраняет ли Apache файлы журналов в каталоге журналов, выполнив перечисление его содержимого, как показано:
$ ls -l /var/www/crazytechgeek.info/log/
Вы должны увидеть два файла журналов, как показано: файлы журнала ошибок и запросов.

Тестирование виртуального хоста Apache
Наконец, убедитесь, что веб-сервер Apache обслуживает ваш файл виртуального хоста. Для этого откройте браузер и перейдите по IP-адресу вашего сервера или его доменному имени:
http://domain-name

Отлично! Это указывает на то, что всё прошло успешно, и наш виртуальный хост обслуживается как ожидается.
Заключение
В этом руководстве мы узнали, как установить веб-сервер Apache на CentOS 8 и RHEL 8, а также как настроить файл виртуального хоста для обслуживания контента для дополнительного домена. Не стесняйтесь настраивать несколько файлов виртуальных хостов по своему усмотрению, чтобы вместить дополнительные домены.
Если вы хотите настроить полный стек хостинга, я рекомендую установить стек LAMP на CentOS 8.
Source:
https://www.tecmint.com/install-apache-with-virtual-host-on-centos-8/