宝塔利用git+ webhooks 实现git更新远程同步阿里云Linux服务器

目的:希望web程序push到gitee上后,自动pull到阿里云服务器,实现本地与服务器的数据同步更新

借鉴宝塔论坛的方法:https://www.bt.cn/bbs/thread-5348-1-1.html

服务器环境:centos7.3,Nginx

项目目录: /www/wwwroot/www (www变量,自定义)

远程git版本库: 码云

步骤:

1. 准备工作

宝塔自带 git,没有的话可以自行安装

yum install git 
已安装的可以查看git版本
git --version
git version 1.8.3.1

添加密钥到码云

ssh-keygen -t rsa

//查看公钥

把ssh-rsa全部字符串添加到码云部署项目公钥设置里边

为了避免git pull 输入用户名密码,先把用户名密码加上

cd /www/wwwroot/ 下   //使用git克隆
git clone https://gitee.com/isu5cn/自己的项目名称.git  //码云里有克隆链接,避免出现错误,使用https方式

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

//会生成.gitconfig 的文件,查看
cat .gitconfig   //报错cat: .gitconfig : No such file or directory
cat ~/.gitconfig  //显示内容

[user]
        name = 输入的用户名
        email = 输入的邮箱
[credential]
        helper = store

//第一次pull会提示输入用户名密码
[root@iZ25mi9h7ayZ test]# git pull
Username for 'https://gitee.com': [email protected]
Password for 'https://[email protected]@gitee.com':输入正确密码(看不到输入内容)
//生成.git-credentials 隐藏文件
cat ~/.git-credentials
https://Username:[email protected]

vi ~/.git-credentials
可加多个用户名密码

2.宝塔面板 安装  宝塔  webhook 

执行脚本代码

#!/bin/bash
echo ""
#输出当前时间
date --date='0 days ago' "+%Y-%m-%d %H:%M:%S"
echo "Start"
#判断宝塔WebHook参数是否存在
if [ ! -n "$1" ];
then 
          echo "param参数错误"
          echo "End"
          exit
fi
#git项目路径
gitPath="/www/wwwroot/$1"
#git 网址
gitHttp="https://gitee.com/isu5cn/$1.git"

echo "Web站点路径:$gitPath"

#判断项目路径是否存在
if [ -d "$gitPath" ]; then
        cd $gitPath
        #判断是否存在git目录
        if [ ! -d ".git" ]; then
                echo "在该目录下克隆 git"
                git clone $gitHttp gittemp
                mv gittemp/.git .
                rm -rf gittemp
        fi
        #拉取最新的项目文件
        git reset --hard origin/master
        git pull
        #设置目录权限
        chown -R www:www $gitPath
        echo "End"
        exit
else
        echo "该项目路径不存在"
        echo "End"
        exit
fi

编辑框输入的命令会被过滤,点击编辑重新添加shell命令进去保存,需要使用命令重启宝塔

/etc/init.d/bt restart

http://ip:端口/hooks?access_key=密钥¶m=git项目名

网站项目名需跟码云的项目名保持一致

上述地址添加到码云

可同时推送多个服务器,已方便使用负载均衡

你可能感兴趣的:(Linux学习)