在目標機器創建deploy用戶(以deploy用戶為例子)
添加用戶并創建密碼
/usr/sbin/groupadd deploy
/usr/sbin/useradd -g deploy -s /bin/bash deploy
passwd deploy
輸入兩次密碼,回車確認
附加: 切換用戶命令 su - deply
使用新增用戶免密使用sudo命令
添加剛才的用戶deploy到sudoers里面,進行免密使用sudo命令
visudo //修改/etc/sudoers的內容,或vim or vi 命令
vim /etc/sudoers
## Allow root to run any commands anywhere
# 設置xxxx組下面的用戶使用sudo不需要輸入密碼
root ALL=(ALL) ALL
deploy ALL=(ALL) ALL # 新添加這一行
%deploy ALL=(ALL) NOPASSWD: ALL # 新添加這一行
到這里已經可以正常在exec中使用sudo here is command來執行命令了,而無需輸入密碼
目標機器修改php-fpm進程為deploy用戶運行
以centos7.5為例子
vim /etc/php-fpm.d/www.conf
# 修改用戶和用戶組為deploy
user = deploy
group = deploy
# 如果存在listen用戶和用戶組,同樣修改,不存在可以忽略
;listen.owner = deploy
;listen.group = deploy
重啟php-fpm服務
service php-fpm restart
目標機器修改Nginx為進程為deploy用戶運行
以centos7.5為例子
vim /etc/nginx/nginx.conf
頭部新增 (如果存在則修改)
user deploy;
重啟nginx
nginx -t
service nginx restart
至此,可以使用php 腳本執行命令,并拉取git代碼,同時,注意PHP腳本所屬用戶,可以修復文件用戶歸屬:
# 批量修改 filedir 目錄所屬用戶為deploy
sudo chown -R deploy:deploy filedir
PHP拉取git代碼更新例子
$output = shell_exec('cd ~/www/test && git pull origin master');
var_dump(output);