Здравствуйте Гость [ Вход | Регистрация ] | Форум в сети 7054-й день

Шановні користувачі! Запрошуємо вас до офіційного телеграм-канала 0day Community. Тут ви зможете поспілкуватися одне з одним та дізнатися про останні новини щодо роботи ресурса, поставити запитання до адміністрації, тощо. Перейти до телеграм-канала можна відсканувавши QR-код або натиснувши на посилання: @zeroday_ua

 Create multiple master process for php-fpm (CentOS 7 x64), / Создать множество мастер-процессов для php-fpm.

chimera
Aug 18 2015, 17:33
  
Пост #1



Репутация:   76  
Активист
*

Группа: Пользователи
Сообщений: 340
С нами с: 18-January 08


Недавно столкнулся с необходимостью запустить несколько копий php-fpm (по одной для каждого виртуального веб-сервера) чтобы один пользователь мог ушатывать работь со службой не нарушая работу другой службы. Вариант с нарезанием пулов не устраивал т.к. в случае сбоя в рамках одного вирт. веб-сервера пришлось бы перезапустить службу со всеми пулами. Решение — запустить копии службы php-fpm. Итак, приступим.

Перейдем в папку с файлами служб и создадим одну копию
[root@server /]# cd /usr/lib/systemd/system
[root@server /]# cp php-fpm.service php-fpm-usr1.service

Открываем созданный файл
[root@server /]# vi php-fpm-usr1.service

и редактируем блок [Service] таким добавляя префикс -usr1:

[Service]
Type=notify
PIDFile=/run/php-fpm/php-fpm[b]-usr1[/b].pid
EnvironmentFile=/etc/sysconfig/php-fpm[b]-usr1[/b]
ExecStart=/usr/sbin/php-fpm --nodaemonize --fpm-config /etc/php-fpm[b]-usr1[/b].conf
ExecReload=/bin/kill -USR2 $MAINPID
PrivateTmp=true


Сохраняем изменения.

Создаем символическую ссылку для службы:
[root@server /]# ln -s /usr/lib/systemd/system/php-fpm-usr1.service /etc/systemd/system/multi-user.target.wants/php-fpm-usr1.service

Создаем новый EnvironmentFile копируя дефолтный:

[root@server /]# cp /etc/sysconfig/php-fpm /etc/sysconfig/php-fpm-usr1

Далее нужно создать отдельный конфиг, который php-fpm-usr1.service будет использовать. Скопируем его с дефолтного:

[root@server /]# cp /etc/php-fpm.conf /etc/php-fpm-usr1.conf

Отредактируем его.
[root@server /]# vi /etc/php-fpm-usr1.conf

;;;;;;;;;;;;;;;;;;;;;
; FPM Configuration;
;;;;;;;;;;;;;;;;;;;;;
include=/etc/php-fpm.d/www[b]-usr1[/b].conf  ; Тут мы указываем, какой конфиг пула использовать.

[global]
pid = /run/php-fpm/php-fpm[b]-usr1[/b].pid    ; И создаем отдельный pid-файл.

Сохраняем изменения.

В папке /etc/php-fpm.d создадим и отредактируем конфиг пула:
[root@server /]# cp /etc/php-fpm.d/www.conf /etc/php-fpm.d/www-usr1.conf
[root@server /]# vi /etc/php-fpm.d/www-usr1.conf

; Start a new pool named 'www-usr1'.
[www[b]-usr1[/b]]
...
listen = 127.0.0.1:[b]9010[/b]  ; Дефолтный порт — 9000. Задаем другой.
...

Сохраняем изменения.

Изначально в php-fpm.conf прописано читать все конфиги в папке /etc/php-fpm.d но поскольку мы решили настроить php-fpm по схеме «одна служба-один-конфиг-один пул» отредактируйте /etc/php-fpm.d/www.conf заменив:

include=/etc/php-fpm.d/*.conf
на
include=/etc/php-fpm.d/www.conf

Теперь попросим systemd перечитать конфиги, чтобы он увидел наш php-fpm-usr1.service
systemctl daemon-reload

Запускаем php-fpm-usr1:

[root@server /]# systemctl restart php-fpm
[root@server /]# systemctl start php-fpm-usr1

и проверяем:
[root@server /]# systemctl | grep php-fpm

php-fpm-usr1.service loaded active running The PHP FastCGI Process Manager
php-fpm.service loaded active running The PHP FastCGI Process Manager

Вот и все.
User is offlineProfile CardPM
Go to the top of the page
+Quote Post

Сообщения в этой теме


Reply to this topicStart new topic

 



- Упрощённая версия
Сейчас: 8th July 2025 - 6:38
Сайт не розміщує електронні версії творів, а займається лише колекціонуванням та каталогізацією посилань, що публікуються нашими користувачами. Якщо Ви є правовласником якоїсь частини опублікованого матеріалу та не бажаєте, щоб посилання на нього знаходилось в нашому каталозі, зв’яжіться з нами і ми видалимо його. Файли для обміну надані користувачами сайту і адміністрація не несе відповідальності за їх вміст.