php-fpm на отдельном хосте

Обсуждение настройки и работы сервисов, резервирования, сетевых настроек и вопросов безопасности ОС для молодых и начинающих системных администраторов.

Модератор: SLEDopit

little Jon
Сообщения: 212

php-fpm на отдельном хосте

Сообщение little Jon »

Есть 2 хоста, один хост с nginx и другой хост с php-fpm7 в качестве сервера приложений. Оба на собраны на alpine (docker). Обмен данными происходит через порт 9000. Запрос с web сервера на сервер приложений успешно проходит, его видно через tcpdump , но связка не работает, php-fpm отдает пустую страницу.

Смотрим трафик на стороне php-fpm7

Код: Выделить всё

tcpdump -A  -i eth0 port 9000

14:50:27.462230 IP 172.17.0.3.39250 > 0f9ece280dff.9000: Flags [P.], seq 1:473, ack 1, win 229, options [nop,nop,TS val 808910 ecr 808910], length 472
E....E@.@..~.........R#(6...?}......Z&.....
..W...W...........................QUERY_STRING..REQUEST_METHODGET..CONTENT_TYPE..CONTENT_LENGTH.    SCRIPT_NAME/test.php.    REQUEST_URI/test.php.    DOCUMENT_URI/test.php..DOCUMENT_ROOT/web..SERVER_PROTOCOLHTTP/1.1..REQUEST_SCHEMEhttp..GATEWAY_INTERFACECGI/1.1..SERVER_SOFTWAREnginx/1.10.3.
REMOTE_ADDR172.17.0.1..REMOTE_PORT47824.
SERVER_ADDR172.17.0.3..SERVER_PORT80..SERVER_NAME..REDIRECT_STATUS200
HTTP_HOST172.17.0.3..HTTP_USER_AGENTcurl/7.47.0..HTTP_ACCEPT*/*......................
14:50:27.462256 IP 0f9ece280dff.9000 > 172.17.0.3.39250: Flags [.], ack 473, win 235, options [nop,nop,TS val 808910 ecr 808910], length 0
E..4..@.@.K.........#(.R?}..6..f....XN.....
..W...W.
14:50:27.462480 IP 0f9ece280dff.9000 > 172.17.0.3.39250: Flags [P.], seq 1:97, ack 473, win 235, options [nop,nop,TS val 808910 ecr 808910], length 96
E.....@.@.K,........#(.R?}..6..f....X......
..W...W......C..X-Powered-By: PHP/7.1.3
Content-type: text/html; charset=UTF-8

..................s:


Тестовая страница

Код: Выделить всё

<?php
phpinfo();


конфигурация php-fpm

Код: Выделить всё

 cat /etc/php7/php-fpm.conf| grep -v ^";"|grep -v ^$
[global]
daemonize = no
include=/etc/php7/php-fpm.d/*.conf
/www #

# cat /etc/php7/php-fpm.d/www.conf | grep -v ^";"|grep -v ^$
[www]
user = nobody
group = nobody
listen = 9000
pm = dynamic
pm.max_children = 5
pm.start_servers = 2
pm.min_spare_servers = 1
pm.max_spare_servers = 3
chdir = /


Пробовал подключить страницу статуса, добавлял строку pm.status_path = /status, результат неудачный, вывод пустой страницы.
Скармливал тестувую страницу php-cli, все отрабатывает без проблем.

Подскажите куда копать, в каком направлении двигаться.

И еще один вопрос.
Я не понимаю как работает связка web сервера и php сервера. Если смотреть конфигурацию, то сервер web пересылает запрос *.php на сервер приложений (фактически проксирует). Данные скриптов находятся на web сервере, в запросе они не передаются, это я проверял на рабочей конфигурации. Тогда совершенно не понятно, каким образом скрипты попадают для обработки на сервер приложений.
Когда сервер приложений и веб сервер расположены на одном хосте, то тут можно предположить, что серверу приложений в запросе указали путь к скриптам которые надо обработать. Вот для примера часть запроса в котором указаны переменные окружения "REQUEST_URI/test.php. DOCUMENT_URI/test.php..DOCUMENT_ROOT/web.." .

Когда веб сервер и сервер приложений расположены на разных хостах, то такой возможности нет. Получается нет данных, нечего возвращать, отдается пустая страница, но у других связки веб сервер, сервер приложений как то работают.


Linuxforum@conference.jabber.ru
Спасибо сказали:

Аватара пользователя
Bizdelnick
Модератор
Сообщения: 17911
Статус: grammatikführer
ОС: Debian GNU/Linux

Re: php-fpm на отдельном хосте

Сообщение Bizdelnick »

little Jon писал(а):
25.04.2017 22:58
Подскажите куда копать, в каком направлении двигаться.

Как обычно — смотреть лог.

little Jon писал(а):
25.04.2017 22:58
Если смотреть конфигурацию, то сервер web пересылает запрос *.php на сервер приложений (фактически проксирует). Данные скриптов находятся на web сервере, в запросе они не передаются, это я проверял на рабочей конфигурации. Тогда совершенно не понятно, каким образом скрипты попадают для обработки на сервер приложений.

Никак. Скрипты должны быть там, где работает php-fpm.
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:

little Jon
Сообщения: 212

Re: php-fpm на отдельном хосте

Сообщение little Jon »

Bizdelnick писал(а):
26.04.2017 00:13
little Jon писал(а):
25.04.2017 22:58
Подскажите куда копать, в каком направлении двигаться.

Как обычно — смотреть лог.


Логи, к сожалению ничего полезного не содержат. Только записи о успешном запуске, остановке и запросе со стороны веб сервера, в режиме debug только мусорная информация из повторяемых бесполезных записей.

Bizdelnick писал(а):
26.04.2017 00:13
Никак. Скрипты должны быть там, где работает php-fpm.

А вот за это спасибо.


Linuxforum@conference.jabber.ru
Спасибо сказали:

Аватара пользователя
SLEDopit
Модератор
Сообщения: 4730
Статус: фанат консоли (=
ОС: GNU/Debian, RHEL

Re: php-fpm на отдельном хосте

Сообщение SLEDopit »

little Jon писал(а):
25.04.2017 22:58
Есть 2 хоста, один хост с nginx и другой хост с php-fpm7 в качестве сервера приложений.
Стоит так же помнить, что при таком подходе, вам либо нужно разносить статику и php на разные сервера, либо придумывать, как обслуживать статику ещё и на машину с php-fpm, чтобы она была доступна nginx'у.
Если у вас проект небольшой (скажем, блог < 50к посетителей / сутки), то вам проще всё сделать на одном хосте.
UNIX is basically a simple operating system, but you have to be a genius to understand the simplicity. © Dennis Ritchie
The more you believe you don't do mistakes, the more bugs are in your code.
Спасибо сказали:

little Jon
Сообщения: 212

Re: php-fpm на отдельном хосте

Сообщение little Jon »

SLEDopit писал(а):
26.04.2017 10:00
little Jon писал(а):
25.04.2017 22:58
Есть 2 хоста, один хост с nginx и другой хост с php-fpm7 в качестве сервера приложений.
Стоит так же помнить, что при таком подходе, вам либо нужно разносить статику и php на разные сервера, либо придумывать, как обслуживать статику ещё и на машину с php-fpm, чтобы она была доступна nginx'у.
Если у вас проект небольшой (скажем, блог < 50к посетителей / сутки), то вам проще всё сделать на одном хосте.


Спасибо за совет, я как-то об этом не подумал. В моем случае к обоим серверам будет примонтирован том с проектом. Docker легко позволяет проделывать подобное. Таким образом данные будут доступны обоим серверам.


Linuxforum@conference.jabber.ru
Спасибо сказали: