一、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