Поиск по сайту:

Как установить Apache с виртуальным хостом на CentOS 8


Веб-сервер 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

В выводе зеленый статус «активный» указывает на то, что веб-сервер 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

Перезапуск службы обычно приводит к сбою в работе службы. Лучшая альтернатива — просто перезагрузить компьютер без прерывания соединения.

sudo systemctl reload httpd

Чтобы автоматически запустить веб-сервер Apache при загрузке или перезагрузке, выполните команду ниже. Это обеспечит автоматический запуск Apache без вашего вмешательства.

sudo systemctl enable httpd

Если вы решите не запускать службу автоматически при загрузке, запустите:

sudo systemctl disable httpd

Настройка виртуальных хостов Apache

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

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

Виртуальный хост по умолчанию расположен в каталоге /var/www/html. Это работает только для одного сайта. Чтобы создать отдельный виртуальный хост для нашего домена, мы создадим другую структуру каталогов в каталоге /var/www, как показано.

sudo mkdir -p /var/www/crazytechgeek.info/html

Кроме того, вы также можете создать каталог для хранения файлов журналов.

sudo mkdir -p /var/www/crazytechgeek.info/log

Затем отредактируйте права доступа к файлу, используя переменную среды $USER, как показано.

sudo chown -R $USER:$USER /var/www/crazytechgeek.info/html

Также настройте разрешения для корневого веб-каталога, как показано.

sudo chmod -R 755 /var/www

Затем создайте образец файла index.html, как показано.

sudo vim /var/www/crazytechgeek.info/html/index.html

Нажмите букву 'i' на клавиатуре и вставьте пример содержимого, как показано, которое будет отображаться в веб-браузере при тестировании виртуального хоста.

<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, где найти виртуальный хост внутри каталога с поддержкой сайтов.

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 указание выполнять запись в этот каталог.

Существует два подхода к настройке политик 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.