Site icon 8HOST.COM

Быстрая установка веб-сервера Apache в CentOS 8

HTTP-сервер Apache – наиболее распространенный в интернете веб-сервер. Он предоставляет множество полезных функций, включая динамическую загрузку модулей, надежную поддержку мультимедиа и широкую интеграцию с другим популярным программным обеспечением.

В этом мануале мы вкратце расскажем, как установить веб-сервер Apache на CentOS 8.

Примечание: Расширенную версию этого мануала вы найдете здесь.

Требования

Все необходимые инструкции можно найти в мануале по начальной настройке сервера.

1: Установка Apache

Пакет Apache есть в стандартном репозитории CentOS, потому его можно установить с помощью менеджера dnf.

Установите пакет httpd:

sudo dnf install httpd

Команда установит Apache и все его зависимости.

2: Настройка брандмауэра

Выполнив раздел 4 мануала по начальной настройке, вы включили на своем сервере базовый брандмауэр firewalld, который обслуживает трафик HTTP.

Если вы хотите, чтобы Apache также мог обслуживать HTTPS, вам нужно открыть в брандмауэре порт 443:

sudo firewall-cmd --permanent --add-service=https

Перезапустите брандмауэр, чтобы обновить настройки.

sudo firewall-cmd --reload

Теперь можно запустить сервис и проверить, как он работает.

3: Тестирование веб-сервера

После установки веб-сервера система CentOS не запускает Apache автоматически. Чтобы запустить веб-сервер вручную, введите:

sudo systemctl start httpd

Чтобы убедиться, что он запустился, запросите его состояние:

sudo systemctl status httpd

В выводе вы должны увидеть состояние active:

httpd.service - The Apache HTTP Server
Loaded: loaded (/usr/lib/systemd/system/httpd.service; disabled; vendor preset: disa>
Active: active (running) since Thu 2020-04-23 22:25:33 UTC; 11s ago
Docs: man:httpd.service(8)
Main PID: 14219 (httpd)
Status: "Running, listening on: port 80"
Tasks: 213 (limit: 5059)
Memory: 24.9M
CGroup: /system.slice/httpd.service
├─14219 /usr/sbin/httpd -DFOREGROUND
├─14220 /usr/sbin/httpd -DFOREGROUND
├─14221 /usr/sbin/httpd -DFOREGROUND
├─14222 /usr/sbin/httpd -DFOREGROUND
└─14223 /usr/sbin/httpd -DFOREGROUND
...

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

http://your_server_ip

Вы увидите стандартную страницу Apache для CentOS 8.

Эта страница позволяет убедиться, что веб-сервер Apache работает правильно; также она содержит базовую информацию о важных файлах и каталогах Apache.

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

На веб-сервере Apache вы можете использовать виртуальные хосты (в Nginx это блоки server) для изоляции настроек и размещения нескольких доменов на одном сервере.

Примечание: Здесь используется условный домен example.com, который вы должны заменить доменом вашего сайта.

Создайте каталог html для example.com. Используйте флаг –p, чтобы создать все необходимые родительские каталоги:

sudo mkdir -p /var/www/example.com/html

Затем создайте отдельный каталог для хранения логов вашего сайта:

sudo mkdir -p /var/www/example.com/log

Укажите права на каталог с помощью переменной $USER:

sudo chown -R $USER:$USER /var/www/example.com/html

Права должны быть установлены верно, если вы не меняли unmask, но на всякий случай вы можете ввести:

sudo chmod -R 755 /var/www

Затем создайте образец страницы index.html с помощью текстового редактора vi:

sudo vi /var/www/example.com/html/index.html

Нажмите i, чтобы перейти в режим вставки (INSERT), а затем добавьте в файл следующий код HTML:

<html>
<head>
<title>Welcome to Example.com!</title>
</head>
<body>
<h1>Success! The example.com virtual host is working!</h1>
</body>
</html>

Сохраните и закройте файл, когда закончите.

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

Для начала создайте каталог sites-available и sites-enabled. В первом каталоге хранятся настройки всех сайтов, доступных на этом сервере; второй каталог сообщает веб-серверу, какие из виртуальных хостов готовы к обслуживанию. Создайте эти каталоги:

sudo mkdir /etc/httpd/sites-available /etc/httpd/sites-enabled

Далее нужно сообщить Apache, что искать виртуальные хосты нужно в каталоге sites-enabled. Для этого отредактируйте основной конфигурационный файл Apache, используя vi или другой текстовый редактор.

sudo vi /etc/httpd/conf/httpd.conf

Нажмите заглавную G, чтобы перейти к концу файла. Затем нажмите i, чтобы переключиться в режим INSERT, и добавьте следующую строку в самый конец файла:

...
# Supplemental configuration
#
# Load config files in the "/etc/httpd/conf.d" directory, if any.
IncludeOptional conf.d/*.conf
IncludeOptional sites-enabled/*.conf

Сохраните и закройте файл.

В каталоге sites-available создайте файл виртуального хоста:

sudo vi /etc/httpd/sites-available/example.com.conf

Вставьте в файл следующий блок конфигураций.

<VirtualHost *:80>
ServerName www.example.com
ServerAlias example.com
DocumentRoot /var/www/example.com/html
ErrorLog /var/www/example.com/log/error.log
CustomLog /var/www/example.com/log/requests.log combined
</VirtualHost>

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

Сохраните и закройте файл.

Теперь, когда вы создали файлы виртуального хоста, вы можете включить его, чтобы Apache знал, как обслуживать ваш сайт. Для этого создайте симлинк в каталоге sites-enabled (если хостов несколько, сделайте это для каждого виртуального хоста):

sudo ln -s /etc/httpd/sites-available/example.com.conf /etc/httpd/sites-enabled/example.com.conf

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

5: Настройка прав SELinux для виртуального хоста

SELinux – это модуль ядра Linux, который обеспечивает повышенную безопасность этих систем. CentOS 8 использует стандартные настройки SELinux для работы с конфигурацией Apache. Поскольку в файле виртуального хоста вы настроили пользовательский каталог логов, вы получите сообщение об ошибке, если попытаетесь запустить сервис Apache. Чтобы решить эту проблему, вам нужно обновить политики SELinux и позволить Apache изменять некоторые файлы.

Читайте также: Введение в SELinux в CentOS 7: базовые понятия

Существуют различные способы установки политик в зависимости от потребностей вашей среды (SELinux позволяет настраивать уровень безопасности). Этот раздел продемонстрирует два метода настройки политик Apache: глобальный и в определенном каталоге. Корректировка политик для отдельного каталога более безопасна и поэтому является рекомендуемым подходом.

Глобальное изменение политик Apache

При глобальной настройке политики SELinux будет одинаково обрабатывать все процессы Apache, применяя логическое значение httpd_unified. Этот подход более удобен, но он менее гибкий и безопасный.

Выполните следующую команду, чтобы установить универсальную политику Apache:

sudo setsebool -P httpd_unified 1

Команда setsebool изменяет логические значения SELinux. Флаг -P обновит значение времени загрузки, сохраняя это изменение при перезагрузках. httpd_unified – это логическое значение, благодаря которому SELinux будет обрабатывать все процессы Apache как один и тот же тип. Значение 1 включает его.

Изменение политики по каталогам

Индивидуальная настройка привилегий SELinux для каталога /var/www/example.com/log дает больший контроль над политиками Apache, но также может потребовать дополнительного обслуживания. Поскольку это не глобальная настройка, вам нужно будет вручную установить тип контекста для всех каталогов с логами, указанных в конфигурациях виртуального хоста.

Сначала проверьте тип контекста, который SELinux предоставил каталогу /var/www/example.com/log:

sudo ls -dlZ /var/www/example.com/log/

Эта команда выводит список всех контекстов SELinux для каталогов:

drwxr-xr-x. 2 root root unconfined_u:object_r:httpd_sys_content_t:s0 6 Apr 23 23:51 /var/www/example.com/log/

Текущий контекст – httpd_sys_content_t, который говорит SELinux, что процесс Apache может только читать файлы, созданные в этом каталоге. Нам нужно изменить тип контекста каталога /var/www/example.com/log на httpd_log_t. Этот тип позволит Apache создавать и добавлять файлы логов веб-приложений:

sudo semanage fcontext -a -t httpd_log_t "/var/www/example.com/log(/.*)?"

Затем используйте команду restorecon, чтобы применить эти изменения и сохранить их при перезагрузке:

sudo restorecon -R -v /var/www/example.com/log

Флаг -R запускает эту команду рекурсивно, то есть она обновит все существующие файлы, и они тоже будут использовать новый контекст. Флаг -v выведет изменения контекста, которые выполнила команда. Вы увидите следующий вывод, подтверждающий изменения:

Relabeled /var/www/example.com/log from unconfined_u:object_r:httpd_sys_content_t:s0 to unconfined_u:object_r:httpd_log_t:s0

Снова запросите список контекстов:

sudo ls -dlZ /var/www/example.com/log/

Вы увидите изменения:

drwxr-xr-x. 2 root root unconfined_u:object_r:httpd_log_t:s0 6 Apr 23 23:51 /var/www/example.com/log/

Теперь, когда каталог /var/www/example.com/log использует тип httpd_log_t, вы можете протестировать конфигурацию виртуального хоста.

6: Тестирование виртуального хоста

Как только вы обновите контекст SELinux (любым из методов), Apache сможет записывать и изменять файлы в каталоге /var/www/example.com/log. Теперь вы можете перезапустить сервис Apache:

sudo systemctl restart httpd

Запросите содержимое каталога /var/www/example.com/log, чтобы увидеть, создал ли Apache файлы логов:

ls -lZ /var/www/example.com/log

Вы увидите, что Apache смог создать файлы error.log и requests.log, указанные в конфигурации виртуального хоста:

-rw-r--r--. 1 root root system_u:object_r:httpd_log_t:s0 0 Apr 24 00:06 error.log
-rw-r--r--. 1 root root system_u:object_r:httpd_log_t:s0 0 Apr 24 00:06 requests.log

Теперь, когда виртуальный хост и привилегии SELinux настроены, Apache будет обслуживать ваш домен. Вы можете проверить его работу, перейдя по ссылке http://example.com, где вы должны увидеть строку:

Success! The example.com virtual host is working!

Если страница открылась, ваш виртуальный хост настроен и успешно обслуживает контент. Повторите разделы 4 и 5, чтобы создать новые виртуальные хосты и обновить привилегии SELinux для их обслуживания.

Заключение

В этом мануале вы научились устанавливать веб-сервер Apache и управлять его процессом. Теперь у вас есть много вариантов для дальнейшей работы: вы можете выбрать тип контента, который хотите обслуживать, и внедрить дополнительные технологии для создания более сложного сайта.

Читайте также: Установка стека LAMP в CentOS 8