php+nginx實現自動化部署腳本

2020-01-04     IT生涯

在目標機器創建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);

文章來源: https://twgreatdaily.com/zh-mo/tlYHcm8BMH2_cNUgq1sE.html