自行搭建Git服务器

前言

虽然2019 年开始Github私有存储库也可以无限制使用,但我们还是可以自己搭建一个私有Git服务器,用于存储一些机密项目,以及企业的内部项目等,以方便进行项目的管理。当然也可以存储一些灰色产业的项目/不宜公开的项目

开始操作

安装Git

首先服务器上需要安装好Git:

Ubuntu/Debian

1
2
sudo apt update
sudo apt install git

CentOS

1
sudo yum install git

目前不建议用CentOS

Arch Linux

1
sudo pacman -S git

不会有人用Arch作为服务器系统吧

openSUSE

1
sudo zypper install git

其他发行版

可以参考以下链接:

https://git-scm.com/download/linux

创建Git专用用户

1
2
3
groupadd git # 添加一个名称为git的组
useradd -m -G git git # 创建一个名称为git的用户,在git组中
# -m指给该用户创建对应的用户目录,-G指加入某个用户组

如果执意使用root用户,那在克隆仓库的时候需要这样写。(不推荐)

1
2
3
# IP仅仅为示例,请更换为自己服务器的IP,如果绑定了域名可以换成域名
# 类似于SCP,结构为[用户名]@[服务器地址]:[文件路径]
git clone root@192.168.1.1:repo/Project

添加自己的公钥到服务器

先创建一个.ssh目录,配置好authorized_keys文件

1
2
3
4
5
cd /home/git/
mkdir .ssh
chmod 755 .ssh
touch .ssh/authorized_keys # touch命令为修改文件或目录的时间属性,如果不存在将会创建一个文件。这样子主要是为了方便创建一个空文件
chmod 644 .ssh/authorized_keys # SSH对文件的权限要求非常严格

将公钥写入到authorized_keys文件,一行一个

初始化Git仓库

我们将仓库放到/home/git(git用户)的目录

1
2
3
4
5
6
cd /home/git
mkdir repo
chown -R git:git repo # 将文件所有者修改为git用户
cd repo
git init --bare testrepo # 这里需要创建裸仓库(--bare参数),有关裸仓库,由于内容较多,这里不做解释
chown -R git:git testrepo # 如果不修改所有者,git用户将无权访问这个目录,导致仓库无法正常工作

克隆仓库

1
2
# 如果用户名不是git,请替换成自己的用户名
git clone git@192.168.1.1:repo/testrepo

其中,git为我们刚刚创建的Git专用用户,192.168.1.1为Git服务器的IP地址,请替换为自己的服务器IP地址,repo/testrepo为仓库地址(文件路径),这里用的是相对路径,因为仓库在git用户的目录上(/home/git/repo/testrepo)。

如果要使用绝对路径,请这样写

1
git clone git@192.168.1.1:/home/git/repo/testrepo

就这样,一个基于SSH的Git服务器就搭建完成了

总结

虽然我们经常使用GitHub作为仓库存储库,但这也不妨碍我们搭建自己的Git服务器。同时,在搭建的过程中,可以学习到一些可能自己不知道的概念。当然,将一些比较敏感的项目存到自己的服务器比存到第三方服务器的要安全。


自行搭建Git服务器
https://amekiri.cn/2023/09/08/git-server-build/
作者
Amekiri
发布于
2023年9月8日
许可协议