我使用https://laravel.com/docs/5.4/envoy作为部署工具。在 Envoy.blade.php 中,我有需要 sudo 访问的命令,例如:-
chmod 777 -R storage/
chmod 777 -R bootstrap/cache
这些命令失败,并显示不允许操作的错误。我们如何解决这个问题?
我使用https://laravel.com/docs/5.4/envoy作为部署工具。在 Envoy.blade.php 中,我有需要 sudo 访问的命令,例如:-
chmod 777 -R storage/
chmod 777 -R bootstrap/cache
这些命令失败,并显示不允许操作的错误。我们如何解决这个问题?
要将这些命令作为 sudo 运行,请尝试以下操作:
echo "{{ $password }}" | sudo -S chmod 777 -R storage/
echo "{{ $password }}" | sudo -S chmod 777 -R bootstrap/cache
显然,您需要将 sudo 密码传递给 envoy run 命令。
envoy run mytask --password=mypass
在 Ubuntu 服务器 16.04 和 17.04 上测试
我在服务器上更改了以下配置
sudo visudo
并添加
username ALL=(ALL) NOPASSWD: ALL
现在可以在不输入密码的情况下执行所有命令
您还可以指定单个命令
username ALL=(username) NOPASSWD:/etc/init.d/apache2 reload