1. 项目背景与整体思路
先说结论:Gitblit 是我用下来最适合中小团队“内网自建 Git 服务”的方案之一,尤其是在 openEuler 这种国产 Linux 发行版上,部署流程清爽、依赖少、维护成本极低。你不需要像搭建 GitLab 那样准备 8G 内存和一堆 Ruby 组件,Gitblit 就是一个 Java 写的 WAR 包,内置 Jetty 容器,拷过去改两行配置就能跑起来。
我这边是在 openEuler 22.03 LTS SP4 上完成的部署,内核版本 5.10,架构 x86_64,选这个版本主要是因为它属于长期支持版本,安全更新和维护周期都拉得比较长,适合服务器环境。整个过程可以分为五个阶段:环境准备(虚拟机配置、yum 源)、Java 运行环境搭建、Gitblit 程序部署、仓库与用户体系初始化、日常维护与备份。每个阶段都有几个容易踩坑的细节,我会把实测过的操作和排查思路都写出来。
这个项目适合谁来参考?如果你是中小型研发团队的运维或后端开发,公司没有预算上付费版的 Git 托管服务,又想在内网有一套带 Web 界面、支持权限控制的 Git 服务器,那 Gitblit 几乎是最省事的选择。另外,如果你刚接触 openEuler,想找个练手项目把系统配置、yum 源、Java 环境、服务管理这些基础技能串起来,跟着这篇文章完整走一遍也会非常有收获。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 环境准备:虚拟机设置与 yum 源配置
2.1 虚拟机安装 openEuler 的关键设置
如果你打算用虚拟机跑 Gitblit,VirtualBox 或者 VMware 都可以,我用的 VirtualBox 7.0 系列,实测下来需要注意这么几个地方。
第一,操作系统类型要选 Linux 和 Red Hat(64-bit),不要选 Other Linux,否则 VirtualBox 不会加载对应的虚拟化优化参数。openEuler 的内核与 RHEL 系保持兼容,选 Red Hat 类型能让虚拟机在 CPU 指令集模拟和 I/O 控制器上有更好的兼容性。
第二,显存设置建议给到 32MB 以上,虽然服务器不需要桌面环境,但安装引导界面和终端界面都需要基本的显存支持,给太小会在图形化安装界面出现花屏或者界面卡死。
第三,磁盘分配方面,最小化安装 Gitblit 服务器,20GB 就够用,但如果后续还要装 Docker、跑 CI 流水线、存放大量 Git 仓库历史数据,建议直接给 40GB,省得后面扩容麻烦。分区方案就用系统默认的 LVM,swap 给 2GB 即可,Java 应用跟 swap 的配合反而需要留意,后面展开讲。
第四,网络模式建议用桥接而不是 NAT。因为 Gitblit 是要给团队其他人访问的,NAT 模式下宿主机外的设备访问不到虚机,就算做了端口转发,SSH 克隆仓库的地址写起来也非常别扭。桥接模式下 Gitblit 服务会直接暴露在局域网,团队成员用 IP 就能访问。这一点在装系统之前就定下来,后面配置会顺手很多。
安装完成进入系统后,建议第一时间做两件事:一是配置主机名,hostnamectl set-hostname git-server,二是关闭 SELinux 或者在部署完成后放行对应端口,后面细讲。
2.2 openEuler 的 yum 源配置技巧
openEuler 系统装好之后默认配置的是官方源,但国内网络环境下从官方源拉包经常会比较慢,甚至超时。所以第一步建议换成国内镜像源。
操作上很简单,备份默认源配置后,直接拉取镜像站的 repo 文件。
bash复制mv /etc/yum.repos.d/openEuler.repo /etc/yum.repos.d/openEuler.repo.bak
curl -o /etc/yum.repos.d/openEuler.repo https://mirrors.tuna.tsinghua.edu.cn/openeuler/openEuler-22.03-LTS-SP4/extras/x86_64/repodata/...
这里说明一下,清华源和阿里源都有 openEuler 的镜像仓库,我习惯用的是清华源。可以在 https://mirrors.tuna.tsinghua.edu.cn/openeuler/ 下找到对应版本和架构的仓库地址,里面有 openEuler.repo 文件可以直接下载。如果你不想用 curl 拉文件,也可以手动编辑 repo 文件,核心就是把 baseurl 指向镜像路径,把 gpgcheck 设为 0 或者保留 1 并导入对应的 GPG key。
配置完成后执行:
bash复制dnf clean all
dnf makecache
makecache 成功后,dnf install 的速度会有非常明显的提升。openEuler 22.03 默认用的包管理器是 dnf,兼容 yum 命令写法,两个命令在这版本上都可以用,但 dnf 是更推荐的底层实现。我这个阶段实测下来,配置好国内源之后装 Java 的速度从原来可能等两三分钟,变成几秒钟就能完成。
2.3 最小化安装还是带桌面?
很多朋友看搜索词里有“openEuler 安装桌面版”,会纠结要不要装个桌面再部署服务。我的建议:跑 Gitblit 这种纯服务端的场景,完全没有装桌面的必要,用最小化安装能减少一半以上的系统更新包和攻击面。Java 服务和 Web 管理界面都不依赖图形环境,日常维护靠 SSH 远程操作完全够用。
如果你装系统选了 Server 带桌面的安装方式也没关系,不影响 Gitblit 部署。只是后面要多留意桌面环境自带的 NetworkManager 和防火墙策略可能会对端口放行有干扰,排查问题的时候多个心眼。
3. Java 运行环境搭建
3.1 Gitblit 需要哪个版本的 Java
Gitblit 1.9.3 是目前的最新稳定版本,官方明确要求 Java 8 及以上,官方文档里推荐用 Java 8 运行。这里有个容易忽略的细节:Gitblit 的 service.sh 脚本(用于注册成系统服务)和 gitblit.sh 启动脚本对 Java 的查找逻辑稍有不同,但都需要 JAVA_HOME 环境变量能被正确找到。
在 openEuler 22.03 上,系统软件源里同时提供了 Java 1.8 和 Java 11 的包。对于 Gitblit 1.9.3,实测用 Java 1.8 是最稳妥的。Gitblit 1.9.x 的某些插件和 LDAP 认证模块在 Java 11 上会有兼容性问题,虽然核心功能能用,但不建议生产环境这么干。如果你后续计划升级到更新的 Gitblit 版本,再考虑使用 Java 11 或 17。
3.2 安装 Java 1.8
在 openEuler 上安装 Java 1.8 非常直接,包名就是 java-1.8.0-openjdk:
bash复制dnf install -y java-1.8.0-openjdk
装完后验证版本:
bash复制java -version
如果输出类似 openjdk version "1.8.0_xxx",就说明装好了。对于 Gitblit 这种服务端应用,只需要 JRE 即可,不需要安装 JDK 的编译工具链,所以 java-1.8.0-openjdk 就够了,java-1.8.0-openjdk-devel 可以不装。
这里有个小知识点:openEuler 的 OpenJDK 包安装后会把 java 二进制链接到 /usr/bin/java,同时设置了 /etc/profile.d/java.sh 里的 JAVA_HOME。但 /etc/profile.d 里的环境变量只在登录 shell 里生效,如果你用 systemd 服务方式启动 Gitblit,需要确保 systemd 单元文件里
