Apache остаётся одним из самых стабильных и понятных веб-серверов. Он не требует глубоких знаний, а базовой настройки достаточно, чтобы запустить сайт или backend-приложение.
Если вы только купили сервер:
Подключитесь к серверу
Выполните подготовку сервера к работе
В CentOS для установки программ используется пакетный менеджер dnf.
Если вы работаете от пользователя root, то в командах не нужно использовать sudo
sudo dnf upgrade -y
Эта команда обновляет установленные пакеты до актуальных версий.
В CentOS пакет Apache называется httpd.
sudo dnf install httpd -y
После установки необходимо запустить Apache и добавить его в автозагрузку:
sudo systemctl enable --now httpd
Чтобы убедиться, что сервер работает:
sudo systemctl status httpd

Если всё прошло успешно, вы увидите статус active (running).
Подробнее о systemctl можно узнать из статьи: Как перезапустить сервис в Linux
Чтобы убедиться, что сервер отвечает, откройте в браузере:
http://IP_вашего_сервера

Если появилась стандартная страница Apache — установка выполнена успешно.
Также можно проверить, что Apache действительно слушает порт 80:
sudo ss -tulpn | grep :80
Если порт занят другим процессом, проверьте, не запущен ли другой веб-сервер или Docker-контейнер.
Основные директории:
/etc/httpd/conf/httpd.conf — главный конфигурационный файл./etc/httpd/conf.d/ — дополнительные конфигурации виртуальных хостов./var/www/ — директория, где обычно размещаются сайты./var/log/httpd/ — журналы работы Apache.В отличие от Ubuntu, каталогов sites-available и sites-enabled здесь нет. Обычно для каждого сайта создают отдельный .conf файл в каталоге /etc/httpd/conf.d/.
Виртуальный хост это конфигурация отдельного сайта.
Даже если у вас только один домен, лучше сразу использовать отдельный конфигурационный файл.
Например, ваш домен — myproject.com.
sudo mkdir -p /var/www/myproject
sudo chown -R $USER:$USER /var/www/myproject
Смена владельца нужна, чтобы можно было редактировать файлы без постоянного использования sudo.
sudo nano /etc/httpd/conf.d/myproject.conf
Как работать с nano писали в статье: Основы работы с редактором nano: команды, сохранение, выход
Вставьте:
<VirtualHost *:80>
ServerName 147.45.113.2 # замените на свой домен или ip
DocumentRoot /var/www/myproject
<Directory /var/www/myproject>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
ErrorLog /var/log/httpd/myproject_error.log
CustomLog /var/log/httpd/myproject_access.log combined
</VirtualHost>
Вместо домена можно указать IP-адрес сервера, если настройка выполняется для тестов или разработки.
.htaccess, что необходимо для большинства CMS.sudo apachectl configtest
Если увидите:
Syntax OK

можно применять изменения.
sudo systemctl reload httpd
reload перечитывает конфигурацию без остановки сервера, поэтому действующие сайты продолжают работать.
Теперь при открытии домена или IP-адреса будет отображаться ваш сайт.
В CentOS вместо UFW обычно используется firewalld.
Проверяем его состояние:
sudo systemctl status firewalld
Если сервис работает, разрешаем HTTP:
sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --reload
Если планируете использовать HTTPS:
sudo firewall-cmd --permanent --add-service=https
sudo firewall-cmd --reload
Если используется другой файрвол, откройте порты удобным для него способом.
Про iptables подробнее писали в статье: https://62yun.ru/blog/article/iptables-open-close-port
В CentOS по умолчанию включён SELinux, который может запретить Apache доступ к файлам сайта даже при правильных правах.
Проверить его состояние:
getenforce
Если вывод:
Enforcing
назначьте правильный контекст безопасности:
sudo chcon -R -t httpd_sys_content_t /var/www/myproject
Чтобы настройки сохранились после перезагрузки:
sudo semanage fcontext -a -t httpd_sys_content_t "/var/www/myproject(/.*)?"
sudo restorecon -Rv /var/www/myproject
Если команда semanage отсутствует, установите пакет:
sudo dnf install policycoreutils-python-utils -y
sudo apachectl configtest
Если увидите Syntax OK, конфигурация корректна.
sudo systemctl reload httpd
sudo systemctl restart httpd
sudo tail -f /var/log/httpd/error_log
В отличие от Ubuntu, большинство модулей Apache в CentOS уже установлены и подключаются через отдельные файлы конфигурации.
sudo httpd -M
Установите пакет:
sudo dnf install mod_ssl -y
После установки перезапустите Apache:
sudo systemctl restart httpd
sudo apachectl configtest
sudo tail -f /var/log/httpd/error_log
sudo ss -tulpn | grep :80
getenforce
В большинстве случаев одна из этих проверок позволяет быстро найти причину проблемы.