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

news2025/4/21 14:24:20

在这里插入图片描述

  • 在编程的艺术世界里,代码和灵感需要寻找到最佳的交融点,才能打造出令人为之惊叹的作品。
  • 而在这座秋知叶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界面。

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

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

相关文章

Python----数据分析(Matplotlib五:pyplot的其他函数,Figure的其他函数, GridSpec)

一、pyplot的其他函数 1.1、xlabel 在matplotlib中, plt.xlabel() 函数用于为当前活动的坐标轴(Axes)设置x轴的 标签。当你想要标识x轴代表的数据或单位时,这个函数非常有用。 plt.xlabel(xlabel text) 1.2、ylabel 在matplotl…

C语言——链表

大神文献:https://blog.csdn.net/weixin_73588765/article/details/128356985 目录 一、链表概念 1. 什么是链表? 1.1 链表的构成 2. 链表和数组的区别 数组的特点: 链表的特点: 二者对比: 二…

使用免费IP数据库离线查询IP归属地

一、准备工作 1.下载免费IP数据库 首先,访问 MaxMind官网(https://www.maxmind.com/en/home)如果你还没有MaxMind账号,可以通过此链接地址(https://www.maxmind.com/en/geolite2/signup)进行账号注册&…

MySQL(单表)知识点

文章目录 1.数据库的概念2.下载并配置MySQL2.1初始化MySQL的数据2.2注册MYSQL服务2.3启动MYSQL服务2.4修改账户默认密码2.5登录MYSQL2.6卸载MYSQL 3.MYSQL数据模型3.1连接数据库 4.SQL简介4.1SQL的通用语法4.2SQL语句的分类4.3DDL语句4.3.1数据库4.3.2表(创建,查询,修改,删除)4…

1.15-16-17-18迭代器与生成器,函数,数据结构,模块

目录 15,Python3 迭代器与生成器15-1 迭代器15-1-1 基础知识15-1-2 迭代器与for循环工作原理 15-2 生成器(本质就是迭代器)15-2-1 yield 表达式15-2-2 三元表达式15-2-3 列表生成式15-2-4 其他生成器(——没有元祖生成式——&…

Java 大视界 -- Java 大数据在智能家居能源管理与节能优化中的应用(120)

💖亲爱的朋友们,热烈欢迎来到 青云交的博客!能与诸位在此相逢,我倍感荣幸。在这飞速更迭的时代,我们都渴望一方心灵净土,而 我的博客 正是这样温暖的所在。这里为你呈上趣味与实用兼具的知识,也…

第七课:Python反爬攻防战:Headers/IP代理与验证码

在爬虫开发过程中,反爬虫机制成为了我们必须面对的挑战。本文将深入探讨Python爬虫中常见的反爬机制,并详细解析如何通过随机User-Agent生成、代理IP池搭建以及验证码识别来应对这些反爬策略。文章将包含完整的示例代码,帮助读者更好地理解和…

MySql的安装及数据库的基本操作命令

1.MySQL的安装 1.1进入MySQL官方网站 1.2点击下载 1.3下拉选择MySQL社区版 1.4选择你需要下载的版本及其安装的系统和下载方式 直接安装以及压缩包 建议选择8.4.4LST LST表明此版本为长期支持版 新手建议选择红框勾选的安装方式 1.5 安装包下载完毕之后点击安装 2.数据库…

VsCode导入时选择相对路径

自动导入时总是以db://开头了,而我们通常需要的是相对路径,对VsCode进行如下设置: 打开 VSCode 设置: 使用快捷键 Ctrl ,(Windows/Linux)或 Cmd ,(Mac)。 或者在菜单栏中选择 …

计算机视觉|3D卷积网络VoxelNet:点云检测的革新力量

一、引言 在科技快速发展的背景下,3D 目标检测技术在自动驾驶和机器人领域中具有重要作用。 在自动驾驶领域,车辆需实时、准确感知周围环境中的目标物体,如行人、车辆、交通标志和障碍物等。只有精确检测这些目标的位置、姿态和类别&#x…

AI数字人源码开发---SaaS化源码部署+PC+小程序一体化

#数字人#数字人分身#123数字人#数字人分身源码部署搭建 AI数字人源码开发步骤 确定功能需求:首先确定需要实现的功能和特性,包括语音识别、自然语言处理、人脸识别等功能。这些功能将构成AI数字人的核心功能。 开发AI数字人源码:使用合适的…

Linux网络相关内容与端口

网络相关命令 ping命令测试连接状态 wget命令:非交互式文件下载器,可以在命令行内下载网络文件 使用ctrlc可以中止下载 curl命令:可以发送http网络请求,用于文件下载、获取信息等 其实和浏览器打开网站一样,cu…

【招聘精英】

我们公司是一个位于石家庄的一个科技型新型技术公司。主要做人力资源、用工、科技等方面。 有意向回石家庄的或者已经在石家庄的技术大咖、软件大牛、产品大佬、UI大神可以来了解一下。 现在招聘 高级前端开发 高级java开发 其他岗位也可以联系。 有意向的朋友可以私信我。 -…

ESP8266 NodeMCU 与 Atmega16 微控制器连接以发送电子邮件

NodeMCU ESP8266 AVR 微控制器 ATmega16 的接口 Atmega16 是一款低成本的 8 位微控制器,比以前版本的微控制器具有更多的 GPIO。它具有所有常用的通信协议,如 UART、USART、SPI 和 I2C。由于其广泛的社区支持和简单性,它在机器人、汽车和自动化行业有广泛的应用。 Atmega1…

MongoDB用户管理和复制组

用户管理 1、建用户时,use到的库就是此用户的验证库 2、登录时必须明确指定验证库才能登录 3、通常管理员用的验证库是admin,普通用户的验证库一般是所管理的库设置为验证库 4、如果直接登录到数据库,不进行use(示例&#xff…

SQLAlchemy系列教程:集成Pydantic增强数据处理能力

本教程介绍如何将Pydantic用于数据验证,SQLAlchemy用于数据库操作,从而通过强大的数据处理能力增强Python应用程序。 介绍 在现代web开发中,确保数据的有效性和完整性至关重要。Pydantic和SQLAlchemy是两个功能强大的Python库,可…

【数据结构初阶】---堆的实现、堆排序以及文件中的TopK问题

1.树的概念及结构 1.1树的概念 树是一种非线性的数据结构,它是由n(n>0)个有限结点组成一个具有层次关系的集合。把它叫做树是因为它看起来像一棵倒挂的树,也就是说它是根朝上,而叶朝下的。 有一个特殊的结点&…

IP,MAC,ARP 笔记

1.什么是IP地址 IP 地址是一串由句点分隔的数字。IP 地址表示为一组四个数字,比如 192.158.1.38 就是一个例子。该组合中的每个数字都可以在 0 到 255 的范围内。因此,完整的 IP 寻址范围从 0.0.0.0 到 255.255.255.255。 IP 地址不是随机的。它们由互…

【记录】Python3|Linux下安装Virtualenv和virtualenvwrapper用于处理虚拟环境

之前写过一篇Anaconda的:【安装】Python3|Windows下安装Anaconda、pytorch,以及修改pip默认安装路径_anaconda pip修改安装的包路径-CSDN博客 还写过一篇专门讲所有虚拟环境的:【记录】环境|Ubuntu18.04 Python 开发环…

VSTO(C#)Excel开发3:Range对象 处理列宽和行高

初级代码游戏的专栏介绍与文章目录-CSDN博客 我的github:codetoys,所有代码都将会位于ctfc库中。已经放入库中我会指出在库中的位置。 这些代码大部分以Linux为目标但部分代码是纯C的,可以在任何平台上使用。 源码指引:github源…