搭建 Git 服务器是团队协作和个人代码管理的重要环节,通过自建服务器可以更好地控制代码权限、数据安全,并支持自定义工作流程,本文将详细介绍三种常见的 Git 服务器搭建方法,包括基础 SSH 方案、轻量级 Gitea 方案以及企业级 GitLab 方案,并对比其适用场景与操作步骤,最后补充注意事项及相关问答。
环境准备
在搭建 Git 服务器前,需确保服务器满足基本要求:操作系统推荐 Ubuntu 20.04+ 或 CentOS 7+,建议分配至少 2GB 内存、20GB 硬盘空间(根据仓库大小调整),并已安装 Git 和 SSH 服务,可通过以下命令安装基础依赖:
- Ubuntu/Debian:
sudo apt update && sudo apt install git openssh-server -y
- CentOS/RHEL:
sudo yum install git openssh-server -y
安装后启动 SSH 服务并设置为开机自启:sudo systemctl start sshd && sudo systemctl enable sshd
。
方案一:基础 SSH + Git 服务器(适合个人/小团队)
操作步骤
-
创建 Git 用户
为安全起见,建议创建专用用户管理 Git 仓库:sudo adduser git # 根据提示设置密码 sudo su - git # 切换至 git 用户
-
初始化裸仓库
裸仓库(bare repository)不包含工作目录,仅用于存储版本历史,适合作为服务器仓库,例如创建一个名为project.git
的仓库:mkdir -p ~/repos && cd ~/repos git init --bare project.git
-
配置 SSH 免密登录
在客户端生成 SSH 密钥(若无):ssh-keygen -t rsa -b 4096
,然后将公钥(~/.ssh/id_rsa.pub
)添加到服务器的~/.ssh/authorized_keys
文件中:# 在服务器 git 用户目录下操作 mkdir -p ~/.ssh && chmod 700 ~/.ssh cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys # 将客户端公钥内容粘贴至此 chmod 600 ~/.ssh/authorized_keys
-
克隆与推送测试
在客户端通过 SSH 克隆仓库:git clone git@服务器IP:/home/git/repos/project.git
,添加文件后推送:git push origin main
(首次推送需设置默认分支:git push -u origin main
)。
优缺点
- 优点:无需额外依赖,配置简单,资源占用低。
- 缺点:无 Web 界面,权限管理需手动配置,适合小规模团队。
方案二:Gitea 搭建轻量级 Git 服务器(适合中小团队)
Gitea 是一款开源的 Git 服务端工具,支持 Web 界面、权限管理、 issue 等功能,资源占用低于 GitLab,适合中小团队。
操作步骤(以 Ubuntu 为例)
-
安装 Gitea
官方提供二进制包,直接下载并安装:wget -O gitea https://dl.gitea.io/gitea/1.19.0/gitea-linux-amd64 chmod +x gitea sudo mv gitea /usr/local/bin/
-
创建系统用户与配置目录
sudo adduser --system --group --home /var/lib/gitea git sudo mkdir -p /var/lib/gitea/{custom,data,indexers,public,log} sudo chown -R git:git /var/lib/gitea sudo chmod -R 750 /var/lib/gitea
-
配置 Systemd 服务
创建服务文件/etc/systemd/system/gitea.service
参考官方文档,然后启动服务:sudo systemctl enable --now gitea
-
初始化 Web 配置
访问http://服务器IP:3000
,通过 Web 界面完成初始化设置,包括数据库(默认 SQLite)、管理员账户、域名等,配置完成后,可通过 Nginx 反向代理(端口 80/443)实现外部访问。
优缺点
- 优点:Web 界面友好,支持权限管理、Issues、Wiki,轻量级(内存占用约 500MB)。
- 缺点:高级功能(如 CI/CD)需插件支持,大规模团队性能可能不足。
方案三:GitLab 搭建企业级 Git 服务器(适合中大型团队)
GitLab 是功能全面的 DevOps 平台,集成了代码管理、CI/CD、项目管理等功能,适合企业级需求。
操作步骤(以 Ubuntu 为例)
-
安装依赖
sudo apt install curl openssh-server ca-certificates postfix -y
-
添加 GitLab 官方源
curl -sS https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.deb.sh | sudo bash
-
安装 GitLab
根据服务器域名安装(gitlab.example.com
):sudo EXTERNAL_URL="http://gitlab.example.com" apt install gitlab-ce
-
访问与配置
安装完成后访问http://gitlab.example.com
,首次登录需重置管理员密码(默认用户root
),可通过/etc/gitlab/gitlab.rb
修改配置(如端口、存储路径),修改后执行sudo gitlab-ctl reconfigure
生效。
优缺点
- 优点:功能全面(CI/CD、容器注册表、项目管理),权限精细控制,适合企业级 DevOps 流程。
- 缺点:资源占用高(建议 4 核 8G+),配置复杂,免费版功能有限。
方案对比
方案 | 适用场景 | 功能复杂度 | 维护成本 | Web 界面 | 资源占用 |
---|---|---|---|---|---|
SSH + Git | 个人/小团队 | 低 | 低 | 无 | 极低 |
Gitea | 中小团队 | 中 | 中 | 有 | 低 |
GitLab | 中大型企业/DevOps | 高 | 高 | 有 | 高 |
注意事项
- 权限管理:避免直接使用
root
用户操作 Git 仓库,通过 SSH 密钥或 Gitea/GitLab 的角色权限控制访问。 - 备份策略:定期备份仓库数据(如
rsync
备份/var/lib/gitea
或/var/opt/gitlab
)和数据库(Gitea 的 SQLite、GitLab 的 PostgreSQL)。 - 安全配置:禁用服务器密码登录(
/etc/ssh/sshd_config
中PasswordAuthentication no
),启用 HTTPS(通过 Nginx + Let’s Encrypt),定期更新 Git 及服务端工具。
相关问答 FAQs
问题 1:搭建 Git 服务器需要什么硬件配置?
答:硬件配置取决于方案和团队规模:
- SSH + Git 方案:最低 1 核 1GB 内存、10GB 硬盘,可满足个人基本需求。
- Gitea 方案:建议 2 核 2GB 内存、20GB 硬盘,支持 50 人以内团队日常使用。
- GitLab 方案:推荐 4 核 8GB 内存、100GB SSD 硬盘,若启用 CI/CD 需额外增加 CPU 和内存。
问题 2:如何确保 Git 服务器的安全性?
答:可通过以下措施提升安全性:
- 访问控制:使用 SSH 密钥认证(禁用密码登录),通过 Gitea/GitLab 设置分支权限(如禁止直接推送至主分支)。
- 网络安全:配置防火墙(如
ufw
)限制仅允许特定 IP 访问 Git 服务端口,使用 HTTPS 加密传输数据。 - 定期维护:及时更新 Git、Gitea、GitLab 及系统补丁,定期审计日志(如
/var/log/gitea/gitea.log
),监控异常访问行为。
原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/27839.html