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

    Команда Simple-Server
    03.06.2026
    8 мин

    Материал подготовлен командой Simple-Server для администраторов VPS и выделенных серверов. Команды и пути проверяйте на тестовой машине перед production.

    Кратко о задаче

    Работа с HTTP-сервером Apache требует предварительно настроенной операционной системы, в этой статье за основу возьмем CentOS 8, но инструкция подойдет и для других версий. Будет достаточно создать пользователя с привилегиями sudo и разрешить соединение во встроенном брандмауэре. Разворачивать систему можно на локальном ПК или виртуальной машине, арендованной у провайдера Simple-Server.

    Шаг 1. Инсталляция Apache

    Пакет с инструментом Apache есть в официальном репозитории CentOS, поэтому он доступен для установки при помощи dnf. Выполним команду:

    После подтверждения диспетчер пакетов выполняет установку веб-сервера Apache в CentOS и всех необходимых для его функционирования зависимостей. Важно, чтобы файрвол уже был настроен для ответа на запросы по протоколу HTTP. Например, понадобится открытый порт 443 вместе со включенной службой http.

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

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

    sudo firewall-cmd –reload

    Установка Apache завершена, пора запускать его и проверять работоспособность.

    Шаг 2. Проверка HTTP-сервера

    Поначалу веб-сервер требует ручного запуска, поэтому введем команду:

    sudo systemctl start httpd

    Проверить, запустилась ли служба, можно при помощи команды:

    sudo systemctl status httpd

    Если веб-сервер работает штатно, пользователь увидит сообщение, в котором должен отразиться статус active (running):

    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

    Второй способ проверки – открыть хост через браузер по IP-адресу сервера:

    Найти IP сервера можно в панели управления или в письме, которое пришло на почту после установки сервера.

    Шаг 3. Управление процессом Apache

    Теперь можно опробовать некоторые команды systemctl, используемой при взаимодействии со службой. Например, остановка HTTP-сервера будет после ввода:

    sudo systemctl stop httpd

    Повторный запуск происходит по команде:

    sudo systemctl start httpd

    Перезапуск, например, для принятия изменений в настройках:

    sudo systemctl restart httpd

    Возможен рестарт без прерывания текущего соединения:

    sudo systemctl reload httpd

    По умолчанию процессы Apache запускаются при загрузке сервера. Если это нежелательно, то отключите автозапуск:

    sudo systemctl disable httpd

    Первоначальные настройки HTTP-сервера предполагают развертывание всего одного сайта. Но есть возможность создать виртуальные хосты, на каждом из которых создают отдельные ресурсы.

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

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

    Теперь приступим к настройке. Создайте папку html в каталоге example.com (var/www/):

    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

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

    sudo chmod -R 755 /var/www

    Теперь можно в любом редакторе кода сформировать index.html. Например, запустим vi:

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

    Внесем простейшее содержимое:

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

    После сохранения изменений в index.html у нас почти все готово для генерации файлов. Они задают настройки каждого отдельно взятого домена и транслируют их Apache, чтобы HTTP-сервер понимал, как обрабатывать запросы. Хранить их будем в каталоге sites-available, к нему создается папка sites-enabled, указывающая на готовность хоста принимать трафик из сети:

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

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

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

    Затем переместить курсор в самый конец файла и внести там строчку:

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

    Теперь настало время для формирования непосредственно файла виртуального хоста:

    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>

    Вместо example.com нужно везде проставить реальный домен. Тогда файл укажет веб-серверу, где найти корневой каталог сайта, где сохранять журналы ошибок и обращений к сайту. После закрытия файла с сохранением изменений останется активировать виртуальные хосты – сформировать символьную ссылку для доменов в каталоге sites-enabled:

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

    Теперь настройка завершена, и хост готов к функционированию. Но перед перезапуском веб-сервера желательно проверить, что модуль SELinux правильно обрабатывает запросы.

    Шаг 5. Настройка разрешений в SELinux

    Модуль безопасности Linux SELinux повышает безопасность операционной системы. В CentOS встроен пакет, уже настроенный для взаимодействия с Apache. Но в данном примере мы изменили ее, поэтому при старте служб веб-сервера пользователь получит ошибку. Чтобы решить такую проблему, нужно**** изменение политик SELinux в отношении Apache. Всего применяют два способа корректировки – универсальный и для конкретной папки.

    Вариант №1. Универсальный

    Процедура позволяет модулю безопасности использовать любые процессы Apache через булеву переменную httpd_unified. Такой подход удобен, но не рассматривает раздельную политику папок и файлов. Запуск универсальной политики:

    sudo setsebool -P httpd_unified 1

    Команда setsebool нужна для замены булевых значений, флаг -P – для обновления времени запуска при старте, при каждой перезагрузке оно сохраняется. В данном примере булево значение httpd_unified было активировано со значением 1.

    Вариант №2. Корректировка политик Apache для каталога

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

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

    В результате пользователь увидит сообщение:

    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, т.е. служба Apache будет читать только те файлы, которые размещены в указанной папке. Если изменить его на httpd_log_t, веб-сервер будет генерировать данные для файла журнала:

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

    Применить внесенные изменения можно командой:

    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/

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

    После перенастройки разрешений в SELinux HTTP-сервер будет без проблем записывать данные в каталог /var/www/example.com/log. Перезапустим процесс Apache:

    sudo systemctl restart httpd

    Сформируем перечень содержимого каталога /var/www/example.com/log, это позволит убедиться в том, что система создала журнал:

    ls -lZ /var/www/example.com/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

    Первая строка подтверждает наличие файла error.log, а вторая – requests.log. Это практически финал, пользователь может проверить работоспособность домена через браузер. В качестве ответа будет примерно такая надпись:

    Success! The example.com virtual host is working

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

    Мы рассмотрели настройку Apache в CentOS под единственный или несколько доменов, расположенных на одной физической или виртуальной машине. После проверки каждого из подключенных сайтов можно разворачивать CMS и приступать к наполнению контентом.


    Нужен сервер для практики? Арендуйте VPS/VDS в России — root-доступ, NVMe, DDoS-защита и поддержка 24/7.

    VPS для проекта

    VPS с root-доступом, NVMe и поддержкой 24/7 на Simple-Server.

    StarterVDS

    490

    в месяц

    1 ядро

    1 ГБ RAM

    20 ГБ NVMe

    • 1 IPv4
    • KVM
    • Root-доступ
    • Безлимитный трафик
    Заказать VPS
    Рекомендуем

    PerformanceVDS

    1190

    в месяц

    2 ядра

    4 ГБ RAM

    60 ГБ NVMe

    • 1 IPv4
    • KVM
    • Root-доступ
    • Базовая DDoS-защита
    Заказать VPS

    Нужна другая конфигурация или чистый VPS без панели?

    Все тарифы VPS

    Похожие статьи, которые могут быть вам интересны