Как установить 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.