Оптимизация Nginx при помощи пулов PHP в Ubuntu 12.04
PHP, Ubuntu | Комментировать запись
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: NGINX, PHP, php-fpm, Ubuntu 12.04