我想要实现的是,通过
php-deployer重新加载
php7.2-fpm
服务。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
您知道如何解决这个问题吗?
经过一番研究,我终于找到了处理这种情况的正确答案。 我通过以下命令编辑了
/etc/sudoers
文件:
sudo visudo
在文件末尾,我添加了这一行:
siamak ALL=(ALL) NOPASSWD:/etc/init.d/php7.2-fpm reload
这意味着用户
siamak
有权重新加载php7.2-fpm
而无需输入密码。对于任何其他管理任务,siamak
必须输入密码。
现在 Deployer.org 针对此问题采取了特殊措施:
YAML 语法:
...
after:
deploy:failed: deploy:unlock
deploy:cleanup: cachetool:clear:opcache
只是在创建符号链接后添加到您的脚本中。 如何使用您可以在
recipe/magento2.php
脚本中看到的任务。
这比将部署用户添加到 sudoers 更好、更安全。
如果您不使用 Deployer.org - 您可以直接使用 lib
cachetool
:
CacheTool - 在 CLI (Github) 中管理缓存