目的:希望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=密钥¶m=git项目名
网站项目名需跟码云的项目名保持一致
上述地址添加到码云
可同时推送多个服务器,已方便使用负载均衡