netlogix / supervisor
通过 CLI 创建 supervisor 程序组和程序。
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
。