【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界面。
相关推荐
ZPC82105 小时前
ubuntu 6.8.0 安装xenomai3.3
linux·运维·ubuntu
电脑能手6 小时前
遇到该问题:kex_exchange_identification: read: Connection reset`的解决办法
linux·ubuntu·ssh
snoopyfly~6 小时前
Ubuntu 24.04 安装配置 Redis 7.0 开机自启
linux·redis·ubuntu
精英的英6 小时前
在Ubuntu 24.04主机上创建Ubuntu 14.04编译环境的完整指南
linux·运维·ubuntu
奇妙之二进制7 小时前
计算机科学导论(10)什么是BIOS
ubuntu·计算机基础
岁月玲珑7 小时前
【如何判断Linux系统是Ubuntu还是CentOS】
linux·ubuntu·centos
Kevin不想说话926198 小时前
Ubuntu 24.04 安装搜狗输入法完整教程
ubuntu
矩阵老炮12 小时前
Ubuntu20.4编译AOSP源码实践
ubuntu·aosp
嵌入式成长家12 小时前
ubuntu rules 使用规则
linux·ubuntu·rules 使用规则
椰汁菠萝13 小时前
ubuntu下免sudo执行docker
ubuntu·docker·免sudo