← Назад к вопросам

Как настраивать Apache?

2.0 Middle🔥 101 комментариев
#Инфраструктура и DevOps

Комментарии (1)

🐱
deepseek-v3.2PrepBro AI5 апр. 2026 г.(ред.)

Ответ сгенерирован нейросетью и может содержать ошибки

Настройка Apache HTTP Server

Настройка Apache HTTP Server — ключевой навык backend-разработчика. Основной конфигурационный файл — httpd.conf или apache2.conf в зависимости от ОС (в Debian/Ubuntu используется модульная структура в /etc/apache2/).

Основные этапы настройки

  1. Установка и проверка

    # Ubuntu/Debian
    sudo apt update && sudo apt install apache2
    sudo systemctl start apache2
    sudo systemctl enable apache2
    
    # CentOS/RHEL
    sudo yum install httpd
    sudo systemctl start httpd
    sudo systemctl enable httpd
    
  2. Структура конфигурационных файлов

    • Основной файл: /etc/apache2/apache2.conf (Debian) или /etc/httpd/conf/httpd.conf (RHEL)
    • Виртуальные хосты: /etc/apache2/sites-available/ (на Debian)
    • Модули: /etc/apache2/mods-available/
    • Порты: /etc/apache2/ports.conf

Ключевые директивы конфигурации

# Пример основных настроек в httpd.conf
ServerRoot "/etc/apache2"
Listen 80
User www-data
Group www-data
ServerAdmin webmaster@localhost
DocumentRoot "/var/www/html"

# Включение модулей
LoadModule rewrite_module modules/mod_rewrite.so

# Настройки производительности
StartServers 5
MinSpareServers 5
MaxSpareServers 10
MaxRequestWorkers 150
MaxConnectionsPerChild 0

# Настройки для PHP (если используется mod_php)
<FilesMatch \.php$>
    SetHandler application/x-httpd-php
</FilesMatch>

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

# /etc/apache2/sites-available/example.conf
<VirtualHost *:80>
    ServerName example.com
    ServerAlias www.example.com
    DocumentRoot /var/www/example/public
    
    <Directory /var/www/example/public>
        Options Indexes FollowSymLinks
        AllowOverride All
        Require all granted
        
        # Для PHP-FPM
        <FilesMatch \.php$>
            SetHandler "proxy:unix:/var/run/php/php8.1-fpm.sock|fcgi://localhost"
        </FilesMatch>
    </Directory>
    
    ErrorLog ${APACHE_LOG_DIR}/example_error.log
    CustomLog ${APACHE_LOG_DIR}/example_access.log combined
</VirtualHost>

Оптимизация производительности

# KeepAlive настройки
KeepAlive On
KeepAliveTimeout 5
MaxKeepAliveRequests 100

# Сжатие gzip
<IfModule mod_deflate.c>
    AddOutputFilterByType DEFLATE text/html text/plain text/xml text/css application/javascript
</IfModule>

# Кэширование заголовков
<IfModule mod_expires.c>
    ExpiresActive On
    ExpiresByType image/jpg "access plus 1 year"
    ExpiresByType text/css "access plus 1 month"
</IfModule>

Безопасность

# Скрытие информации о сервере
ServerTokens Prod
ServerSignature Off

# Запрет доступа к системным файлам
<Directory />
    Options FollowSymLinks
    AllowOverride None
    Require all denied
</Directory>

<Files ".ht*">
    Require all denied
</Files>

# Защита от DDoS
Timeout 60
LimitRequestBody 10240000

Работа с модулями

# Активация модулей в Debian/Ubuntu
sudo a2enmod rewrite
sudo a2enmod headers
sudo a2enmod ssl
sudo a2dissite 000-default
sudo a2ensite example.conf
sudo systemctl reload apache2

Отладка и мониторинг

# Проверка синтаксиса конфигурации
sudo apache2ctl configtest

# Просмотр логов
sudo tail -f /var/log/apache2/error.log
sudo tail -f /var/log/apache2/access.log

# Статус сервера
sudo systemctl status apache2
sudo apache2ctl -S  # Показать текущую конфигурацию

Интеграция с PHP

Для современных PHP-приложений рекомендуется использовать PHP-FPM вместо mod_php:

<VirtualHost *:80>
    <FilesMatch \.php$>
        SetHandler "proxy:unix:/var/run/php/php8.1-fpm.sock|fcgi://localhost"
    </FilesMatch>
</VirtualHost>

Практические рекомендации

  1. Используйте версии конфигурационных файлов в системе контроля версий
  2. Разделяйте конфигурацию по средам (dev/staging/production)
  3. Регулярно обновляйте Apache и модули для безопасности
  4. Настройте мониторинг доступности и производительности
  5. Используйте инструменты для анализа конфигурации: apache2ctl -S, apachetop

Для высоконагруженных проектов рассмотрите альтернативы Apache (Nginx) или комбинацию Apache + Nginx (где Nginx работает как reverse proxy и отдаёт статику).

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

Как настраивать Apache? | PrepBro