Ubuntu环境下GitBlit安装部署与版本库迁移 - 教程

news/2026/1/17 8:31:34/文章来源:https://www.cnblogs.com/gccbuaa/p/19495041

GitBlit 是一款基于 Java 的轻量级 Git 仓库管理工具,无需数据库支持,配置简单,非常适合中小团队使用。

一、环境检查与准备

确认 JDK 1.8 环境

GitBlit 1.9.1 版本需要 JDK 1.8 运行环境,首先验证 Java 环境:

检查Java版本

java -version
预期输出:
java version "1.8.0_xxx" Java(TM) SE Runtime Environment (build 1.8.0_xxx-xxx) Java HotSpot(TM) 64-Bit Server VM (build 25.xxx-bxx, mixed mode)
如果提示 command not found,请先安装并配置 JDK 1.8 环境变量。
在这里插入图片描述

二、GitBlit 安装部署

1. 下载与解压

下载地址:https://github.com/gitblit/gitblit/releases
推荐版本:gitblit-1.9.1.tar.gz(适配 JDK 1.8的稳定版)
在这里插入图片描述

2. 创建安装目录

  • sudo mkdir -p /data/gitblit
  • cd /data/gitblit

3. 解压安装包

4. 端口检查与配置

4.1 检查 8080 端口是否被占用:
4.2 防火墙配置:
  • 查看防火墙状态:sudo ufw status
  • 如果8080端口未放行,执行以下命令
# 放行8080 TCP端口(永久生效)
sudo ufw allow 8080/tcp
# 重新加载防火墙规则(确保生效)
sudo ufw reload

在这里插入图片描述

5. 配置文件修改

进入 GitBlit 目录,编辑配置文件(位置在文件最后,可以键盘按大写G到文件末尾,再编辑):
cd /data/gitblit/gitblit-1.9.1
vi defaults.properties
关键配置项修改:

# http端口号
server.httpPort = 8080
# 修改为0代表禁用https
server.httpsPort = 0

在这里插入图片描述

三、启动Gitblit

1. 直接启动

cd /data/gitblit/gitblit-1.9.1
sh gitblit.sh
在这里插入图片描述

2. 后台启动

2.1 先查看进程:ps -ef | grep gitblit

在这里插入图片描述

2.2 先停止当前前台Gitblit进程,避免端口冲突
# 终止当前Gitblit相关进程(两个进程都要停)
kill -9 125910 125911
# 验证进程已停止(无输出则成功)
ps -ef | grep gitblit | grep -v grep
2.3 后台启动Gitblit

/data/gitblit/gitblit-1.9.1 目录下执行:

# 后台启动,日志输出到gitblit.log(方便排查问题)
nohup sh gitblit.sh > gitblit.log 2>&1 &

执行后会输出一个后台进程 ID(如 [1] 126200),说明已提交后台运行。

四、验证后台Gitblit是否启动成功

# 查看Gitblit后台进程(能看到java进程则成功)
ps -ef | grep gitblit | grep -v grep
# 查看启动日志(无报错则正常)
tail -f gitblit.log

正常输出示例(后台进程):

root      126200       1  0 15:30 ?        00:00:00 sh gitblit.sh
root      126201  126200 10 15:30 ?        00:00:03 java -cp gitblit.jar:ext/* com.gitblit.GitBlitServer --baseFold

在没有外网的情况下,你可以通过本地命令本地访问两种方式,确认 Gitblit 是否成功启动

1. 通过进程状态验证(最直接)
# 查看Gitblit父子进程是否存在
ps -ef | grep gitblit | grep -v grep
1.1 正常状态判断
  • 能看到 两个进程sh gitblit.shjava -cp ...),说明进程未退出;
  • 多次执行命令(间隔 10 秒),若进程 ID 不变,说明服务在持续运行(没有崩溃重启)。
1.2 异常状态
2. 通过本地端口监听验证(确认服务在监听端口)

Gitblit 默认监听 8080 端口,用 ssnetstat 检查端口是否被占用(被占用说明服务在监听)

# 方法1:用ss命令(Ubuntu默认自带)
sudo ss -tuln | grep 8080
# 方法2:用netstat命令(若ss不存在,先安装:sudo apt install net-tools)
sudo netstat -tuln | grep 8080
2.1 正常输出示例

LISTEN 0 50 0.0.0.0:8080 0.0.0.0:*

  • LISTEN 表示端口处于监听状态,说明 Gitblit 已启动并对外提供服务;
  • 0.0.0.0:8080 表示监听所有网卡的 8080 端口。
2.2 异常输出
3. 本地访问测试(最准确,模拟浏览器访问)

在服务器本地用 curlwget 命令,访问 Gitblit 的本地地址,验证服务是否正常响应

# 方法1:用curl测试(查看是否返回登录页HTML内容)
curl http://localhost:8080
# 方法2:用wget测试(下载登录页,看是否成功)
wget -O gitblit_index.html http://localhost:8080
执行后,文件会保存在你当前所在的 /data/gitblit/gitblit-1.9.1 目录下。
3.1 正常响应
  • 输出大量 HTML 代码(包含 GitblitLogin 等关键词),说明服务正常,能返回登录页面;
  • 这等同于在浏览器访问成功。
3.2 异常响应
4. 查看本地日志(排查启动问题)

如果以上步骤验证失败,查看 Gitblit 的本地日志,定位具体错误

# 查看日志最后20行(后台启动的日志在gitblit.log)
tail -n 20 gitblit.log
# 若前台启动,直接查看控制台输出;若日志文件不存在,检查启动命令是否指定日志路径
常见日志关键词:
  • Server started → 启动成功
  • Address already in use → 端口被占用
  • ClassNotFoundException → 依赖缺失

如果不需要恢复Git版本库,按照以上步骤可以成功安装Gitblit

五、恢复历史已有的 Git 版本库

1. 先找到安装的Gitblit准确的仓库目录

查看默认配置文件 defaults.properties
# 进入Gitblit的data目录(你的路径)
cd /data/gitblit/gitblit-1.9.1/data
# 查找默认仓库目录配置
grep "git.repositoriesFolder" defaults.properties
输出示例
git.repositoriesFolder = ${gitblit.dataFolder}/git
  • ${gitblit.dataFolder} 就是你当前的 data 目录(/data/gitblit/gitblit-1.9.1/data);

  • 因此,最终的仓库目录是:

    /data/gitblit/gitblit-1.9.1/data/git

    在这里插入图片描述

2. 已有 Git 历史版本库(.git目录或完整仓库目录)需要放到现有 Gitblit 指定的仓库目录中

2.1 复制裸库到该目录

cp -r /data/backup/GitRepository/activiti7-demo.git /data/gitblit/gitblit-1.9.1/data/git/

2.2 修改文件夹权限
chown -R root:root /data/gitblit/gitblit-1.9.1/data/git/
chmod -R 755 /data/gitblit/gitblit-1.9.1/data/git/

在这里插入图片描述

2.3 重启Gitblit让其识别仓库即可
# 停止现有进程
ps -ef | grep gitblit | grep -v grep | awk '{print $2}' | xargs kill -9
# 后台重启
nohup sh gitblit.sh > gitblit.log 2>&1 &

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/1172664.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

通义千问2.5-7B效果展示:8K长文本生成实测

通义千问2.5-7B效果展示:8K长文本生成实测 1. 背景与测试目标 随着大语言模型在自然语言理解与生成任务中的广泛应用,长文本生成能力成为衡量模型实用性的重要指标之一。尤其在技术文档撰写、报告生成、小说创作等场景中,对超过8K tokens的…

AI智能文档扫描仪用户反馈实录:实际使用体验与改进建议

AI智能文档扫描仪用户反馈实录:实际使用体验与改进建议 1. 引言:从办公痛点出发的轻量级解决方案 在日常办公场景中,快速将纸质文档转化为清晰、规整的电子文件是一项高频需求。传统扫描仪设备受限于体积和便携性,而手机拍照又面…

解决esptool检测不到COM端口的底层注册表检查法

深入Windows底层:用注册表排查法解决 esptool 找不到 COM 端口的顽疾在做ESP32或ESP8266开发时,你有没有遇到过这种场景?线插好了,板子也供电了,esptool.py --port COMx flash_id一执行——结果报错:No ser…

2026年靠谱的紫外激光打标机生产厂家怎么选? - 品牌宣传支持者

在2026年选择紫外激光打标机生产厂家时,应重点考量企业的技术积累、生产工艺成熟度、售后服务体系以及市场口碑。经过对行业20余家主流厂商的实地调研与技术参数对比,我们发现四川添彩激光智能装备有限公司在紫外激光…

HY-MT1.5-1.8B如何避免乱码?格式化翻译功能实操指南

HY-MT1.5-1.8B如何避免乱码?格式化翻译功能实操指南 1. 模型介绍与部署架构 1.1 HY-MT1.5-1.8B 模型概述 混元翻译模型 1.5 版本(Hunyuan-MT 1.5)包含两个核心模型:HY-MT1.5-1.8B 和 HY-MT1.5-7B。其中,HY-MT1.5-1.…

ESP32固件库下载小白指南:玩转无线通信模块

从零开始玩转 ESP32:手把手带你搞定固件库下载与开发环境搭建 你是不是也曾在搜索“esp32固件库下载”时,一头雾水?点进去不是命令行就是英文文档,连“固件库”到底是个啥文件都没搞明白,更别说成功烧录了。别急——这…

Elasticsearch查询 = Mapping?

不,Elasticsearch 查询 ≠ Mapping。 这是两个 根本不同但紧密关联 的核心概念: Mapping(映射) 定义了 数据如何存储与索引(写时结构)Query(查询) 定义了 如何检索已存储的数据&…

Elasticsearch查询 = 数据结构?

不,Elasticsearch 查询 ≠ 数据结构。 这是两个 根本不同但深度耦合 的概念: 数据结构(Data Structure) 指的是 文档在 ES 中的存储与索引方式(由 Mapping 定义)查询(Query) 指的是 …

失业期PHP程序员极致聚焦思维实现跃迁的能量超乎你想象的庖丁解牛

“失业期 PHP 程序员极致聚焦思维实现跃迁的能量超乎你想象” —— 这不是鸡汤,而是 神经可塑性 认知带宽管理 工程化行动 的必然结果。当外部不确定性达到顶峰时,聚焦是唯一可控的杠杆,它能将焦虑转化为生产力,将时间转化为资产…

通义千问2.5-7B数据分析助手:Pandas AI集成部署案例

通义千问2.5-7B数据分析助手:Pandas AI集成部署案例 1. 引言 1.1 业务场景描述 在现代数据科学工作流中,数据分析的门槛依然较高,尤其对于非编程背景的业务人员而言,编写 Python 脚本操作 Pandas 数据框常常成为瓶颈。尽管 Pan…

Qwen3-VL-2B部署指南:从零开始构建视觉对话机器人

Qwen3-VL-2B部署指南:从零开始构建视觉对话机器人 1. 引言 1.1 学习目标 本文将详细介绍如何基于 Qwen/Qwen3-VL-2B-Instruct 模型,从零开始部署一个具备视觉理解能力的多模态对话机器人。通过本教程,您将掌握: 如何快速启动并…

IQuest-Coder-V1-Loop变体解析:轻量化部署的性能表现

IQuest-Coder-V1-Loop变体解析:轻量化部署的性能表现 1. 背景与技术演进 随着大语言模型在代码生成领域的广泛应用,模型不仅需要具备强大的推理能力,还需兼顾实际部署中的资源效率。IQuest-Coder-V1系列作为面向软件工程和竞技编程的新一代…

失业期PHP程序员感恩今天还活着的庖丁解牛

“失业期 PHP 程序员感恩今天还活着” —— 这不是消极的庆幸,而是 一种高阶的认知重置策略。它通过 锚定生命基本事实,切断灾难化思维链条,为理性行动重建心理空间。一、为什么“感恩活着”是认知急救? ▶ 1. 神经科学机制 失业期…

Qwen3-4B-Instruct-2507实战案例:智能客服系统搭建完整指南

Qwen3-4B-Instruct-2507实战案例:智能客服系统搭建完整指南 1. 引言 随着大语言模型在企业服务场景中的广泛应用,构建高效、响应精准的智能客服系统已成为提升用户体验的关键路径。Qwen3-4B-Instruct-2507作为通义千问系列中面向指令理解与任务执行优化…

IndexTTS-2部署实战:零样本音色克隆全流程步骤详解

IndexTTS-2部署实战:零样本音色克隆全流程步骤详解 1. 引言 1.1 业务场景描述 在语音合成(TTS)领域,个性化音色生成正成为智能客服、有声读物、虚拟主播等应用的核心需求。传统TTS系统往往依赖大量标注数据和固定发音人模型&am…

开源模型新标杆:Qwen3-4B-Instruct多行业落地指南

开源模型新标杆:Qwen3-4B-Instruct多行业落地指南 近年来,随着大模型技术的快速演进,轻量级高性能语言模型在实际业务场景中的价值日益凸显。尤其在边缘部署、成本敏感型应用和实时响应系统中,具备强大通用能力且参数规模适中的模…

Elasticsearch索引 = Mapping?

不,Elasticsearch 索引(Index) ≠ Mapping。 这是两个紧密关联但本质不同的概念: 索引(Index) 是 数据的容器(类似数据库中的“表”)Mapping(映射) 是 索引的…

Obsidian手写笔记插件完整教程:从零开始掌握数字书写艺术

Obsidian手写笔记插件完整教程:从零开始掌握数字书写艺术 【免费下载链接】obsidian-handwritten-notes Obsidian Handwritten Notes Plugin 项目地址: https://gitcode.com/gh_mirrors/ob/obsidian-handwritten-notes 在数字笔记盛行的时代,Obsi…

如何高效部署轻量化多模态模型?AutoGLM-Phone-9B详细安装与调用指南

如何高效部署轻量化多模态模型?AutoGLM-Phone-9B详细安装与调用指南 1. AutoGLM-Phone-9B 模型概述 1.1 轻量化多模态模型的技术背景 随着移动设备智能化需求的不断增长,大语言模型在终端侧的应用逐渐成为研究热点。然而,传统大模型通常参…

Image-to-Video高级技巧:如何编写更有效的提示词?

Image-to-Video高级技巧:如何编写更有效的提示词? 1. 简介与背景 随着多模态生成技术的快速发展,Image-to-Video(I2V)模型正在成为内容创作的重要工具。基于 I2VGen-XL 架构的图像转视频系统能够将静态图片转化为具有…