百度已收录

/*
@Description centos7安装git服务端
@Author 好人1生平胸
@Date 2020-03-23 13:41
*/

服务器上安装git

安装此教程前,请确保服务器安装了openssh

yum安装git
yum install git
查看git版本
git --version

至此git已经安装完毕

创建git用户组和git用户

创建git用户组
groupadd git
新建git用户并添加至git用户组
adduser git -g git
给git用户设置密码
passwd git

创建git远程仓库

新建一个路径当做git远程仓库
mkdir /apps/svr/git
进入到svr目录
cd /apps/svr
修改新建目录所属组和用户
chown git:git git
进入到git目录
cd git
初始化一个空仓库
git init --bare XXX.git XXX为项目名
修改新建仓库所属组和用户
chown -R git:git XXX.git
修改新建仓库权限
chmod 774 -R XXX.git
回到上一级目录
cd ../
修改git目录权限**
chmod 750 git

将RSA认证打开

修改ssh配置文件
vi /etc/ssh/sshd_config
查看配置文件是否有以下配置,有则直接开启,没有需要新加
1.RSAAuthentication yes
2.PubkeyAuthentication yes
3.AuthorizedKeysFile .ssh/authorized_keys>

服务器上创建及配置authorized_keys

如果你创建了用户username,那该文件应该创建在/home/username/.ssh/authorized_keys;如果你使用的是root用户,该文件应该创建在~/.ssh/authorized_keys即root/.ssh/authorized_keys,本教程创建了git用户

创建authorized_keys文件
cd /home/git
mkdir .ssh
cd .ssh
vi authorized_keys
将需要远程克隆机器的RSA公钥添加至此文件,一行一个

设置权限
chmod -R 700 /home/
修改所属组和用户
chown -R git /home/

禁止git用户shell登录

修改用户配置文件
vi /etc/passwd
找到git用户,将其末尾的/bin/bash改为/usr/bin/git-shell

设置钩子,将远程仓库的代码自动同步至另一目录,方便服务器上编写自动化部署脚本

切换到远程仓库所在目录
cd /apps/svr/git/XXX.git
进入到hooks目录
cd hooks
新建post-receive文件
vi post-receive
添加以下内容

#!/bin/sh
# 删除git环境标量
unset GIT_DIR
# 该路径是为了方便编写自动化部署脚本所需要的,其实就是在服务器的另一位置克隆一份仓库
DeployPath="/apps/workspace/xxl-job"
# 自动同步的日志路径
LogPath="/apps/svr/git/xxl-job.git/hooks"

echo -e "\n================= date +"%Y-%m-%d %H:%M:%S" ===============\n" >> $LogPath/gitsync.log 2>&1 cd $DeployPath

#git stash
#先拉取再合并
git pull origin master >> $LogPath/gitsync.log 2>&1

#强制与远程服务器同步,不与本地合并,只能通过提交的客户端提交的方式修改代码。
#git fetch --all
#git reset --hard origin/master

#time=`date`
#echo "web server pull at webserver at time: $time." echo "================================================" >> $LogPath/gitsync.log 2>&1


更改post-receive的所有者和权限
chmod -R 774 post-receive
chown git:git post-receive
创建gitsync.log日志文件
touch gitsync.log
更改gitsync.log的所有者和权限
chmod 770 gitsync.log
chown git:git gitsync.log

最后在刚刚指定的目录下克隆空仓库

切换到钩子文件里指定的目录,如还没有则新建
cd /apps/workspace
克隆一份空仓库
git clone /apps/svr/git/XXX.git
修改仓库所属组和权限
chown -R git:git XXX
chmod -R 774 XXX

至此,git的同步就设置好了
克隆项目至本地,将项目代码复制到新克隆的项目文件夹下,提交代码,查看RSA认证是否配置成功,查看服务器自动同步目录是否成功同步
如果不成功,可以在git服务器上,使用/usr/sbin/sshd -d 监控客户端ssh连接情况,查找出错原因