irstea / deployer-worker-recipe
用于部署工作者的配方。
1.0.5
2021-01-18 16:18 UTC
Requires
- php: >=7.1
- deployer/deployer: ^6.7
Requires (Dev)
- irstea/php-cs-fixer-config: ^3.0.2
- php-parallel-lint/php-parallel-lint: @stable
- phpstan/phpstan: ^0.12
README
使用Deployer管理和服务器“worker”的“食谱”。
安装
composer require --dev irstea/deployer-worker-recipe
使用
需要将食谱包含在项目的deploy.php
文件中,使用require
指令。
<?php declare(strict_types=1);
namespace Deployer;
// Inclut la recette deployer standard pour Symfony
require 'recipe/symfony.php';
// Les systèmes cibles utilisent Systemd
require __DIR__ . '/vendor/irstea/deployer-worker-recipe/recipe/systemd.php';
// Nous voulons installer un worker symfony/messenger
require __DIR__ . '/vendor/irstea/deployer-worker-recipe/recipe/messenger.php';
// ... snip ! snip ! ...
// Arrête le worker avant de migrer la base de données
before('database:migrate', 'worker:stop');
命令
此包定义了在worker:
命名空间下部署的命令。
与所有deployer命令一样,它以部署环境名称为第一个参数。
示例
$ vendor/bin/dep worker:status test
➤ Executing task worker:status
deepomics-worker is failed
✔ Ok
命令 | 描述 | before/after | |
---|---|---|---|
worker:start | 启动工作者 | - | |
worker:stop | 停止工作者;如果未运行,则不执行任何操作 | - | |
worker:status | 显示工作者的状态 | - | |
worker:restart | 重新启动工作者 | - | |
worker:service:generate | 生成服务配置 | after deploy:vendors | - |
worker:service:reload | 重新生成服务配置然后重新加载 | - | |
worker:reset | 停止工作者,更新服务,然后重新启动 | after deploy:symlink ,rollback 和 deploy:failed |
参数
所有参数都以worker.
开头。它们可以在您的deploy.php
文件中使用set();
覆盖。
示例
<?php
// ...
set('worker.require_services', 'postgresql.service elasticsearch.service');
// ...
参数 | 描述 | 默认值 | 示例 |
---|---|---|---|
通用参数 | |||
worker.description | 服务的描述 | {{ application }} worker | monapp worker |
worker.user | 执行工作者的Unix用户 | {{ http_user }} | www-data |
worker.group | 执行工作者的Unix组 | worker.user的主要组 | www-data |
worker.working_directory | 工作者的工作路径 | {{ release_path }} | /var/www/monapp/release/25 |
worker.command_line | 工作者的完整命令行 | {{ bin/console }} {{ console_options }} --ansi --verbose {{ worker.console_command }} | bin/console --no-interaction --env=prod --no-debug --ansi --verbose ... |
systemd特有的参数 | |||
worker.require_services | 工作者需要的其他服务 | postgresql.service | postgresql.service elasticsearch.service |
worker.use_sudo | 使用sudo 调用systemctl ? | 如果不是root用户则使用是 | true |
worker.sudo_path | sudo 命令的确切路径 | 自动确定 | /usr/bin/sudo |
worker.sudo | sudo命令 | {{ worker.sudo_path }} 或空,根据 worker.use_sudo | /usr/bin/sudo |
worker.systemctl_path | systemctl 命令的确切路径 | 自动确定 | /bin/systemctl |
worker.systemctl | systemctl命令 | {{ worker.sudo }}{{ worker.systemctl_path }} | /usr/bin/sudo /bin/systemctl |
worker.service.template | 服务文件模板的路径 | 包中的template/worker.service.tpl | /home/user/src/monapp/vendor/irstea/deployer-worker-recipe/template/worker.service.tpl |
worker.service.parsed | 变量展开后的模板内容 | 动态 | 太长了,这里无法显示 |
worker.service.name | 工作者服务的名称 | {{ application }}-worker | monapp-worker |
worker.service.unit | 工作者单位的名称 | {{ worker.service.name }}.service | monapp-worker.service |
worker.service.path | 服务文件的路径 | {{ release_path}}/{{ bin_dir }}/{{ worker.service.unit }} | /var/www/monapp/release/25/bin/monapp-worker.service |
symfony/messenger特有的参数 | |||
worker.message_limit | 重启前可处理的最大消息数量 | 50 | 25 |
worker.time_limit | 重启前的最大时间(秒) | 3600 | 1800 |
worker.memory_limit | 需要重启的内存使用量 | 2G | 512M |
worker.receivers | 要处理的队列列表 | async | async_urgent async |
worker.console_command | 要执行的Symfony命令 | ` messenger:consume --limit={{ worker.message_limit }} --time-limit={{ worker.time_limit }} --memory-limit={{ worker.memory_limit }} {{ worker.receivers }}| messenger:consume --limit=25 --time-limit=1800 --memory-limit=2G async_urgent async` |