宝塔利用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': xxxx@xxxx.com

Password for 'https://xxxx@xxxx.com@gitee.com':输入正确密码(看不到输入内容)

//生成.git-credentials 隐藏文件

cat ~/.git-credentials

https://Username:Password@gitee.com

 

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=密钥&param=git项目名


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


上述地址添加到码云




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

--------------------- 

作者:爱酥网络 

来源:CSDN 

原文:https://blog.csdn.net/alipea/article/details/83858177 

版权声明:本文为博主原创文章,转载请附上博文链接!