linux安装git服务器

centos 安装git 服务器

安装git
yum install -y git

创建git用户
groupadd git
adduser git -g git
passwd git

切换至git用户
su git
创建证书,保存客户端的公钥
/home/git/ 下如果无.ssh目录则创建

cd /home/git
mkdir .ssh
touch .ssh/authorized_keys

chmod 744 .ssh
chmod 644 .ssh/authorized_keys

必须给上面创建的文件授权,否则可能认证失败

初始化创建git仓库

mkdir /home/git/respone.git (路径随意,一般默认仓库为git后缀)
cd /home/git
git init --bare respone.git
chown -R git:git respone.git 

客服端获取代码
git clone git@xx.xx.xx.xx:/home/git/respone.git
输入密码获取成功

创建ssh key 及客户端操作不需要密码

安装git客户端,使用git bash
在git bash 输入
ssh-keygen -t rsa -C "youremail@example.com"
一路回车,在主目录生成 (默认会在 C:\Users\xxx\.ssh)
cd ~/.ssh
有两个文件,id_rsa是私钥,不能泄露出去,id_rsa.pub是公钥
将id_rsa.pub内容复制拷贝到服务器中的 /home/git/.ssh/authorized_keys

git打开rsa 认证
vi /etc/ssh/sshd_config
找到这几行,按照下面修改
RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys

修改后重启sshd服务
systemctl restart sshd

即可实现客户端拉推代码不需要密码

禁用git shell 登录
vi /etc/passwd
找到类似下面一行,我们刚添加git用户一般是在最后面
git:x:1001:1001:,,,:/home/git:/bin/bash
修改成下面格式,即最后面的 /bin/bash 换成 /usr/bin/git-chell
git:x:1001:1001:,,,:/home/git:/usr/bin/git-chell

 

服务器git自动部署代码

服务器中,部署一个裸仓库

mkdir /home/git/repertory.git
cd /home/git/repertory.git
git init --bare repertory.git 
创建后会生成一系列配置文件,进入到hooks这个钩子文件

cd /hooks
找到 post-receive.sample文件,注意后缀为sample表示忽略这个文件,不执行
cp post-receive.sample post-receive
如果没有post-receive.sample文件,直接创建
touch post-receive
chomd +x post-receive 变成可执行文件

在post-receive加上

#!/bin/bash
DIR_ONE=/home/git/master 

while read oldrev newrev ref //可以获取提交的内容
do
if [[ $ref =~ .*/master$ ]]; //提交master则更新到master目录下
then
git --work-tree=/home/git/master --git-dir=/home/git/front.git checkout -f
fi
done

保存完毕后测试成功通过
其中hooks下有很多文件,各个文件代表不同操作后的动作,可以根据自己需要编写更完善的功能,以上只是一个简单的测试功能而已

posted @ 2017-03-31 15:38  wil燦  阅读(268)  评论(0编辑  收藏  举报