Оптимизация Nginx при помощи пулов PHP в Ubuntu 12.04

PHP-FPM позволяет изолировать различные приложения и веб-сайты, запуская их при помощи индивидуальных пользователей, что является одним из основных преимуществ данной реализации PHP. Такая функция называется пулом приложений (pool). Она довольно проста в настройке. Пулы приложений позволяют повысить безопасность сервера и его подключений к другим серверам, защитить взаимодействие пользователей и предупредить появление лазеек в системе безопасности. Кроме того, пулы предотвращают серверные ошибки.

Эта простая настройка особенно полезна при необходимости установить несколько фреймворков на разные виртуальные хосты Nginx (блоки server).

Примечание: Однако такая настройка может привести к расходу памяти. Потому при использовании пулов очень важно постоянно отслеживать процессы PHP. Настройка чрезмерного количества пулов может стать причиной проблем при обмене данными.

Требования

  • Сервер Ubuntu 12.04;
  • Учётная запись root или доступ к sudo (подробнее о привилегиях и начальной настройке сервера можно прочитать здесь);
  • Предварительно установленные Nginx и PHP-FPM; инструкции по установке можно найти в статье «Установка стека LEMP на сервер Ubuntu 12.04».

1: Создание пула PHP-FPM

Чтобы создать новый пул Nginx, нужно скопировать стандартный пул пользователя www-data.

Важно! Не удаляйте стандартный пул. Как правило, его использует www-data, а для других пользователей создаются отдельные пулы, чтобы сохранить индивидуальные системные привилегии.

Просто скопируйте стандартный www.conf и переименуйте копию, указав имя пользователя, которому будет принадлежать пул.

sudo cp /etc/php5/fpm/pool.d/www.conf /etc/php5/fpm/pool.d/username.conf

Примечание: Замените username именем своего пользователя.

Откройте файл в текстовом редакторе:

sudo nano /etc/php5/fpm/pool.d/username.conf

Отредактируйте его следующим образом:

; Start a new pool named 'www'.
; the variable $pool can we used in any directive and will be replaced by the
; pool name ('www' here)
[username] ; Note: The user is mandatory. If the group is not set, the default user's group
;       will be used.
user = username
listen = /var/run/php5-fpm.username.sock

Примечание: В файле можно отредактировать и другие опции, однако в данном руководстве для краткости исправлены только основные параметры.

Сохраните и закройте файл. Перезапустите PHP-FPM:

sudo service php5-fpm restart

2: Редактирование виртуального хоста

После этого нужно отредактировать файлы виртуальных хостов, указав сокеты для доступа к пулу.

Примечание: Инструкции по настройке блоков server в Ubuntu 12.04 LTS можно найти в этом руководстве.

Откройте стандартный файл:

sudo nano /etc/nginx/sites-available/default

Или файл виртуального хоста:

sudo nano /etc/nginx/sites-available/example.com

Отредактируйте параметр:

fastcgi_pass unix:/var/run/php5-fpm.username.sock;

Примечание: Вместо username укажите имя своего пользователя.

Перезапустите Nginx:

sudo service nginx restart

Если перезапуск прошёл успешно, пул PHP-FPM успешно настроен. Чтобы создать новый пул, повторите описанный выше процесс, заменив имя пользователя.

Tags: , , ,

Добавить комментарий