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

- 在编程的艺术世界里,代码和灵感需要寻找到最佳的交融点,才能打造出令人为之惊叹的作品。
- 而在这座秋知叶i博客的殿堂里,我们将共同追寻这种完美结合,为未来的世界留下属于我们的独特印记。
【ubuntu20】--- 搭建 gerrit 最新最详细
- 一、环境准备
- 二、安装Gerrit
- 1. **下载Gerrit**
- 2. **安装Gerrit**
- 三、创建账号
- 四、配置反向代理(以Nginx为例)
- 五、启动Gerrit服务
- 五、修改权限
- 六、设置用户权限
- 七、验证安装
- 八、报错
- 1、报错log
- 2、解决方法
一、环境准备
-
更新系统
- 打开终端,执行以下命令来更新Ubuntu系统及其软件包列表:
sudo apt-get update sudo apt-get upgrade
- 打开终端,执行以下命令来更新Ubuntu系统及其软件包列表:
-
安装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
- Gerrit需要Java环境来运行。可以通过添加PPA源并安装OpenJDK 8(或更高版本,但确保与Gerrit兼容)来实现:
-
安装Git
- Gerrit建立在Git之上,因此需要安装Git:
sudo apt-get install git - 验证Git安装:
git --version
- Gerrit建立在Git之上,因此需要安装Git:
-
创建Gerrit用户
- 为了安全和管理方便,建议为Gerrit创建一个专用用户:
sudo adduser gerrit sudo usermod -a -G sudo gerrit # 将gerrit用户添加到sudo组
- 为了安全和管理方便,建议为Gerrit创建一个专用用户:
二、安装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 communityFind 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为例)
- 安装Nginx
- 切换回root用户或使用sudo命令来安装Nginx:
sudo apt-get install nginx
- 配置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;
- 重启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.0at 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环境
- 升级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的版本信息。
- 验证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:~$
- 确保使用新安装的Java版本来启动Gerrit:
- 可以更新
~/gerrit_file/bin/gerrit.sh脚本中的JAVA_HOME变量,以指向新安装的Java版本。
- 重新启动Gerrit服务:
cd ~/gerrit_file/bin
./gerrit.sh restart
- 验证Gerrit是否正在运行:
- 检查Gerrit日志以确认没有错误。
- 在Web浏览器中访问Gerrit的Web界面。
相关文章:
【ubuntu20】--- 搭建 gerrit 最新最详细
在编程的艺术世界里,代码和灵感需要寻找到最佳的交融点,才能打造出令人为之惊叹的作品。而在这座秋知叶i博客的殿堂里,我们将共同追寻这种完美结合,为未来的世界留下属于我们的独特印记。 【ubuntu20】--- 搭建 gerrit 最新最详细…...
HCIA-DHCP
1、定义:DHCP即动态主机配置协议,通过C/S模型架构,无需主机配置IP地址,自动分配网络配置参数的网络协议。 2、作用 对比项目无 DHCP有 DHCP配置难度配置多,容易出错自动为客户端分配 IP 地址及其他网络配置参数&…...
wxWidgets GUI 跨平台 入门学习笔记
准备 参考 https://wiki.wxwidgets.org/Microsoft_Visual_C_NuGethttps://wiki.wxwidgets.org/Tools#Rapid_Application_Development_.2F_GUI_Buildershttps://docs.wxwidgets.org/3.2/https://docs.wxwidgets.org/latest/overview_helloworld.htmlhttps://wizardforcel.gitb…...
OmniParser技术分析(一)
1.引言 通过上篇文章介绍 OmniParser:下一代纯视觉UI自动化测试先驱相信大家已经对OmniParser有初步了解,接下来详细介绍下OmniParser使用了哪些技术模型实现了对UI纯视觉的检测和理解。 2.整体方案 通过阅读OmniParser提供的运行Demo代码知道,其实整…...
什么是hive
Apache Hive 是一个基于 Hadoop 生态系统构建的数据仓库工具,主要用于处理和分析大规模的结构化数据。它允许用户通过类似 SQL 的查询语言(HiveQL)进行数据操作,而无需直接编写复杂的 MapReduce 程序。以下是 Hive 的核心特点和应…...
PyTorch系列教程:Tensor.view() 方法详解
这篇简明扼要的文章是关于PyTorch中的tensor.view()方法的介绍与应用,与reshape()方法的区别,同时给出示例进行详细解释。 Tensor基础 Tensor(张量)的视图是一个新的Tensor,它与原始Tensor共享相同的底层数据,但具有不同的形状或…...
从零开始了解Manus(文末附教程)
大家好,我是樱木。 《从零开始了解Manus》,这个教程对于想了解 Manus的同学,全部都在里面了! Manus 是一款能像真人一样帮你干活的AI助手,运行在云端,不占电脑内存。 它可以自动完成复杂任务,…...
不同开发语言之for循环的用法、区别总结
一、Objective-C (1)标准的c风格 for (int i 0; i < 5; i) {NSLog("i %d", i); } (2)for in循环。 NSArray *array ["apple", "banana", "orange"]; for (NSString *fruit in …...
CentOS 7 aarch64上制作kernel rpm二进制包 —— 筑梦之路
环境说明 centos 7 aarch64 gcc 8.3.1 kernel 5.4.290 准备编译制作 # 安装必要的工具和包yum install rpm-devel rpmdevtools yum groupinstall "Development Tools"yum install ncurses-devel bc elfutils-libelf-devel openssl-devel # 安装gcc 8.3.1# 修改…...
Cursor 使用经验,一个需求开发全流程
软件开发中 Cursor 的使用经验成为关注焦点,尤其是处理大型数据集的需求。用户提到“Cursor 使用经验,一个需求开发全流程”,但“Cursor”可能指数据库游标,涉及逐行处理数据。本文将详细探讨开发一个需求的完整流程,包…...
2025-03-08 学习记录--C/C++-PTA 习题9-2 计算两个复数之积
合抱之木,生于毫末;九层之台,起于累土;千里之行,始于足下。💪🏻 一、题目描述 ⭐️ 二、代码(C语言)⭐️ #include <stdio.h>struct complex{int real;int imag; …...
DeepSeek-R1本地化部署(Mac)
一、下载 Ollama 本地化部署需要用到 Ollama,它能支持很多大模型。官方网站:https://ollama.com/ 点击 Download 即可,支持macOS,Linux 和 Windows;我下载的是 mac 版本,要求macOS 11 Big Sur or later,Ol…...
【时时三省】(C语言基础)赋值语句
山不在高,有仙则名。水不在深,有龙则灵。 ----CSDN 时时三省 赋值语句 在C程序中,最常用的语句是:赋值语句和输入输出语句。其中最基本的是赋值语句程序中的计算功能大部分是由赋值语句实现的,几乎每一个有实用价值的程序都包括赋值语句。有的程序中的大部分语句都是赋值…...
如何提取图片文字
如何分析图片风格: 分析下图片是什么风格,用即梦AI的提示语描述。我要使用描述语去即梦生成同样的图...
3.3.2 用仿真图实现点灯效果
文章目录 文章介绍Keil生成.hex代码Proteus仿真图中导入.hex代码文件开始仿真 文章介绍 点灯之前需要准备好仿真图keil代码 仿真图参考前文:3.3.2 Proteus第一个仿真图 keil安装参考前文:3.1.2 Keil4安装教程 keil新建第一个项目参考前文:3.1…...
BGP 基本配置实验
实验拓扑 实验需求 按照图示配置 IP 地址,R1 和 R5 上使用环回口模拟业务网段,R2,R3,R4 的环回口用于配置 Router-id 和建立 IBGP 邻居AS 200 运行 OSPF 实现内部网络互通R1,R2,R4,R5 运行 BGP…...
关于 QPalette设置按钮背景未显示出来 的解决方法
若该文为原创文章,转载请注明原文出处 本文章博客地址:https://hpzwl.blog.csdn.net/article/details/146047054 长沙红胖子Qt(长沙创微智科)博文大全:开发技术集合(包含Qt实用技术、树莓派、三维、OpenCV…...
## DeepSeek写水果记忆配对手机小游戏
DeepSeek写水果记忆配对手机小游戏 提问 根据提的要求,让DeepSeek整理的需求,进行提问,内容如下: 请生成一个包含以下功能的可运行移动端水果记忆配对小游戏H5文件: 要求 可以重新开始游戏 可以暂停游戏 卡片里的水果…...
P8662 [蓝桥杯 2018 省 AB] 全球变暖--DFS
P8662 [蓝桥杯 2018 省 AB] 全球变暖--dfs 题目 解析讲下DFS代码 题目 解析 这道题的思路就是遍历所有岛屿,判断每一块陆地是否会沉没。对于这种图的遍历,我们首先应该想到DFS。 代码的注意思想就是,在主函数中遍历找出所有岛屿,…...
opentitan riscv
OpenTitan是一个开源的硅根信任(Root of Trust, RoT)项目,旨在使硅RoT的设计和实现更加透明、可信和安全,适用于企业、平台提供商和芯片制造商。该项目由lowRISC CIC管理,作为一个协作项目,旨在生产高质量…...
接口测试中缓存处理策略
在接口测试中,缓存处理策略是一个关键环节,直接影响测试结果的准确性和可靠性。合理的缓存处理策略能够确保测试环境的一致性,避免因缓存数据导致的测试偏差。以下是接口测试中常见的缓存处理策略及其详细说明: 一、缓存处理的核…...
stm32G473的flash模式是单bank还是双bank?
今天突然有人stm32G473的flash模式是单bank还是双bank?由于时间太久,我真忘记了。搜搜发现,还真有人和我一样。见下面的链接:https://shequ.stmicroelectronics.cn/forum.php?modviewthread&tid644563 根据STM32G4系列参考手…...
ES6从入门到精通:前言
ES6简介 ES6(ECMAScript 2015)是JavaScript语言的重大更新,引入了许多新特性,包括语法糖、新数据类型、模块化支持等,显著提升了开发效率和代码可维护性。 核心知识点概览 变量声明 let 和 const 取代 var…...
vscode(仍待补充)
写于2025 6.9 主包将加入vscode这个更权威的圈子 vscode的基本使用 侧边栏 vscode还能连接ssh? debug时使用的launch文件 1.task.json {"tasks": [{"type": "cppbuild","label": "C/C: gcc.exe 生成活动文件"…...
visual studio 2022更改主题为深色
visual studio 2022更改主题为深色 点击visual studio 上方的 工具-> 选项 在选项窗口中,选择 环境 -> 常规 ,将其中的颜色主题改成深色 点击确定,更改完成...
【RockeMQ】第2节|RocketMQ快速实战以及核⼼概念详解(二)
升级Dledger高可用集群 一、主从架构的不足与Dledger的定位 主从架构缺陷 数据备份依赖Slave节点,但无自动故障转移能力,Master宕机后需人工切换,期间消息可能无法读取。Slave仅存储数据,无法主动升级为Master响应请求ÿ…...
蓝桥杯3498 01串的熵
问题描述 对于一个长度为 23333333的 01 串, 如果其信息熵为 11625907.5798, 且 0 出现次数比 1 少, 那么这个 01 串中 0 出现了多少次? #include<iostream> #include<cmath> using namespace std;int n 23333333;int main() {//枚举 0 出现的次数//因…...
rnn判断string中第一次出现a的下标
# coding:utf8 import torch import torch.nn as nn import numpy as np import random import json""" 基于pytorch的网络编写 实现一个RNN网络完成多分类任务 判断字符 a 第一次出现在字符串中的位置 """class TorchModel(nn.Module):def __in…...
【Linux】Linux 系统默认的目录及作用说明
博主介绍:✌全网粉丝23W,CSDN博客专家、Java领域优质创作者,掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域✌ 技术范围:SpringBoot、SpringCloud、Vue、SSM、HTML、Nodejs、Python、MySQL、PostgreSQL、大数据、物…...
MySQL:分区的基本使用
目录 一、什么是分区二、有什么作用三、分类四、创建分区五、删除分区 一、什么是分区 MySQL 分区(Partitioning)是一种将单张表的数据逻辑上拆分成多个物理部分的技术。这些物理部分(分区)可以独立存储、管理和优化,…...
