Как выполнить базовую настройку веб-сервера Apache?

«Как выполнить базовую настройку веб-сервера Apache?» — вопрос из категории DevOps, который задают на 24% собеседований PHP Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Базовая настройка Apache для хостинга PHP-приложения включает работу с виртуальными хостами и модулями. Основной конфигурационный файл — httpd.conf (или apache2.conf в Debian/Ubuntu), а настройки для конкретного сайта часто выносят в отдельные файлы в sites-available/.

1. Настройка виртуального хоста: Создайте файл, например, /etc/apache2/sites-available/myapp.conf.

<VirtualHost *:80>
    # Доменное имя или IP
    ServerName myapp.local
    ServerAlias www.myapp.local

    # Корневая директория проекта
    DocumentRoot /var/www/myapp/public

    <Directory /var/www/myapp/public>
        # Разрешаем следование симлинкам
        Options FollowSymLinks
        # Разрешаем использование .htaccess для переопределения настроек
        AllowOverride All
        # Определяем, кто имеет доступ
        Require all granted
    </Directory>

    # Логи для этого хоста
    ErrorLog ${APACHE_LOG_DIR}/myapp_error.log
    CustomLog ${APACHE_LOG_DIR}/myapp_access.log combined
</VirtualHost>

2. Активация сайта и необходимых модулей:

# Включить модуль rewrite для ЧПУ (Clean URLs)
sudo a2enmod rewrite
# Активировать конфигурацию сайта
sudo a2ensite myapp.conf
# Перезагрузить Apache для применения изменений
sudo systemctl reload apache2

3. Базовая настройка безопасности (в основном конфиге):

# Минимизировать информацию в заголовках сервера
ServerTokens Prod
ServerSignature Off
# Ограничить размер и время запроса
LimitRequestBody 10485760  # 10 MB
Timeout 30

4. Настройка для PHP (если используется mod_php): Убедитесь, что модуль php загружен и корректно настроен в php.ini. В современных связках чаще используется php-fpm с mod_proxy_fcgi.

Проверка синтаксиса: Перед перезагрузкой всегда проверяйте конфигурацию: sudo apachectl configtest.