Как установить и настроить веб-сервер Apache на Rocky Linux VPS

Как установить и настроить веб-сервер Apache на Rocky Linux VPS

Apache — широко используемый веб-сервер с открытым исходным кодом. Рассказываем, как развернуть его на VPS с Rocky Linux, как настроить виртуальные хосты и подключить SSL-сертификат Let’s Encrypt.

Подготовка сервера

Apache логотип

Установка веб-сервера Apache на Rocky Linux — это первый шаг к развёртыванию сайтов или веб-приложений на вашем VPS. Apache — веб-сервер с открытой архитектурой, активно применяемый в корпоративной и частной инфраструктуре, обеспечивает гибкость за счёт модульной архитектуры и простой настройки.

Rocky Linux лого

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

Аренда VPS/VDS от 219 руб/месяц

Преимущества VPS в AdminVPS:

✓ Бесплатное администрирование

✓ Только быстрые NVMe-диски

✓ Защита от DDoS-атак

✓ Быстрая техподдержка

Аренда VPS/VDS виртуального сервера от AdminVPS — это прозрачная и честная услуга с доступной ценой

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

Введите команду:

sudo dnf update -y  

Здесь:

  • update — обновление установленных пакетов;
  • -y — автоматическое подтверждение действий, без этого флага система будет просить подтверждение перед каждым обновлением.

DNF (менеджер пакетов в Rocky Linux) обратится к репозиториям, указанным в /etc/yum.repos.d/, сравнит версии установленных пакетов с доступными и загрузит обновления. Если в процессе обновления обновляются ядро или критически важные системные библиотеки, может потребоваться перезагрузка сервера.

Некоторые пакеты не включены в базовую поставку Rocky Linux, но нужны для администрирования. Установите их командой:

sudo dnf install epel-release curl wget nano -y  

Разберём каждый компонент:

  • epel-release — подключает репозиторий EPEL (Extra Packages for Enterprise Linux). Это официальный источник дополнительных пакетов, таких как Certbot для SSL, современные версии PHP и другие.
  • curl — утилита для отправки HTTP-запросов через терминал. Понадобится для проверки работы сервера, загрузки файлов и взаимодействия с API.
  • wget — альтернатива curl для скачивания файлов по URL.
  • nano — консольный редактор, подходящий для редактирования конфигурационных файлов. Новичкам он удобнее встроенного vi, так как использует привычные сочетания клавиш (Ctrl+O для сохранения, Ctrl+X для выхода).

После установки epel-release убедитесь, что репозиторий активирован:

sudo dnf repolist  

В выводе должны присутствовать строки:

repo id              repo name 
epel                Extra Packages for Enterprise Linux 9 - x86_64  

Если репозитория нет, выполните:

sudo dnf clean all 
sudo dnf update  

Установка Apache

Теперь система обновлена, базовые утилиты установлены, и можно приступить к развёртыванию Apache. Этот этап включает установку пакета, настройку автозапуска и открытие портов в брандмауэре.

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

Apache в Rocky Linux распространяется под названием httpd (сокращение от HTTP Daemon — фоновый процесс для обработки HTTP-запросов). Для установки выполните:

sudo dnf install httpd -y  

Во время выполнения команды DNF проверит зависимости, загрузит пакет из репозитория и установит его. Apache будет размещён в директориях:

  • /etc/httpd/ — конфиги.
  • /var/www/html/ — корневая директория веб-сервера.
  • /usr/sbin/httpd — основной исполняемый файл Apache.

Запуск и автозагрузка сервиса

После установки необходимо запустить Apache и настроить автозагрузку при старте системы. Для управления сервисами в Rocky Linux используется systemd.

Запуск Apache:

sudo systemctl start httpd  

Активация автозагрузки:

sudo systemctl enable httpd  

Здесь enable создаёт символические ссылки в директориях systemd:

/etc/systemd/system/multi-user.target.wants/

Это нужно, чтобы сервис запускался автоматически при загрузке системы.

Проверка статуса:

sudo systemctl status httpd  

Правильный вывод содержит Active: active (running). Если статус failed, проверьте логи:

journalctl -u httpd -n 50 --no-pager  

-n 50 показывает последние 50 строк логов, а --no-pager выводит логи без постраничного просмотра.

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

По умолчанию firewalld (служба брандмауэра в Rocky Linux) блокирует входящие соединения на порты 80 (HTTP) и 443 (HTTPS). Чтобы открыть доступ к веб-серверу извне, выполните:

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

Здесь:

  • firewall-cmd — утилита управления firewalld;
  • --permanent — сохраняет правило после перезагрузки. Без этого флага настройки сбросятся;
  • --add-service=http — добавляет правило для порта 80. Аналогично для HTTPS (порт 443);
  • --reload — применяет изменения без перезапуска файрвола.

Проверка активных правил:

sudo firewall-cmd --list-all  

В разделе services должны отображаться http и https.

Если firewalld не используется (например, установлен iptables), то откройте порты вручную:

sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT 
sudo iptables -A INPUT -p tcp --dport 443 -j ACCEPT 
sudo service iptables save

Если сайт будет работать исключительно через HTTPS, не открывайте порт 80. Однако для автоматического перенаправления с HTTP на HTTPS (через Certbot) порт 80 всё равно потребуется временно открыть.

После настройки убедитесь, что веб-сервер отвечает.

Локальная проверка:

curl http://localhost  

Если вывод содержит HTML-код стандартной страницы Apache («Testing 123…») — сервер работает.

Для внешней проверки откройте в браузере:

http://IP_вашего_сервера

Базовая настройка Apache

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

Структура конфигурационных файлов

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

Главный конфигурационный файл:

/etc/httpd/conf/httpd.conf

Здесь определяются глобальные параметры:

  • порт прослушивания (Listen 80);
  • настройки процессов (StartServers, MaxRequestWorkers);
  • пути к логам (ErrorLog, CustomLog).

Прямое редактирование этого файла не рекомендуется — изменения могут затруднить обновление Apache.

Директория для дополнительных конфигов:

/etc/httpd/conf.d/

Все файлы с расширением .conf из этой папки автоматически подключаются при запуске Apache. Здесь принято размещать:

  • конфигурации виртуальных хостов;
  • настройки SSL (например, ssl.conf);
  • параметры модулей (php.conf, security.conf).

Настройка ServerName

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

AH00558: httpd: Could not reliably determine the server's fully qualified domain name  

Такие предупреждения не повлияют на работу сервера, но могут затруднить анализ логов. Они связаны с отсутствием директивы ServerName, задающей доменное имя сервера. Откройте главный конфиг для редактирования:

sudo nano /etc/httpd/conf/httpd.conf  

Найдите строку #ServerName www.example.com:80, раскомментируйте её и замените на:

ServerName localhost  # для локальной настройки

Для продакшена укажите домен. Затем сохраните изменения.

Тест конфигурации

Перед перезагрузкой Apache всегда проверяйте синтаксис файлов конфигурации. Это предотвратит остановку сервера из-за опечаток или ошибок:

sudo apachectl configtest  

Возможные результаты:

Syntax OK — ошибок нет, можно перезагружать сервер. 

Syntax error — ошибка с путём к проблемному файлу и номер строки.

Например:

AH00526: Syntax error on line 56 of /etc/httpd/conf.d/example.com.conf  

В этом случае откройте указанный файл, исправьте ошибку и повторите проверку.

После успешной проверки примените изменения:

sudo systemctl restart httpd  

Сделать это можно двумя командами — restart или reload:

  • restart — полностью останавливает и запускает сервис заново. Подходит, если изменения затрагивают порты или модули.
  • reload — мягкое обновление конфигурации без остановки сервера. Используется при изменении виртуальных хостов или прав доступа.

Дополнительные рекомендации

Резервное копирование конфигов перед редактированием:

sudo cp /etc/httpd/conf/httpd.conf /etc/httpd/conf/httpd.conf.bak  

Это позволит быстро откатиться в случае ошибки.

Просмотр логов в реальном времени:

sudo tail -f /var/log/httpd/error_log  

Команда tail -f выводит последние строки лога и обновляет их по мере появления новых записей.

Отключение ненужных модулей для повышения безопасности. Например, если не используется .htaccess, добавьте в конфиг:

<Directory "/var/www/html"> 
    AllowOverride None 
</Directory>  

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

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

Создание директории для сайта

Каждому сайту нужна отдельная директория для хранения файлов (HTML, CSS, скриптов). Стандартная практика — использовать структуру /var/www/домен/public_html, где public_html — корневая папка сайта.

Выполните команды:

sudo mkdir -p /var/www/example.com/public_html 
sudo chown -R apache:apache /var/www/example.com  

Где:

  • mkdir -p — создаёт все недостающие родительские директории;
  • chown -R — рекурсивно меняет владельца директории и её содержимого на пользователя и группу apache.

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

Если пропустить смену владельца, сервер вернёт ошибку 403 Forbidden, так как процесс Apache не сможет получить доступ к файлам.

Создание конфига виртуального хоста

Конфигурация каждого сайта хранится в отдельном файле внутри /etc/httpd/conf.d/. Это упрощает управление: можно отключать сайты, удаляя или переименовывая файлы и не затрагивая основной конфиг.

Создайте файл конфигурации:

sudo nano /etc/httpd/conf.d/example.com.conf  

Добавьте блок:

<VirtualHost *:80> 
    ServerAdmin admin@example.com 
    ServerName example.com 
    DocumentRoot /var/www/example.com/public_html 
    ErrorLog /var/log/httpd/example.com-error.log 
    CustomLog /var/log/httpd/example.com-access.log combined 
</VirtualHost>   

Разберём директивы:

  • <VirtualHost *:80> — определяет виртуальный хост, слушающий порт 80 (HTTP) на всех IP-адресах сервера (*).
  • ServerAdmin — email администратора. Указывается в сообщениях об ошибках (например, «500 Internal Server Error»).
  • ServerName — основной домен сайта. Должен совпадать с доменным именем, на которое настроен DNS.
  • DocumentRoot — путь к корневой директории сайта.
  • ErrorLog — путь к логу ошибок. Удобно хранить логи каждого сайта отдельно.
  • CustomLog — лог доступа. Параметр combined задаёт расширенный формат записи (включая User-Agent и Referer).

Дополнительные параметры:

  • ServerAlias — список дополнительных доменов (например, с префиксом www):
ServerAlias www.example.com example.org  
  • DirectoryIndex — файлы, которые Apache будет искать при обращении к директории:
DirectoryIndex index.php index.html index.htm  
  • Redirect — перенаправление запросов:
Redirect permanent /old-page https://example.com/new-page  

После сохранения файла перезагрузите Apache (reload или restart).

Проверка работы

Создайте тестовый файл index.html в директории сайта:

echo "<h1>Hello from example.com</h1>" | sudo tee /var/www/example.com/public_html/index.html  

Откройте сайт в браузере. Если DNS ещё не настроен, добавьте запись в файл /etc/hosts на локальной машине:

IP_сервера example.com  

Оптимизация логов

Чтобы логи не занимали всё дисковое пространство, настройте их ротацию. Создайте файл /etc/logrotate.d/example.com:

/var/log/httpd/example.com-*.log { 
    daily 
    missingok 
    rotate 14 
    compress 
    delaycompress 
    notifempty 
    create 640 apache apache 
    sharedscripts 
    postrotate 
        /bin/systemctl reload httpd > /dev/null 
    endscript 
}  

Активация SSL (Let’s Encrypt)

Защита сайта с помощью HTTPS — обязательный этап настройки веб-сервера. Сертификаты Let’s Encrypt бесплатны и признаны большинством браузеров, что делает их удобным решением для начальной защиты сайта. Certbot же автоматизирует их получение и установку. Рассмотрим процесс шаг за шагом.

Установка Certbot

Certbot — официальный клиент Let’s Encrypt, который упрощает генерацию и обновление сертификатов. Для работы с Apache потребуется также плагин python3-certbot-apache, интегрирующийся с конфигурацией веб-сервера. Без него Certbot не сможет вносить изменения в виртуальные хосты.

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

sudo dnf install certbot python3-certbot-apache -y  

Получение сертификата

Выполните команду для генерации SSL-сертификата:

sudo certbot --apache -d example.com  

Здесь --apache активирует режим автоматической настройки Apache, а -d — указывает на доменное имя. Если доменов несколько, перечислите их все.

Certbot временно запустит веб-сервер на порту 80 для подтверждения права владения доменом. Убедитесь, что порт 80 открыт в файрволе.

Выбор параметров HTTPS:

  • Рекомендуется включить перенаправление с HTTP на HTTPS для повышения безопасности и соблюдения современных требований браузеров.
  • Certbot автоматически добавит блок <VirtualHost *:443> с параметрами SSL в файл виртуального хоста.
  • Сертификаты будут размещаются в /etc/letsencrypt/live/example.com/. Приватные ключи защищены правами доступа 600, что означает доступ только для пользователя root.

Если Certbot не находит виртуальный хост, укажите путь к конфигу:

sudo certbot --apache -d example.com --apache-server-root /etc/httpd/conf.d/  

Автоматическое обновление сертификатов

Сначала проверьте работу обновления:

sudo certbot renew --dry-run  

Команда renew проверяет все установленные сертификаты и обновляет те, срок которых заканчивается через 30 дней. А --dry-run указывает на тестовый режим — не вносит изменений, но проверяет корректность процедуры.

Настройте cron. Откройте файл планировщика:

sudo crontab -e  

Добавьте строку:

0 0 * * * /usr/bin/certbot renew --quiet  

0 0 * * * означает запуск ежедневно в полночь, а --quiet подавляет вывод, кроме ошибок.

Альтернативный способ через systemd — создайте таймер для службы certbot-renew:

sudo systemctl enable --now certbot-renew.timer  

Дополнительные настройки SSL

Чтобы усилить безопасность, добавьте параметры шифрования в файле виртуального хоста: 

SSLCipherSuite EECDH+AESGCM:EDH+AESGCM 
SSLProtocol TLSv1.2 TLSv1.3
SSLHonorCipherOrder On  

Добавьте заголовок для принудительного использования HTTPS:

Header always set Strict-Transport-Security "max-age=300; includeSubDomains"  

Укажите max-age=300 (5 минут) для тестирования, затем увеличьте значение.

Настройте перенаправление www → не-www (или наоборот). В конфиге домена добавьте:

RewriteEngine On 
RewriteCond %{HTTP_HOST} ^www\.example\.com [NC] 
RewriteRule ^(.*)$ https://example.com$1 [L,R=301]  

Заключение

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

Читайте в блоге:

Loading spinner
0 Комментарий
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии

VPN на VPS-сервере

Узнайте, как создать собственный VPN на VPS-сервере для защиты ваших конфиденциальных данных!

Что будем искать? Например,VPS-сервер

Мы в социальных сетях