netlogix/supervisor

通过 CLI 创建 supervisor 程序组和程序。

安装数量: 75,751

依赖项: 1

建议者: 1

安全: 0

星标: 0

关注者: 5

分支: 0

开放问题: 0

类型:neos-package

1.1.3 2024-08-23 13:34 UTC

This package is auto-updated.

Last update: 2024-09-05 11:58:17 UTC


README

此包通过 flow CLI 创建 supervisor 配置文件。

配置文件命名为 "group-something.conf",当它们包含 supervisor 组配置时;或者当它们包含 supervisor 程序配置时,命名为 "program-something.conf"。这两个文件都位于您的应用程序的 Configuration/Supervisor 中。

设置

Supervisor 允许 "包含" 其他文件,并且甚至允许使用 globbing。

# cat /etc/supervisor/supervisord.conf
[include]
files=/etc/supervisor/conf.d/*.conf /var/www/*/Configuration/Supervisor/group.conf /var/www/*/Configuration/Supervisor/program*.conf

动态创建 supervisor 文件旨在作为编译时步骤,最好是部署时。

可用的配置选项

程序设置未经验证地传递给 supervisor 配置文件,因此每个当前和未来的配置选项都可用。

参见:http://supervisord.org/configuration.html#program-x-section-settings

可用的 flow 命令

./flow supervisor:create          Creates supervisor configuration
./flow supervisor:startgroups     Starts all programs of configured groups
./flow supervisor:stopgroups      Stops all programs of configured groups
./flow supervisor:updategroups    Reloads config and starts/stops programs accordingly

通过 YAML 创建 supervisor 设置

尽管 supervisor 程序可以通过 yaml 完全创建,但这些基本上是静态的,因为 yaml 配置格式不提供迭代或动态构造机制。

Netlogix:
    Supervisor:

        programs:

            changes-command-controller-polling-action:

                command: './flow changes:poll ; sleep 5'
                name: 'this-is-a-program'
                environment: "FLOW_CONTEXT='%env:FLOW_CONTEXT%'"
                directory: "%FLOW_PATH_ROOT%"

更多详情:参见 Configuration/Settings.yaml.example

通过 PHP 创建 supervisor 设置

存在一个 Provider 接口,它允许其他包以完全程序化的方式挂钩并创建 Supervisor Program 设置。

class Provider implements \Netlogix\Supervisor\Provider
{
    /**
     * @return array<\Netlogix\Supervisor\Model\Program>
     */
    public function getPrograms(): array
    {
        $name = 'this-is-a-program';
        $groupName = 'default';
        $command = './flow changes:poll ; sleep 5';
        $programSettings = [
            'environment' =>  \sprintf(
                "FLOW_CONTEXT='%s'",
                Bootstrap::getEnvironmentConfigurationSetting('FLOW_CONTEXT') ?: 'Development'
            ),
            'directory' => \FLOW_PATH_ROOT
        ];
        return [
            new \Netlogix\Supervisor\Model\Program(
                $name,
                $groupName,
                $command,
                $programSettings
            );
        ];
    }
}

配置组设置

组在程序将自己分配到组时按需创建。这意味着组不需要事先或根本不需要配置。

如果没有提供其他配置,则 supervisor 组名称将从程序的 "groupName" 配置选项生成。

组可以覆盖其名称。这意味着多个程序可以例如引用相同的组 "default",但如果不同的应用程序共享一个共同的 supervisor 守护进程,则组可以被重命名。

此设置还提供优先级设置。

Netlogix:
  Supervisor:

    groups:
      default:
        name: "%FLOW_PATH_ROOT%"
        priority: 200

重命名标识符

组和程序名称都需要清理以符合 supervisor 命名方案。这是自动完成的,因此即使组名称配置为 %FLOW_PATH_ROOT%,它也将转换为 var-www-document-root