通过 php-deployer 部署后重新加载 php-fpm,无需密码

问题描述 投票:0回答:2

我想要实现的是,通过

php-deployer
重新加载php7.2-fpm服务。
根据php-deployer的文档,可以像下面的代码一样完成:

task('reload:php-fpm', function () {
    run('sudo /usr/sbin/service php7-fpm reload');
});

after('deploy', 'reload:php-fpm');

但是,我在部署时遇到以下错误:

➤ 执行任务deploy:reload_php_fpm

↳ [产品]

sudo 服务 php7.2-fpm 重新加载

在 PhpSecLib.php 第 124 行:
[运行时异常]
sudo:不存在 tty 且未指定 Askpass 程序

系统信息:

PHP 版本 7.2
Ubuntu 18.04 LTS
PHP-Deployer 版本 6.3.0

您知道如何解决这个问题吗?

php fpm sudoers php-deployer
2个回答
7
投票

经过一番研究,我终于找到了处理这种情况的正确答案。 我通过以下命令编辑了

/etc/sudoers
文件:

sudo visudo

在文件末尾,我添加了这一行:

siamak ALL=(ALL) NOPASSWD:/etc/init.d/php7.2-fpm reload

这意味着用户

siamak
有权重新加载
php7.2-fpm
而无需输入密码。对于任何其他管理任务,
siamak
必须输入密码。


0
投票

任务'cachetool:clear:opcache'

现在 Deployer.org 针对此问题采取了特殊措施:

YAML 语法:

...
after:
  deploy:failed: deploy:unlock
  deploy:cleanup: cachetool:clear:opcache

只是在创建符号链接后添加到您的脚本中。 如何使用您可以在

recipe/magento2.php
脚本中看到的任务。

这比将部署用户添加到 sudoers 更好、更安全。

如果您不使用 Deployer.org - 您可以直接使用 lib

cachetool
CacheTool - 在 CLI (Github) 中管理缓存

© www.soinside.com 2019 - 2024. All rights reserved.