Автоматическая оптимизация php.ini для Linux

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

Пользователем github из Германии - perusio опубликован скрипт на awk+bash, который автоматически приводит настройки php в соответствие с ресурсами сервера, включая улучшения безопасности.

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

Итак, скрипт предназначен для более тонкой настройки параметров php для работы как “боевого” сайта - production, так и для разработки - development.

В процессе разработки сайта нужно получать вывод различных ошибок как в лог-файлы, так и при открытии страниц сайта. Тогда как на “боевом” сайте вывод ошибок на экран окажется не только некрасивым, но и небезопасным. С помощью этих данных можно узнать:

  • путь до скриптов сайта
  • какие установлены и включены php-расширения
  • какие настройки используются для сайта
  • и тому подобное для проведения атак

Какие настройки PHP изменяются и зачем?

Скрипт изменяет следующие настройки:

  • Логирование ошибок. Для “боевого” сайта все ошибки отправляются в syslog, для разрабатываемого - выводятся на страницы сайта
  • Использование PHP. Не выводятся данные об использовании php
  • zlib-сжатие и ее уровень. Если доступно, используется zlib с уровнем сжатия 1.
  • Ограничение памяти. 512МБ
  • Максимальный размер запроса и максимальный размер файлов.
  • Параметр cgi.fix_pathinfo устанавливается равным 0. Сделано для того, чтобы не транслировать автоматически pathinfo. Но к этому параметру следует отнестись внимательней. К примеру, Drupal не использует PATHINFO, но Wordpress - да.
  • Не позволять открывать файлы по прямой ссылке для функций fopen или include. Только те файлы, что доступны веб-серверу или FastCGI-обработчику в файловой системе. Никаких внешних ресурсов.
  • Запрет обработки кукисов через DOM, например с помощью JavaScript. Все современные браузеры поддерживают флаг httponly, IE6, IE7 и IE8 так же поддерживают его.
  • Настройка дополнительной энтропии для генерации токенов сессий с использованием аппаратного генератора чисел /dev/urandom. Требуется php не ниже 5.3.

Установка и использование

Для использования этого скрипта выполните ряд несложных действий:

Склонируйте git-репозитарий или скачайте текущую версию кода и поместите на сервер

Запустите шелл-скрипт php_cleanup. Он поддерживает использование трех параметров:

  • production / development - указание “боевой” или разрабатываемый сайт
  • ограничение памяти для PHP. По умолчанию - 512МБ
  • путь до файла php.ini. По умолчанию ищется в той же директории, где запущен скрипт.

Примеры использования

Произвести обработку php.ini для “боевого” сайта, запустив скрипт в той же директории, где расположен php.ini:

php_cleanup -p

Произвести обработку php.ini для разрабатываемого сайта, запустив скрипт в той же директории, где расположен php.ini:

php_cleanup -d

Произвести обработку php.ini для “боевого” сайта, работающего на php-fpm, указав месторасположение php.ini (по умолчанию, пример для Debian):

php_cleanup -p /etc/php5/fpm/php.ini

Произвести обработку php.ini для “боевого” сайта, работающего на php-fpm, указав месторасположение php.ini (по умолчанию, пример для Debian) и установив ограничение памяти в 2Гб:

php_cleanup -p -m 2G /etc/php5/fpm/php.ini

Автор статьи:

Сабынич Вадим

Аватар пользователя vadim s. sabinich
Вернуться