1. 为什么需要私有Git服务器最近几年越来越多的开发者开始意识到代码安全的重要性。我刚开始工作时也习惯把代码托管在公共平台直到有一次项目差点因为第三方服务故障导致延期。那次经历让我下定决心搭建自己的私有Git服务器。私有Git服务器最大的优势就是完全自主可控。你不用再担心服务商突然修改政策或者因为网络问题无法提交代码。对于小型团队来说私有服务器还能节省不少成本。GitBlit就是一个非常轻量级的选择它基于Java开发资源占用低配置简单特别适合个人开发者或5人以下的小团队。我选择GitBlit的另一个原因是它的零依赖特性。不像GitLab需要搭配PostgreSQL和RedisGitBlit只需要Java环境就能运行。这意味着你可以在配置很低的服务器上部署它甚至是一台闲置的旧电脑。2. 环境准备2.1 安装JDKGitBlit需要Java 8或更高版本才能运行。我推荐使用OpenJDK它完全免费且性能优秀。在Ubuntu服务器上安装非常简单sudo apt update sudo apt install openjdk-11-jdk -y安装完成后验证版本java -version如果看到类似OpenJDK 11.0.15的输出说明安装成功。Windows用户可以从Oracle官网下载安装包记得设置JAVA_HOME环境变量。2.2 创建专用用户为了安全起见我建议创建一个专用用户来运行GitBlitsudo adduser --system --shell /bin/bash --group gitblit这样即使服务被入侵攻击者也只能获得有限的权限。记得给仓库目录设置正确的权限sudo mkdir /opt/gitblit-data sudo chown gitblit:gitblit /opt/gitblit-data3. 安装GitBlit3.1 下载和解压最新版的GitBlit可以从官网直接下载。我习惯使用wget命令wget https://github.com/gitblit/gitblit/releases/download/1.9.3/gitblit-1.9.3.tar.gz tar -xzf gitblit-1.9.3.tar.gz sudo mv gitblit-1.9.3 /opt/gitblit解压后的目录结构很清晰data/配置文件所在位置gitblit.jar主程序文件web.xmlWeb界面配置3.2 关键配置修改进入data目录编辑gitblit.properties文件。这几个参数必须修改# 仓库存储路径 git.repositoriesFolder /opt/gitblit-data # 服务监听端口 server.httpPort 8080 # 绑定IP0.0.0.0表示监听所有网卡 server.httpBindInterface 0.0.0.0如果你需要HTTPS支持还需要配置SSL证书。我推荐使用Lets Encrypt的免费证书。3.3 创建启动脚本创建一个systemd服务文件/etc/systemd/system/gitblit.service[Unit] DescriptionGitBlit Service Afternetwork.target [Service] Usergitblit WorkingDirectory/opt/gitblit ExecStart/usr/bin/java -jar /opt/gitblit/gitblit.jar --baseFolder /opt/gitblit/data Restartalways [Install] WantedBymulti-user.target然后启动服务sudo systemctl daemon-reload sudo systemctl start gitblit sudo systemctl enable gitblit4. 使用GitBlit4.1 访问Web界面服务启动后在浏览器访问http://你的服务器IP:8080。默认管理员账号是admin密码也是admin。首次登录一定要修改密码Web界面非常直观左侧是导航菜单中间是仓库列表。我特别喜欢它的权限管理系统可以精确控制每个用户对每个仓库的访问权限。4.2 创建第一个仓库点击新建仓库按钮填写仓库名称和描述。有几个选项需要注意权限模板可以选择公开、私有或自定义初始化README建议勾选会创建一个初始文件.gitignore可以选择项目类型自动生成忽略规则创建完成后你会看到仓库的HTTP和SSH地址。这些地址可以用来克隆仓库。4.3 配置SSH访问为了让提交代码更方便我推荐配置SSH密钥认证。首先在本地生成密钥对ssh-keygen -t ed25519 -C your_emailexample.com然后将公钥通常是~/.ssh/id_ed25519.pub的内容添加到GitBlit的用户设置中。这样以后推送代码就不需要每次都输入密码了。5. 本地开发环境配置5.1 安装Git客户端无论使用哪种操作系统都需要先安装Git。在Ubuntu上sudo apt install gitWindows用户可以从Git官网下载安装包。安装时记得勾选将Git添加到PATH环境变量选项。5.2 克隆仓库拿到仓库地址后在本地执行git clone http://你的服务器IP:8080/r/你的仓库名.git如果配置了SSH密钥也可以使用SSH地址git clone git你的服务器IP:你的仓库名.git5.3 日常开发流程我的日常工作流程通常是这样的拉取最新代码git pull创建新分支git checkout -b feature/new-feature开发完成后提交git add . git commit -m 描述推送到服务器git push origin feature/new-feature在Web界面创建合并请求GitBlit的合并请求功能虽然不如GitLab强大但对小团队来说完全够用。你可以指定评审人讨论代码变更最后合并到主分支。6. 高级配置与优化6.1 邮件通知要让GitBlit发送提交通知邮件需要配置SMTP服务器。编辑gitblit.propertiesmail.server smtp.example.com mail.port 587 mail.username youremail.com mail.password yourpassword mail.fromAddress gitblitexample.com配置完成后用户可以在仓库设置中订阅通知。6.2 定期备份我设置了一个简单的cron任务来每天备份仓库数据0 3 * * * tar -czf /backup/gitblit-$(date \%Y\%m\%d).tar.gz /opt/gitblit-data这个命令会在每天凌晨3点创建压缩备份。记得定期将备份文件复制到其他位置。6.3 性能调优如果你的服务器配置较低可以调整JVM参数# 在gitblit.properties中 server.jvmOptions -Xmx512m -Xms128m这会将最大堆内存限制为512MB。对于有几十个仓库的中型团队1GB内存就足够了。7. 常见问题排查7.1 服务无法启动首先检查日志文件/opt/gitblit/logs/gitblit.log。最常见的问题是Java版本不兼容端口被占用配置文件语法错误7.2 无法推送代码如果遇到权限问题检查用户是否有写入权限仓库是否设置为只读SSH密钥是否正确配置7.3 Web界面加载慢这通常是因为服务器资源不足。可以尝试增加JVM内存启用Gzip压缩使用Nginx作为反向代理我在实际使用中发现GitBlit虽然功能不如GitLab全面但对于小型团队来说它的轻量级和简单易用反而是最大的优势。特别是当团队规模在5人以下时GitBlit几乎不需要额外维护设置好后就能稳定运行多年。