Установка и настройка - lmovsesjan/Fastcgi-Daemon GitHub Wiki
Логически Демон состоит из нескольких пулов потоков, из которых один является пулом сокета, а остальные пулами-исполнителями.
Пул сокета отвечает за приём данных от HTTP-сервера и передачу запроса соответствующему обработчику в один из пулов-исполнителей Демона.
Обработчики реализуются в подключаемых библиотеках - модулях (module). В модуле может быть реализовано несколько компонентов (component). Пул-исполнитель для компонента определяется дескриптором (handler). Пул сокета использует дескрипторы для передачи запроса обработчику.
Пулов-исполнителей может быть много и они конфигурируются раздельно, каждый имеет своё максимальное количество нитей и свой queue
. С помощью queue
можно гибко регулировать приоритет пула.
Настройки демона находятся в XML-файле следующего вида:
<?xml version="1.0"?>
<fastcgi xmlns:xi="http://www.w3.org/2001/XInclude">
<pools>
<pool name="main" threads="1" queue="1"/>
</pools>
<handlers>
<handler pool="main" url="/simple_res">
<component name="csimple"/>
</handler>
</handlers>
<components>
<component name="csimple" type="csimple_module:simple_factory"/>
<component name="daemon-logger" type="logger:logger">
<level>INFO</level>
<ident>fastcgi-test</ident>
</component>
</components>
<modules>
<module name="csimple_module" path="/fastcgi/csimple/libcsimple.so"/>
<module name="logger" path="/usr/lib/fastcgi2/fastcgi2-syslog.so"/>
</modules>
<daemon>
<logger component="daemon-logger"/>
<endpoint>
<backlog>128</backlog>
<socket>/tmp/fastcgi_daemon.sock</socket>
<threads>1</threads>
</endpoint>
<pidfile>/tmp/fastcgi_daemon.pid</pidfile>
<monitor_port>20011</monitor_port>
</daemon>
</fastcgi>
Теги:
- pools - Определение пулов-исполнителей. Содержит атрибуты:
-
name
- имя пула. Строка, задаваемая администратором демона; -
threads
- количество потоков в пуле; -
queue
- максимальное количество запросов в очереди на обработку. - handlers - Содержит теги handler, с помощью которых определяется обработчик запроса пользователя.
- handler - Установка соответствия между запросом пользователя и компонентом, который будет этот запрос обрабатывать. Обработчик можно сконфигурировать для конкретного порта, домена/хоста или ресурса. Содержит атрибуты:
- url - имя ресурса. Например, `url="/some_resource"1;
- host - содержимое заголовка
Host
запроса; - port - идентификатор порта nginx;
- address - бинд-адрес nginx из его конфигурационного файла (одна из секций listen);
- pool - имя пула, в котором будет обрабатываться запрос. Единственный обязательный атрибут. Остальные атрибуты могут комбинироваться произвольным образом. Может содержать в себе теги
param
(может быть несколько) иcomponent
.- param - Указывает обязательный параметр запроса. Содержит атрибут
name
- имя параметра. - component - Компонент, которому будет передан пользовательский запрос. Содержит атрибут
name
, в котором следует указать имя компонента.
- param - Указывает обязательный параметр запроса. Содержит атрибут
- components - Содержит теги
component
, которые описывают компоненты, используемые для обработки запросов пользователя. - component - Описание компонента. Содержит атрибуты:
-
name
- имя компонента; -
type
- <имя модуля>:<имя фабрики компонента>. Имя фабрики компонента предоставляется разработчиком модуля. Может содержать в себе какие угодно другие теги по усмотрению разработчика.
-
- modules|Содержит теги
module
, описывающие подключаемые модули FastCGI-приложений.| - module - Описание подключаемого модуля, содержащего FastCGI-приложение. Содержит атрибуты:
- name - имя модуля;
- path - путь к файлу модуля.|
- daemon - Описание общих параметров демона и параметров пула сокета. Содержит теги
logger
,endpoint
,pidfile
,monitor_port
. - logger - Определяет компонент логгирования. Содержит атрибут
component
, задающий имя компонента. - endpoint - Конфигурация пула сокетов. Содержит элементы: backlog - размер очереди входящих соединений от nginx. Входящие соединения не помещающиеся в очередь будут отброшены.; socket - путь к Unix-сокету, который используется для взаимодействия с HTTP-сервером; threads - количество нитей, читающих сокет.
- pidfile - Путь к pid-файлу.
- monitor_port - Порт, с которого можно получить информацию о текущем состоянии сервера.
Настройка логгирования.
Для логгирования Демон использует syslog, который подключается с помощью компонента daemon-logger
. Компонент настраивается элементами level
и ident
, задающими уровень записей и идентификатор приложения для syslog
.
Убедиться в том, что Демон работает, можно командой:
$ echo i | netcat localhost port
В этой команде port
должен иметь то же значение, что содержится в <daemon><monitor_port>value</monitor_port></daemon>
файла конфигурации.
В ответ будет выдан XML-документ вида:
<fastcgi-daemon>
<status>running</status>
<pools>
<endpoint_pools>
<endpoint socket="/tmp/fastcgi_daemon.sock" threads="1" busy="0"/>
</endpoint_pools>
<pool name="main" threads="1" busy="0" queue="1" current_queue="0" all_tasks="0" exception_tasks="0"/>
</pools>
</fastcgi-daemon>