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

Шановні користувачі! Запрошуємо вас до офіційного телеграм-канала 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
Ответов(1 - 3)
olexande
Aug 21 2015, 10:21
  
Пост #2



Репутация:   132  
Старожил
****

Группа: Пользователи
Сообщений: 2 042
С нами с: 27-February 07


Під FreeBSD я б запропонував розбити на Jail'и.
Кожному клієнту виділив би окремий Jail. І вже в ньому окремі інстанси.
Під Linux є "легкі системи віртуалізації". Можливо, KVM саме те що Вам підходить ProxMox пробували. Сподобалась.
З недоліків на той момент не обмежувала дисковий i/o чи не розібрались.
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
mak_v_
Aug 21 2015, 10:56
  
Пост #3



Репутация:   440  
Скорострел
*****

Группа: Пользователи
Сообщений: 7 453
С нами с: 4-December 11


(olexande @ Aug 21 2015, 11:21) Перейти к цитате

Під FreeBSD я б запропонував розбити на Jail'и.
Кожному клієнту виділив би окремий Jail. І вже в ньому окремі інстанси.
Під Linux є "легкі системи віртуалізації". Можливо, KVM саме те що Вам підходить ProxMox пробували. Сподобалась.
З недоліків на той момент не обмежувала дисковий i/o чи не розібрались.

Jail...для php-fpm...зачем?
Перефразируя: варить ингридиенты для супа в разных кастрюлях.
Работать будет, "сильноизолированно", но зачем? БД тоже изолировать джейлами? и веб-сервера?
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
olexande
Aug 25 2015, 15:01
  
Пост #4



Репутация:   132  
Старожил
****

Группа: Пользователи
Сообщений: 2 042
С нами с: 27-February 07


У автора не вдається налаштувати під 1-м інстансом. Ізоляція може за деяких обставин може спростити налаштування.

За деяких обставин, overhead на "ізоляцію" може бути допустимим.

Якщо "інстансами" користуються різними клієнтами, то хоча б мінімальне "розділення клієнтів" зайвим не буде ...

Я б Вашу аналогію перефразував:
"варить ингридиенты для супа в разных кастрюлях." у "разные хозяйки из комуналки (общаги) варят свой суп в разных кастрюлях на 1-й плите. Да, друг-другу "газа или соли" могут добавить-убавить при некоторых обстоятельствах в зависимости от реализации плиты (системы виртуализации)".

Я запропонував 1-н можливих з варіантів ...

Сообщение отредактировал olexande - Aug 25 2015, 15:02
User is offlineProfile CardPM
Go to the top of the page
+Quote Post

Reply to this topicStart new topic

 



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