在服务器上部署自己的 Git 服务,并为团队分配账号和仓库
Git 是开发人员广泛使用的版本控制工具,GitHub、GitLab 和 Bitbucket 等托管服务为我们提供了强大的功能。然而,在某些情况下,出于隐私、数据安全或自定义需求的考虑,您可能希望在自己的服务器上部署 Git 服务。本篇博客将介绍如何在服务器上部署 Git 服务,并为团队分配不同的账号和仓库。
部署环境准备
在开始之前,您需要确保以下条件:
- 一台 Linux 服务器 (如 Ubuntu 20.04)。
- SSH 服务已开启。
- 基础的 Linux 命令行操作经验。
- 一个具有 root 或 sudo 权限的用户。
第一步:安装 Git
在大多数 Linux 发行版中,Git 可以通过包管理工具直接安装。使用以下命令进行安装:
sudo apt update
sudo apt install git
安装完成后,可以通过以下命令检查 Git 是否安装成功:
git --version
它会返回类似 git version 2.25.1
这样的版本号,表明 Git 已成功安装。
第二步:创建 Git 用户
为了更好地管理和隔离 Git 服务,我们建议为 Git 服务创建一个独立的用户。例如,创建一个名为 git
的用户:
sudo adduser git
在创建用户时,系统会提示输入该用户的密码和一些基本信息,您可以根据需要进行填写。
第三步:配置 SSH 访问
Git 仓库的访问通常通过 SSH 来进行,接下来我们需要为每个团队成员配置 SSH 公钥认证。
1. 收集 SSH 公钥
每个团队成员都需要生成并提供自己的 SSH 公钥。可以通过以下命令生成 SSH 密钥对:
ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
生成后,公钥通常位于 ~/.ssh/id_rsa.pub
,团队成员应将此文件的内容发送给您。
2. 添加 SSH 公钥到 Git 用户
在 git
用户的家目录下,创建一个 .ssh
目录并添加每个用户的 SSH 公钥到 authorized_keys
文件中。
sudo -u git mkdir /home/git/.ssh
sudo -u git touch /home/git/.ssh/authorized_keys
sudo -u git chmod 700 /home/git/.ssh
sudo -u git chmod 600 /home/git/.ssh/authorized_keys
将每个成员的公钥粘贴到 authorized_keys
文件中,每个公钥一行。例如:
echo "ssh-rsa AAAAB3Nza... user1" >> /home/git/.ssh/authorized_keys
echo "ssh-rsa AAAAB3Nza... user2" >> /home/git/.ssh/authorized_keys
这样,所有的团队成员都可以通过 SSH 登录 Git 用户。
第四步:创建 Git 仓库
每个项目都将作为一个裸仓库(bare repository)存在,这意味着它没有工作目录,只用于远程推送和拉取代码。
1. 创建仓库目录
首先,为 Git 仓库创建一个存储目录,例如 /home/git/repositories
:
sudo -u git mkdir /home/git/repositories
2. 创建裸仓库
假设您要为项目 project1
创建一个仓库,您可以使用以下命令:
sudo -u git git init --bare /home/git/repositories/project1.git
这将创建一个裸仓库,其他开发人员可以通过该仓库进行推送和拉取操作。
3. 设置仓库权限
确保仓库目录属于 git
用户,并且权限正确:
sudo chown -R git:git /home/git/repositories/project1.git
第五步:为团队成员分配仓库权限
通过 SSH 配置,我们已经为每个团队成员提供了登录 Git 用户的权限。接下来,通过将不同的仓库分配给特定成员,可以实现权限控制。
1. 使用 Gitolite 进行权限管理
为了更方便地管理多个用户和仓库的权限,我们可以使用 Gitolite,一个强大的 Git 服务器管理工具。安装 Gitolite 的步骤如下:
sudo apt install gitolite3
安装后,配置 Gitolite 管理权限。首先,将管理员(例如,您自己的 SSH 公钥)放到服务器上,并初始化 Gitolite:
sudo -u git cp /path/to/your_admin_ssh_key.pub /home/git/your_admin_ssh_key.pub
sudo -u git gl-setup /home/git/your_admin_ssh_key.pub
Gitolite 安装完成后,您可以通过克隆 Gitolite 的管理仓库来管理权限:
git clone git@your_server:gitolite-admin.git
2. 修改权限
Gitolite 的权限管理非常灵活。克隆管理仓库后,编辑 conf/gitolite.conf
文件,添加您的仓库和用户:
repo project1
RW+ = admin
RW = user1
R = user2
这意味着 admin
拥有读写和强制推送权限,user1
拥有读写权限,user2
只能读取代码。
编辑完成后,提交并推送更改:
git add .
git commit -m "Configure access for project1"
git push
此时,Gitolite 将自动应用权限更改,团队成员可以按照分配的权限访问对应的仓库。
第六步:团队成员克隆和使用仓库
团队成员可以通过 SSH 克隆仓库。例如,user1
可以使用以下命令克隆 project1
:
git clone git@your_server:/home/git/repositories/project1.git
从现在起,团队成员可以像使用 GitHub 或 GitLab 那样,使用 Git 进行代码提交、推送和拉取。
总结
通过以上步骤,您已经成功在服务器上部署了自己的 Git 服务,并通过 SSH 和 Gitolite 实现了多用户和仓库的管理。相比于公有的 Git 托管服务,自己搭建的 Git 服务器更加灵活,且能更好地控制数据隐私和权限。
未来,您可以根据需求进一步扩展功能,例如配置 HTTP/HTTPS 访问、使用 Gogs 或 GitLab 这样的自托管工具提供 Web 界面,甚至结合 CI/CD 工具实现自动化部署流程
版权声明:本文为原创文章,版权归 全栈开发技术博客 所有。
本文链接:https://www.lvtao.net/system/git-local-server.html
转载时须注明出处及本声明