本文所有操作均基于阿里云服务器及CentOS 7.7系统,所有操作均使用root用户完成。

本文最终达成的目的:搭建一个私有git服务器,用于自己多台电脑之间的项目同步;同时可以允许任何人使用git协议clone其中的某些项目。

首先,我们在本地安装git。我使用的是Windows系统,可以直接从官网下载安装包进行安装,安装过程就不在此赘述了。

1、在服务器上安装git(参考博客)

在服务器端安装git的主要目的有2个:其一是用于在服务器上新建仓库,其二是作为git协议的deamon使用。由于CentOS的包管理器自带的git版本太低,因此我们不使用包管理器自带的git。当然如果你愿意使用自带版本的git,你可以直接执行

yum install git

来安装。在此,我仍然希望使用最新版的git,因此需要自行编译安装。首先,卸载系统自带的git,并安装一些依赖:

yum remove git

yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel gcc perl-ExtUtils-MakeMaker

之后,我们创建一个目录用来放置我们下载的源代码。由于我使用的是root账户登录,因此执行 

cd /root

mkdir code

创建好目录之后,我们从官网上下载git的源代码以及其依赖的libiconv库(下载链接)。下载好之后,通过ftp工具上传到/root/code目录中。

 

首先解压并安装libiconv库(此处文件名根据你下载的版本不同有所不同): 

cd /root/code

tar zxvf libiconv-1.16.tar.gz

cd libiconv-1.16

./configure --prefix=/usr/local/libiconv

make

make install

然后,编译安装git:

cd /root/code

tar zxvf git-2.26.1.tar.gz

cd git-2.26.1.tar.gz

./configure --prefix=/usr/local/git --with-iconv=/usr/local/libiconv

make

make install

安装完成之后,我们将安装后git可执行文件的连接到/usr/bin: 

ln -s /usr/local/git/bin/git-receive-pack /usr/bin/git-receive-pack

ln -s /usr/local/git/bin/git /usr/bin/git

ln -s /usr/local/git/bin/git-shell /usr/bin/git-shell

ln -s /usr/local/git/bin/git-upload-archive /usr/bin/git-upload-archive

ln -s /usr/local/git/bin/git-upload-pack /usr/bin/git-upload-pack

接下来,可以查看git的版本是否为我们安装完成的版本:

# git version

git version 2.26.1

2、搭建git服务器(参考官方教程)

git服务器,简单而言就是一个提供ssh访问的服务器而已。我们需要做的只有一台支持ssh访问的服务器,以及合适的权限管理而已。如果服务器作为私有使用,配置就变得更加简单了:只需要新建一个git账户(防止直接使用root账户导致的安全问题)、配置好服务器上的公钥并在服务器上创建裸仓库即可。

首先,我们新建一个

git组,并在组内新建一个git账户: 

groupadd git

adduser git -g git

现在git用户的家目录为

/home/git。

我们切换到git用户 

su git

cd /home/git