摘要

本人所理解的自动化部署就是项目上传完git后不需要在上传到服务器可以自行同步,从而节省操作流程。由于使用Hexo博客想上传到自己服务器那么就要配置钩子,待项目上传到gitee后触发HooKs进行pull。

环境介绍:Linux服务器+宝塔面板、php脚本钩子、git Https请求方式

开始

1.安装git

1
2
// 在终端中输入命令
yum install git

2.配置记录git账号密码

  1. 创建文件

    在~/下, 使用touch创建文件 .git-credentials文件,例 touch .git-credentials

  2. 用vim编辑此文件,命令如下

    vim .git-credentials

  3. 编辑文件具体内容

    https://{username}:{password}@{git链接地址}

    例如:http://zbw:zbw123@gitee.com

  4. 在终端下执行以下命令

    1
    git config --global credential.helper store

3.设置Linux免输入密码使用sudo

  • 先检查/etc/sudoers文件权限是否允许修改,如果权限不足请先开启权限

    1
    2
    // 开启权限命令
    chmod 777 /etc/sudoers
  • 使用 “vim /etc/sudoers” 加入git命令免密

    进入后按 i 编辑文件,新增加 www ALL= NOPASSWD:/usr/bin/git

    img_name

    修改完成后按 Esc 然后输入 :wq 保存并退出

4.克隆项目

进入www文件下执行命令,具体文件放在那根据自己需求来。第一次需要输入用户名密码,第二次则不需要输入,执行完以后可以在执行git pull进行测试是否还需要输入密码,如果需要输入则表示前面配置并为成功。

1
git clone 你的项目地址

5.php执行钩子命令

gitee支持请求带密码、秘钥,这里只提供最简单获取方式。

1
2
3
4
<?php
// 需要修改cd 后的目录到自己的
exec("cd /www/zbw && sudo git reset --hard && sudo git pull",$data);
var_dump($data);

6.取消php禁用函数exec

注意

1.sudo是使用系统管理员身份执行命令,我们知道在linux中使用sudo执行时是需要输入root[管理员]密码的。但是我们使用PHP的exec执行时并没有办法输入密码。这时候怎么办呢?其实linux中有办法让某些命令的执行使用sudo而免输入密码

2.因为我们的PHP执行其实是使用的www用户。这个我们是可以自行设置的。默认都是www用户。那么PHP中执行git也是使用www用户。让www用户免密码执行git的语句