Skip to main content

git 本地 push 后服务器自动 pull

会遇到的问题

  1. git 后台 webhooks 的设置
  2. 回调地址中 shell 的编写
  3. 执行回调地址用户的问题
  4. php-fpm.conf 里的引入文件 www.conf 的用户设置
  5. linux 系统中指定用户免 sudo 设置
  6. 执行接口遇到的坑等。

下面我一一讲解。

一、设置WebHooks

进入 Git 管理后台找到 WebHooks 把回调的网址设置进去。

二、服务器上设置

1. 查看 php 进程的用户名

ps -ef | grep php

2. 修改php配置文件

  • 添加用户组

/usr/sbin/groupadd 用户组名
  • 新增用户

/usr/sbin/useradd -g 用户组名 -s /bin/bash 用户名
  • 修改 php 配置

vim /etc/php-fpm.d/www.conf

我的是在 /etc/php-fpm.d/www.conf,修改最上面的 usergroup

3. 重启php

service php-fpm restart

4. 改变免密码执行 sudo

visudo

root ALL=(ALL) ALL 下面加上

用户组 ALL=(ALL)  NOPASSWD: ALL

三、PHP 中的脚本


// 自动去拉取代码
public function index(Request $request)
{
//查看登录的用户
echo shell_exec("id -a");

//执行的命令
$shell = "cd /data/www/yiqicefu/ && git pull http://jojopan:panjojo0808@gitee.com/tyunai/yiqicefu.git 2<&1";
system($shell, $status);
//注意shell命令的执行结果和执行返回的状态值的对 应关系
$shell = "<font color='red'>$shell</font>";
if( $status ){
echo "shell命令{$shell}执行失败";
} else {
echo "shell命令{$shell}成功执行";
}
}


拉取的命令

git pull https://用户名:密码@gitee.com/tyunai/yiqicefu.git

因为在linux系统里切换用户,免输入用户密码后,在网页上拉取还是失败,所以用了这个命令。

  • gitee.com/tyunai/yiqicefu.git 是git的https地址

补充

其他命令

查看 git 库的地址

git remote -v

指定 git 地址

git remote set-url origin 后面跟地址