Git 服务器搭建

上一章节中我们远程仓库使用了 Github,Github 公开的项目是免费的,2019 年开始 Github 私有存储库也可以无限制使用。

当然我们也可以自己搭建一台 Git 服务器作为私有仓库使用。

使用裸存储库(Bare Repository)

1、安装Git

Ubuntu 服务器上安装 Git:

sudo apt install git

如果你使用的系统是 Centos/RedHat 安装命令为:

yum -y install git-core

Fedora 安装命令:

# yum install git (Fedora 21 及之前的版本)
# dnf install git (Fedora 22 及更高新版本)

接下来我们 创建一个 git 用户组和用户,用来运行git服务:

$ groupadd git
$ useradd git -g git

2、创建裸存储库

登录到 Git 用户,然后在其 home 目录下创建一个裸存储库。

$ sudo su - git
首先我们选定一个目录作为 Git 仓库,假定是 /home/gitrepo/runoob.git,在 /home/gitrepo 目录下输入命令:
$ cd /home
$ mkdir gitrepo
$ chown git:git gitrepo/
$ cd gitrepo

$ git init --bare runoob.git

以上命令Git创建一个空仓库,服务器上的 Git 仓库通常都以 .git 结尾。然后,把仓库所属用户改为 git(如果是其他用户操作,比如 root):

$ chown -R git:git runoob.git

3、创建证书登录

将你的公钥添加到 ~/.ssh/authorized_keys 中,允许远程访问。

收集所有需要登录的用户的公钥,公钥位于 id_rsa.pub 文件中,把我们的公钥导入到 /home/git/.ssh/authorized_keys 文件里,一行一个。

如果没有该文件创建它:

$ cd /home/git/
$ mkdir .ssh
$ chmod 755 .ssh
$ touch .ssh/authorized_keys
$ chmod 644 .ssh/authorized_keys
# 在文件中添加你的 SSH 公钥

4、克隆仓库

$ git clone [email protected]:/home/gitrepo/runoob.git
Cloning into 'runoob'...
warning: You appear to have cloned an empty repository.
Checking connectivity... done.

192.168.45.4 为 Git 所在服务器 ip ,你需要将其修改为你自己的 Git 服务 ip。

这样我们的 Git 服务器安装就完成。


使用 GitLab

GitLab 是一个功能强大的 Git 服务管理工具,适合中大型团队,提供了丰富的用户管理、CI/CD、代码审查等功能。

1、安装 GitLab

根据 GitLab 官方文档 安装 GitLab。

例如,在 Ubuntu 上:

# sudo apt-get update
# sudo apt-get install -y curl openssh-server ca-certificates tzdata perl
# curl https://packages.gitlab.com/install/repositories/gitlab/gitlab-ee/script.deb.sh | sudo bash
# sudo EXTERNAL_URL="http://yourdomain" apt-get install gitlab-ee

EXTERNAL_URL="http://yourdomain" 要设置自己的域名,或者公网 IP,比如:

sudo EXTERNAL_URL=101.132.XX.XX yum install -y gitlab-ee

2、配置 GitLab

安装完成后,打开浏览器访问 http://yourdomain,设置管理员账户。

当出现类似如下回显信息,表示 GitLab 已经安装成功。

3、创建项目

登录 GitLab,创建一个新的项目,用户名为 root

获取登录密码:

sudo cat /etc/gitlab/initial_root_password

结果如下所示:

首次登录使用用户名 root:

4、生成密钥对文件并获取公钥

安装 Git 工具(已安装跳过):

sudo apt-get install git

生成密钥对文件 id_rsa:

ssh-keygen

生成密钥对的过程中,系统会提示输入密钥对存放目录(默认为当前用户目录下的 .ssh/id_rsa,例如 /home/test/.ssh/id_rsa)和密钥对密码,您可以手动输入,也可以按 Enter 保持默认。

生成后,显示信息如下:

查看并复制公钥文件 id_rsa.pub 中的内容:

cat .ssh/id_rsa.pub

显示类似如下的信息:

ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDQVwWjF3KXmI549jDI0fuCgl+syJjjn55iMUDRRiCd/B+9TwUda3l9WXH5i7RU53QGRCsDVFZxixLOlmXr9E3VSqkf8xXBnHs/5E2z5PIOCN0nxfB9xeA1db/QxPwK4gkHisep+eNHRn9x+DpCYDoSoYQN0nBg+H3uqfOqL42mJ+tqSfkyqbhjBf1kjtDTlBfVCWtI0siu7owm+c65+8KNyPlj5/0AyJ4Aqk1OX2jv+YE4nTipucn7rHwWuowasPU86l+uBsLNwOSb+H7loJvQyhEINX2FS1KnpRU+ld20t07n+N3ErfX5xBAGfxXpoN9BKKSP+RT7rvTeXTVE**** [email protected]****

5、创建项目

在 GitLab 的主页中,点击 Create a project 选项:

点击 Create blank project,设置 Project name 和 Project URL,然后点击 Create project:

本文以 mywork 项目为例进行说明。

6、添加 SSH key

在当前 project 页面,点击 Add SSH key:

将公钥文件 id_rsa.pub 中的内容粘贴到 Key 所在的文本框中:

点击 Add key,SSH Key 添加完成后,如下图所示:

复制 Clone 链接,该链接在进行克隆操作时需要使用:

使用GitLab

1、配置使用 Git 仓库的人员信息,包含用户名和邮箱。

git config --global user.name "testname" 
 
git config --global user.email "[email protected]" 

2、克隆已创建的项目到本地。

git clone [email protected]:root/mywork.git

3、上传文件到 GitLab 服务器:

进入到项目目录:

cd mywork/ 

创建需要上传到 GitLab 中的目标文件:

echo "test" > /home/test/test.sh

将目标文件或者目录复制到项目目录下:

cp /home/test/test.sh ./ 

将 test.sh 文件加入到索引中:

git add test.sh

将 test.sh 提交到本地仓库:

git commit -m "test.sh"

将文件同步到 GitLab 服务器上:

git push -u origin main

在网页中查看上传的 test.sh 文件已经同步到 GitLab 服务器中: