Метка: PHPFPM

  • Основные настройки PHP-FPM для веб-сервера

    Правильная конфигурация PHP-FPM критически важна для безопасности и стабильности работы веб-приложений. Разберём ключевые параметры из файла конфигурации пула (обычно /etc/php/8.x/fpm/pool.d/www.conf).

    1. Пользователь и группа (user/group)

    user = www-data
    group = www-data
    • Назначение: Определяет, от какого пользователя будут выполняться PHP-скрипты
    • Рекомендации:
      • Всегда используйте отдельного пользователя (не root!)
      • www-data — стандартный пользователь для веб-серверов в Ubuntu/Debian
      • Для изоляции разных сайтов создавайте отдельных пользователей
    • Безопасность: Ограничивает права PHP-скриптов в системе

    2. Группа сокета (listen.group)

    listen.group = www-data
    • Назначение: Указывает группу, которой доступен Unix-сокет PHP-FPM
    • Важно: Веб-сервер Nginx должен быть в этой же группе
    • Проверка:
      ps aux | grep nginx | grep -v grep
      groups www-data

    3. Права доступа к сокету (listen.mode)

    listen.mode = 0660
    ПраваВладелецГруппаОстальные
    0660rw-rw-
    • Безопасность: Запрещает доступ всем, кроме владельца и группы
    • Альтернативы:
      • 0666 — небезопасно (доступ всем)
      • 0600 — только владельцу (могут быть проблемы с веб-сервером)

    4. Дополнительные важные настройки

    ПараметрРекомендуемое значениеОписание
    pmondemandРежим управления процессами (для серверов с переменной нагрузкой)
    pm.max_children50Максимальное число процессов (зависит от памяти сервера)
    request_terminate_timeout30sМаксимальное время выполнения скрипта
    security.limit_extensions.phpОграничивает выполнение только PHP-файлов

    5. Проверка и применение настроек

    # Проверка синтаксиса
    sudo php-fpm8.x -t
    
    # Перезагрузка PHP-FPM
    sudo systemctl restart php8.x-fpm
    
    # Проверка прав сокета
    ls -la /run/php/php8.x-fpm.sock

    Вывод

    • Используйте отдельного пользователя/группу для PHP-FPM
    • Ограничивайте права доступа к сокету (0660 — оптимально)
    • Регулярно проверяйте логи PHP-FPM на ошибки
    • Настройки зависят от нагрузки и специфики приложения

    Эти настройки обеспечат баланс между безопасностью и производительностью вашего веб-сервера.