Установка и настройка - 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, в котором следует указать имя компонента.
  • 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>
⚠️ **GitHub.com Fallback** ⚠️