码云+阿里云webhook的配置过程与深坑

最近在学习小程序,希望web程序push到gitee上后,自动pull到阿里云服务器,实现本地与服务器的数据同步更新。

1.首先在gitbee上新建一个项目,并在阿里云上安装git,推荐yum install git,具体过程略。


2.切换到web根目录,并创建.git-credentials文件,写入入如下数据,用户名和密码替换上自己gitee或者github的用户名和密码,如果你同时拥有2个帐号,可以一行一个,存在同一个文件中。

cd /var/web
vim .git-credentials
https://用户名:密码@gitee.com   //码云(gitee)的配置
https://用户名:密码@github.com  //github的配置

3.如果你是第一次在服务器上使用git,那么你最好先运行git config配置一下你的用户、邮箱。查看配置文件~/.gitconfig,会发现新增加的配置项。

 git config --global user.name "用户名"
 git config --global user.email 邮箱
git config --global credential.helper store

4.在web根目录新建webhook.php,并输入下面的代码,如果使用的gitee,只输入gitee代码段

//本地路径
$local = '/data/wwwroot/test';
//仓库地址
$remote = 'https://gitee.com/guixianfeng/test.git';
 
//密码
$password = '123456';
 
//获取请求参数
$request = file_get_contents('php://input');
if (empty($request)) {
    die('request is empty');
}
 
//验证密码是否正确
$data = json_decode($request, true);
if ($data['password'] != $password) {
    die('password is error');
}
 
echo shell_exec("cd {$local} && git pull {$remote} 2>&1");
die('done ' . date('Y-m-d H:i:s', time()));

5.深坑一:这里要确认运行php的用户是哪一个。可以暂时更改webhook.php中内容,使用php echo exec('whoami')命令输出用户,譬如,我的是apache。那么需要把对应的文件夹所有者都修改为apache。

chown apache.apache .gitconfig
chown apache.apache .git-credentials
chown -R apache.apache /var/web/chatme
# 给web目录增加写权限
chmod -R g+w /var/web/chatme

6.深坑二:如果git不运行,则更改为sudo git,这时候就需要把apache增加到sudu免密运行列表中

# 编辑免密配置文件
vim /etc/sudoers
# 在root ALL=(ALL) ALL下增加apache
apache ALL=NOPASSWD:/usr/bin/git

7.切记重启apache服务,service httpd restart

8.如果gitee返回sudo: sorry, you must have a tty to run sudo错误提示。意思就是sudo默认需要tty终端。注释掉就可以在后台执行了。

vim /etc/sudoers (最好用visudo命令)
注释掉 Default requiretty 一行
#Default requiretty

你可能感兴趣的:(码云+阿里云webhook的配置过程与深坑)