使用git上传并自动部署服务端代码

1 篇文章 0 订阅
本文详细介绍了如何在服务器上安装和配置Git,创建仓库,设置SSH密钥以实现无密码push,并编写自动更新钩子脚本来实现实时web目录同步。此外,还提供了客户端的测试步骤,包括生成密钥、克隆仓库以及测试push操作。
摘要由CSDN通过智能技术生成

一、git服务器搭建

安装git

apt-get install git

创建git用户

adduser git
passwd git  //修改git用户密码

创建git仓库

$ cd /home
$ mkdir git
$ mkdir ./git/.ssh
$ touch./git/.ssh/authorized_keys
$ cd /home/git
$ git init --bare test.git    //初始化仓库
$ chown -R git:git ../git
$ chmod 700 .ssh  // 需要设置成700,否则公钥认证会提示 (Permission denied)
$ chmod 600 .ssh/authorized_key // 需要设置成600,否则公钥认证会提示 (Permission denied)

使用git用户生成git密钥

把客户端的公钥(id_rsa.pb文件内容)添加到authorized_keys文件,git push操作就不需要每次都输入密码了)

$ sudo -u git ssh-keygen -t rsa -C “test@qq.com”   //生成密钥
$ cd /home/git/.ssh
$ cat id_rsa.pub>>authorized_keys  //把公钥加入authorized_keys文件

创建web目录

$ cd /home
$ git clone ssh://git@127.0.0.1/home/git/test.git   //因为我的web服务器与git服务器是同一台主机所以使用127.0.0.1,如果不是放在同一台主机的请使用公网ip
$ chown -R git:git test    //test目录拥有设为git(如果test有其他的拥有者,可以把git加入其目录拥有者的组)

编写自动更新钩子

$ cd /home/git/test.git/hooks/
$ vim post-receive  

内容如下:

#!/bin/sh
DIR=/home/test
git --work-tree=${DIR} clean -fd
# 直接强制检出 
git --work-tree=${DIR} checkout --force

给钩子文件添加执行权限

$ cd /home/git/test.git/hooks/
$ chmod +x post-receive  //给钩子文件添加执行权限

二、客户端测试验证

生成客户端密钥

ssh-keygen -t rsa -C “test@qq.com”   //生成密钥
ssh-copy-id -i ~/.ssh/id_rsa.pub 服务器ip //将密钥上传到服务,以后就可以不用输密码了

然后把git仓库拷贝下来

git clone ssh://git@123.456.78.9/home/git/test.git

测试操作
git push完成后git自动对web目录做git pull操作

cd test
git pull origin master
touch test.txt
git add .
git commit -m'test'
git push origin master
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值