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

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

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


一、环境准备

  1. 更新系统

    • 打开终端,执行以下命令来更新Ubuntu系统及其软件包列表:

      bash 复制代码
      sudo apt-get update
      sudo apt-get upgrade
  2. 安装Java环境

    • Gerrit需要Java环境来运行。可以通过添加PPA源并安装OpenJDK 8(或更高版本,但确保与Gerrit兼容)来实现:

      bash 复制代码
      sudo add-apt-repository ppa:openjdk-r/ppa
      sudo apt-get update
      sudo apt-get install openjdk-8-jdk
    • 验证Java安装:

      bash 复制代码
      java -version
  3. 安装Git

    • Gerrit建立在Git之上,因此需要安装Git:

      bash 复制代码
      sudo apt-get install git
    • 验证Git安装:

      bash 复制代码
      git --version
  4. 创建Gerrit用户

    • 为了安全和管理方便,建议为Gerrit创建一个专用用户:

      bash 复制代码
      sudo adduser gerrit
      sudo usermod -a -G sudo gerrit  # 将gerrit用户添加到sudo组

二、安装Gerrit

  • 登录到gerrit用户:

1. 下载Gerrit

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

2. 安装Gerrit

  • 在Gerrit用户的主目录下,执行以下命令来初始化Gerrit安装:
  • 创建安装文件夹
shell 复制代码
mkdir gerrit_file
  • 初始化Gerrit安装
  • 全部都默认回车下去
shell 复制代码
java -jar gerrit-3.10.0.war init -d ~/gerrit_file
  • 安装完成
shell 复制代码
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
  • 第一个默认是管理员账号
shell 复制代码
htpasswd -c gerrit_file/gerrit.password admin

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

  1. 安装Nginx
  • 切换回root用户或使用sudo命令来安装Nginx:
shell 复制代码
sudo apt-get install nginx
  1. 配置Nginx反向代理
  • 编辑Nginx的配置文件(通常位于/etc/nginx/sites-available/目录下),
shell 复制代码
vim /etc/nginx/sites-available/default
  • 添加一个server块来配置反向代理:
shell 复制代码
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 默认的运行用户

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

五、启动Gerrit服务

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

五、修改权限

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

六、设置用户权限

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

七、验证安装

  • 在Web浏览器中访问http://172.28.17.230/,您应该能够看到Gerrit的登录页面。
shell 复制代码
http://172.28.17.230/
  • 弹出之前的账号密码
    ]

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

八、报错

1、报错log

shell 复制代码
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压缩包:
shell 复制代码
wget https://download.oracle.com/java/22/latest/jdk-22_linux-x64_bin.tar.gz

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

bash 复制代码
tar -zxvf jdk-22_linux-x64_bin.tar.gz

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

bash 复制代码
sudo mv jdk-22 /usr/local/java/jdk-22

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

bash 复制代码
export JAVA_HOME=/usr/local/java/jdk-22
export PATH=$PATH:$JAVA_HOME/bin

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

bash 复制代码
source ~/.bashrc

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

bash 复制代码
java -version

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

  1. 验证Java安装:
shell 复制代码
java -version
shell 复制代码
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服务:
shell 复制代码
cd ~/gerrit_file/bin
./gerrit.sh restart
  • 验证Gerrit是否正在运行:
  • 检查Gerrit日志以确认没有错误。
  • 在Web浏览器中访问Gerrit的Web界面。
相关推荐
G.Chenhui1 小时前
【Git】Ubuntu 安装 Git Large File Storage(LFS)以及使用 Git LFS 下载
linux·git·ubuntu
Kevin__471 小时前
Ubuntu录屏--OBS
linux·运维·ubuntu
黑风风5 小时前
探索 Ubuntu 中的 Hostname 配置与管理
数据库·ubuntu·php
llkk星期五5 小时前
ubuntu 22.04附加驱动安装NVIDIA显卡驱动重启后无WiFi蓝牙等问题
linux·ubuntu
CVer儿5 小时前
ubuntu挂载固态硬盘
linux·运维·ubuntu
music&movie6 小时前
Win11安装VMware和Ubuntu并使用ssh访问部署模型
linux·ubuntu·ssh
程序员JerrySUN6 小时前
在 Ubuntu 20.04 上交叉编译 Qt 5 应用,使其可在 Windows 运行
windows·qt·ubuntu
闫利朋6 小时前
Ubuntu 22.04安装NVIDIA A30显卡驱动
ubuntu·a 30
J.Pei6 小时前
Linux(ubuntu)环境下部署The Fuck项目的方法(保姆级教程)
linux·ubuntu