【ubuntu20】--- 搭建 gerrit 最新最详细

在这里插入图片描述

  • 在编程的艺术世界里,代码和灵感需要寻找到最佳的交融点,才能打造出令人为之惊叹的作品。
  • 而在这座秋知叶i博客的殿堂里,我们将共同追寻这种完美结合,为未来的世界留下属于我们的独特印记。

【ubuntu20】--- 搭建 gerrit 最新最详细

  • 一、环境准备
  • 二、安装Gerrit
    • 1. **下载Gerrit**
    • 2. **安装Gerrit**
  • 三、创建账号
  • 四、配置反向代理(以Nginx为例)
  • 五、启动Gerrit服务
  • 五、修改权限
  • 六、设置用户权限
  • 七、验证安装
  • 八、报错
    • 1、报错log
    • 2、解决方法


一、环境准备

  1. 更新系统

    • 打开终端,执行以下命令来更新Ubuntu系统及其软件包列表:
      sudo apt-get update
      sudo apt-get upgrade
      
  2. 安装Java环境

    • Gerrit需要Java环境来运行。可以通过添加PPA源并安装OpenJDK 8(或更高版本,但确保与Gerrit兼容)来实现:
      sudo add-apt-repository ppa:openjdk-r/ppa
      sudo apt-get update
      sudo apt-get install openjdk-8-jdk
      
    • 验证Java安装:
      java -version
      
  3. 安装Git

    • Gerrit建立在Git之上,因此需要安装Git:
      sudo apt-get install git
      
    • 验证Git安装:
      git --version
      
  4. 创建Gerrit用户

    • 为了安全和管理方便,建议为Gerrit创建一个专用用户:
      sudo adduser gerrit
      sudo usermod -a -G sudo gerrit  # 将gerrit用户添加到sudo组
      

二、安装Gerrit

  • 登录到gerrit用户:

1. 下载Gerrit

  • 访问Gerrit官网,下载最新版本的Gerrit安装包(例如gerrit-3.10.0.war)。在这里插入图片描述
  • 也可以使用wget命令从命令行下载:
wget https://gerrit-releases.storage.googleapis.com/gerrit-3.10.0.war
  • 将下载的文件移动到Gerrit用户的主目录下(或您选择的任何目录)。

2. 安装Gerrit

  • 在Gerrit用户的主目录下,执行以下命令来初始化Gerrit安装:
  • 创建安装文件夹
mkdir gerrit_file
  • 初始化Gerrit安装
  • 全部都默认回车下去
java -jar gerrit-3.10.0.war init -d ~/gerrit_file
  • 安装完成
Jul 15, 2024 5:34:27 PM org.apache.lucene.store.MMapDirectory lookupProvider
WARNING: You are running with Java 22 or later. To make full use of MMapDirectory, please update Apache Lucene.

============================================================================
Welcome to the Gerrit community

Find more information on the homepage: https://www.gerritcodereview.com
Discuss Gerrit on the mailing list: https://groups.google.com/g/repo-discuss
============================================================================
Initialized /home/gerrit/gerrit_file
Init complete, reindexing accounts,changes,groups,projects with: reindex --site-path /home/gerrit/gerrit_file --threads 1 --index accounts --index changes --index groups --index projectsReindexed 0 documents in accounts index in 0.0s (0.0/s)
Index accounts in version 14 is ready
Reindexing groups:      100% (2/2)
Reindexed 2 documents in groups index in 0.3s (7.6/s)
Index groups in version 11 is ready
Reindexing changes: Slicing projects: 100% (2/2), done
Reindexed 0 documents in changes index in 0.0s (0.0/s)
Index changes in version 86 is ready
Reindexing projects:    100% (2/2)
Reindexed 2 documents in projects index in 0.1s (18.2/s)
Index projects in version 9 is ready
Executing /home/gerrit/gerrit_file/bin/gerrit.sh start
Starting Gerrit Code Review: WARNING: Could not adjust Gerrit's process for the kernel's out-of-memory killer.
         This may be caused by /home/gerrit/gerrit_file/bin/gerrit.sh not being run as root.
         Consider changing the OOM score adjustment manually for Gerrit's PID=9572 with e.g.:
         echo '-1000' | sudo tee /proc/9572/oom_score_adj
OK
Waiting for server on qiuzhiyei:8080 ... OK
Please open the following URL in the browser: http://qiuzhiyei:8080/#/admin/projects/gerrit@qiuzhiyei:~$

  • 这里-d ~/gerrit_file指定了Gerrit的安装目录。您可以根据需要更改这个目录。
  • 安装过程中,会有一系列交互式配置选项。大多数选项可以使用默认值(通过按回车键选择),但请注意以下几点:
  • 认证方式:选择HTTP,因为Gerrit需要通过反向代理(如Nginx或Apache)来访问。
  • 插件安装:根据需要安装额外的插件,如download-commands插件可以生成项目的克隆地址。

三、创建账号

  • 将密钥文件存放在 gerrit_file/gerrit.password
  • 第一个默认是管理员账号
htpasswd -c gerrit_file/gerrit.password admin

四、配置反向代理(以Nginx为例)

  1. 安装Nginx
  • 切换回root用户或使用sudo命令来安装Nginx:
sudo apt-get install nginx
  1. 配置Nginx反向代理
  • 编辑Nginx的配置文件(通常位于/etc/nginx/sites-available/目录下),
vim /etc/nginx/sites-available/default
  • 添加一个server块来配置反向代理:
server {
    listen 80;  # 监听标准的 HTTP 端口
    server_name 172.28.17.230;  # 使用局域网内的 IP 地址

    auth_basic "Welcomme to Gerrit Code Review Site!";
    auth_basic_user_file /home/gerrit/gerrit_file/gerrit.password;

    location / {
        proxy_pass http://localhost:8080;  # Gerrit 服务的地址和端口
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}
                                                                                                    
  • 注意:确保Nginx配置文件的语法正确,并启用该server块(可能需要创建一个到sites-enabled目录的符号链接)。

  • 修改 nginx 默认的运行用户

vim /etc/nginx/nginx.conf
  • 搜索 user 将其修改为 gerrit
user gerrit;
  1. 重启Nginx
  • 应用配置更改并重启Nginx服务:
sudo systemctl restart nginx

五、启动Gerrit服务

  • 切换到Gerrit用户,并启动Gerrit服务:
cd ~/gerrit_file/bin
./gerrit.sh start
  • 修改了配置要重启
./gerrit.sh restart

五、修改权限

  • u: 后面的是之前创建用来运行 gerrit的账户 gerrit
  • 一般来说会专门创建一个 nginx 用户 来运行 Nginx
setfacl -R -m u:gerrit:rx /home/gerrit/gerrit_file 

六、设置用户权限

  • 使用Gerrit的Web界面或通过SSH访问Gerrit来设置用户权限和访问控制列表(ACLs)。

七、验证安装

  • 在Web浏览器中访问http://172.28.17.230/,您应该能够看到Gerrit的登录页面。
http://172.28.17.230/
  • 弹出之前的账号密码
    ]在这里插入图片描述

完成上述步骤后,您应该能够在Ubuntu 20.04系统上成功安装并配置Gerrit来管理您的代码。请确保按照Gerrit的官方文档和最佳实践来操作,以确保系统的安全和稳定。

八、报错

1、报错log

gerrit@qiuzhiyei:~$ java -jar gerrit-3.10.0.war init -d ~/gerrit_file
Error: A JNI error has occurred, please check your installation and try again
Exception in thread "main" java.lang.UnsupportedClassVersionError: Main has been compiled by a more recent version of the Java Runtime (class file version 61.0), this version of the Java Runtime only recognizes class file versions up to 52.0
        at java.lang.ClassLoader.defineClass1(Native Method)
        at java.lang.ClassLoader.defineClass(ClassLoader.java:756)
        at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
        at java.net.URLClassLoader.defineClass(URLClassLoader.java:473)
        at java.net.URLClassLoader.access$100(URLClassLoader.java:74)
        at java.net.URLClassLoader$1.run(URLClassLoader.java:369)
        at java.net.URLClassLoader$1.run(URLClassLoader.java:363)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(URLClassLoader.java:362)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:418)
        at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:352)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:351)
        at sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:621)

2、解决方法

  • 遇到的错误提示表明,您尝试运行的Gerrit版本是用比您当前安装的Java版本更高的Java编译器编译的。错误中提到的“class file version 61.0”对应于Java 17,而您的系统可能只安装了Java 8。

为了解决这个问题,需要升级Java环境

  1. 升级Java环境
  • 在Ubuntu 20.04上下载并安装Oracle JDK 22,可以直接使用wget命令从Oracle的官方网站下载JDK的压缩包。以下是一个示例命令,用于下载x64架构的JDK 22压缩包:
wget https://download.oracle.com/java/22/latest/jdk-22_linux-x64_bin.tar.gz

下载完成后,您可以使用以下命令解压JDK压缩包:

tar -zxvf jdk-22_linux-x64_bin.tar.gz

解压后,您可以将解压后的JDK目录移动到/usr/local/或其他您选择的目录。例如:

sudo mv jdk-22 /usr/local/java/jdk-22

接下来,您需要设置JAVA_HOME环境变量,以便系统能够识别JDK的位置。您可以通过编辑/etc/profile文件或用户的shell配置文件(如~/.bashrc)来设置环境变量。例如,在 .bashrc 文件中添加以下内容:

export JAVA_HOME=/usr/local/java/jdk-22
export PATH=$PATH:$JAVA_HOME/bin

保存文件后,执行以下命令使更改生效:

source ~/.bashrc

最后,您可以使用以下命令验证JDK是否已成功安装:

java -version

如果一切设置正确,您应该能够看到JDK 22的版本信息。

  1. 验证Java安装:
java -version
gerrit@qiuzhiyei:~$ java -version
java version "22.0.1" 2024-04-16
Java(TM) SE Runtime Environment (build 22.0.1+8-16)
Java HotSpot(TM) 64-Bit Server VM (build 22.0.1+8-16, mixed mode, sharing)
gerrit@qiuzhiyei:~$
  1. 确保使用新安装的Java版本来启动Gerrit:
  • 可以更新~/gerrit_file/bin/gerrit.sh脚本中的JAVA_HOME变量,以指向新安装的Java版本。
  1. 重新启动Gerrit服务:
cd ~/gerrit_file/bin
./gerrit.sh restart
  • 验证Gerrit是否正在运行:
  • 检查Gerrit日志以确认没有错误。
  • 在Web浏览器中访问Gerrit的Web界面。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

制服小程序的“滑手”:禁用页面左右滑动全攻略

哈哈,看来你已经很聪明地发现了小程序中左右滑动的“顽皮”行为!😄 没错,我们可以通过设置 disableScroll 属性来“管教”它,同时结合 CSS 样式让页面既禁得住横向“乱跑”,又能顺畅地上下滚动。你的方案已…

ASP .NET Core 学习(.NET9)Serilog日志整合

Serilog 是一个功能强大的 .NET 日志库,以其简洁的配置和灵活的输出方式而受到开发者喜爱。支持多种日志输出目标(如控制台、文件、数据库等),并且可以通过结构化日志的方式记录丰富的上下文信息,便于后续的日志分析和…

**NET400协议网关全系型号:多场景·全兼容工业物联解决方案**

行业痛点 工业现场需适配多样场景、差异化PLC协议、弹性扩展需求: 单一型号无法覆盖小规模车间到大型工厂的复杂组网;老旧系统升级需硬件兼容与数据平滑迁移;设备点位从数十到上千,需灵活选型控制成本。 NET400系列部分型号 按…

excel vlookup的精确查询、模糊查询、反向查询、多列查询

目录 入门 精确查询 模糊查询 反向查询 (搭配 if 函数) 多列查询 (搭配 match 函数) 入门 精确查询 需求: 查找 学生编号是008 所在的班级 操作: 在I2单元格输入公式如下,VLOOKUP(H2,B1:E12,4,FALSE), 得出结果 看一下vlookup 公式每一个参数应该怎么写? 语法: vlookup…

计算机组成原理:计算机系统层次结构

文章目录 计算机系统的组成计算机硬件冯诺依曼计算机主要特点 组成部分冯诺依曼计算机结构现代计算机结构 计算机软件计算机程序语言的发展 软件和硬件功能的逻辑等价性计算机系统的层次结构 计算机系统的组成 硬件系统和软件系统共同构成了一个完整的计算机系统。 硬件是指有…

探秘基带算法:从原理到5G时代的通信变革【二】Viterbi解码

文章目录 二、关键算法原理剖析2.1 Viterbi 解码2.1.1 卷积码与网格图基础**卷积码****网格图****生成多项式****理想情况下解码过程** 2.1.2 Viterbi 算法核心思想2.1.3 路径度量与状态转移机制2.1.4 算法流程与关键步骤详解2.1.5 译码算法举例与复杂度分析2.1.6 算法代码示例…

uniapp对接打印机和电子秤

uniapp对接打印机和电子秤 连接电子秤和打印机,最难的不是连接蓝牙和电子成,而是打印机。因为打印机涉及到向打印机写数据操作,然后这个写的数据需要做一个编码转换。难就难在编码转换。如果是java那就是一句代码的事情,而js就没有…

Java-实现PDF合同模板填写内容并导出PDF文件

可用于公司用户合同导出pdf文件 效果图 一、导入所需要jar包 <!--生成PDF--><dependency><groupId>com.itextpdf</groupId><artifactId>itextpdf</artifactId><version>5.5.11</version></dependency><dependency&…

如何排查服务器内存泄漏问题

服务器内存泄漏是一种常见的问题&#xff0c;可能导致系统性能下降甚至系统崩溃。以下是一般情况下用于排查服务器内存泄漏问题的步骤&#xff1a; 排查服务器内存泄漏问题的步骤&#xff1a; 监控系统资源&#xff1a; 使用系统监控工具&#xff08;如top、htop、free&#x…

Tampermonkey篡改猴官网,油猴脚本插件电脑版入口(含教程)

Tampermonkey&#xff08;篡改猴&#xff09;是一款功能强大的浏览器扩展工具&#xff0c;自2010年发布以来&#xff0c;已成为全球超过1000万用户的首选脚本管理器。它通过运行用户自定义的JavaScript脚本&#xff0c;赋予用户深度定制网页的能力&#xff0c;涵盖广告拦截、界…

Java高频面试之集合-03

hello啊&#xff0c;各位观众姥爷们&#xff01;&#xff01;&#xff01;本baby今天来报道了&#xff01;哈哈哈哈哈嗝&#x1f436; 面试官&#xff1a;说说ArrayList和LinkedList的区别 ArrayList 与 LinkedList 的详细对比 一、底层数据结构 特性ArrayListLinkedList存…

golang学习笔记——go语言安装及系统环境变量设置

文章目录 go语言安装go envgo getgoproxy测试安装 Go 插件安装 Go 插件依赖工具参考资料用户环境变量和系统环境变量用户环境变量系统环境变量示例设置环境变量的步骤设置用户环境变量设置系统环境变量 验证环境变量总结 2024年最火的5大Go框架1. Gin&#xff1a;高并发接口的“…

Composition API

为什么会产生 Composition API? Vue2 逻辑复用方式 缺点 Mixin (命名空间冲突、逻辑不清晰、不易复用)scoped slot 作用域插槽 (配置项多、代码分裂、性能差)Vue2 对 TS 支持不充分 Composition API 优点 逻辑代码更少, 更集中, 更易扩展更加丰富的 API 集成对 TS 来说,…

DeepSeek R1助力,腾讯AI代码助手解锁音乐创作新

目录 1. DeepSeekR1模型简介2. 歌词创作流程2.1 准备工作2.2 歌词生成技巧 3. 音乐制作环节3.1 主流AI音乐生成平台 4. 歌曲欣赏5. 总结展望 1. DeepSeekR1模型简介 腾讯AI代码助手最新推出的DeepSeekR1模型不仅在代码生成方面表现出色&#xff0c;其强大的自然语言处理能力也…

微信小程序接入deepseek

先上效果 话不多说&#xff0c;直接上代码&#xff08;本人用的hbuilder Xuniapp&#xff09; <template><view class"container"><!-- 聊天内容区域 --><scroll-view class"chat-list" scroll-y :scroll-top"scrollTop":…

angular+nodejs问卷调查系统

说明&#xff1a;我计划用angularmysqlnodejs&#xff0c;做一套问卷调查系统&#xff0c; 1.先设计数据库表&#xff0c; 2.然后添加模拟数据&#xff0c; 3.然后写几个查询方法 4.然后用nodejs写service服务&#xff0c;查询mysql数据 5.然后写contrller路由&#xff0c;指向…

Ubuntu20.04双系统安装及软件安装(五):VSCode

Ubuntu20.04双系统安装及软件安装&#xff08;五&#xff09;&#xff1a;VSCode 打开VScode官网&#xff0c;点击中间左侧的deb文件下载&#xff1a; 系统会弹出下载框&#xff0c;确定即可。 在文件夹的**“下载”目录**&#xff0c;可看到下载的安装包&#xff0c;在该目录下…

EasyDSS视频推拉流系统:清理缓存文件时如何确保缓存读写不受影响?

视频推拉流EasyDSS视频直播点播平台可提供一站式的视频转码、点播、直播、视频推拉流、播放H.265视频等服务&#xff0c;搭配RTMP高清摄像头使用&#xff0c;可将无人机设备的实时流推送到平台上&#xff0c;实现无人机视频推流直播、巡检等应用。 有用户咨询&#xff0c;视频推…

VS Code C++ 开发环境配置

VS Code 是当前非常流行的开发工具. 本文讲述如何配置 VS Code 作为 C开发环境. 本文将按照如下步骤来介绍如何配置 VS Code 作为 C开发环境. 安装编译器安装插件配置工作区 第一个步骤的具体操作会因为系统不同或者方案不同而有不同的选择. 环境要求 首先需要立即 VS Code…

GPIO的简介

目录 一、GPIO简介 二、GPIO基本结构 三、GPIO位结构 1、整体结构和内部各结构 2、输入部分 1.保护二极管 2.输入模式 3.浮空/上拉/下拉配置 ​编辑 4.模拟输入 5.施密特触发器 3、输出部分 1.输出部分前段 2.输出模式 3.开漏/推挽输出 4.复用开漏/推挽输出 四…