Ubuntu下部署gerrit+报错分析(超详细)

news2024/12/23 1:40:19

Ubuntu下部署gerrit代码平台

之前安装过几次 最后都在Apache代理这里失败了,如下图,总是gerrit.config与Apache2.config配置有问题,后面换了使用ngnix代理,简单多了
在这里插入图片描述

  1. 安装Mysql、gerrit、jdk、git
    这一步也是非必须得,也可以使用默认H2数据库,大型公司还是建议使用Mysql这种统一。使用apt直接安装mysql
    apt-get install git
	apt-get install mysql-server
	mysql_secure_installation
	systemctl status mysql.service
	mysqladmin -p -u root version 
	#登录mysql 创建用户与密码  刷新
	mysql -p
	CREATE USER 'gerrit'@'localhost' IDENTIFIED BY 'gerrit123';
	create database reviewdb;
	GRANT ALL ON reviewdb.* TO 'gerrit'@'localhost';
	FLUSH PRIVILEGES;
	#创建存储数据表
	CREATE TABLE account_group_by_id_aud(added_by INT DEFAULT 0 NOT NULL,removed_by INT,removed_on TIMESTAMP NULL DEFAULT NULL,group_id INT DEFAULT 0 NOT NULL,include_uuid VARCHAR(255) BINARY DEFAULT '' NOT NULL,added_on TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,PRIMARY KEY(group_id,include_uuid,added_on));

    CREATE TABLE account_group_members_audit (added_by INT DEFAULT 0 NOT NULL, removed_by INT,removed_on TIMESTAMP NULL DEFAULT NULL, account_id INT DEFAULT 0 NOT NULL, group_id INT DEFAULT 0 NOT NULL,added_on TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, PRIMARY KEY(account_id,group_id,added_on));

	CREATE TABLE changes(change_key VARCHAR(60) BINARY DEFAULT '' NOT NULL,created_on TIMESTAMP NOT NULL,last_updated_on TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,owner_account_id INT DEFAULT 0 NOT NULL,dest_project_name VARCHAR(255) BINARY DEFAULT '' NOT NULL, dest_branch_name VARCHAR(255) BINARY DEFAULT '' NOT NULL,status CHAR(1) DEFAULT '' NOT NULL,current_patch_set_id INT DEFAULT 0 NOT NULL,subject VARCHAR(255) BINARY
DEFAULT '' NOT NULL,topic VARCHAR(255) BINARY, original_subject VARCHAR(255) BINARY, submission_id VARCHAR(255) BINARY, note_db_state TEXT,row_version INT DEFAULT 0 NOT NULL,change_id INT DEFAULT 0 NOT NULL,PRIMARY KEY(change_id));
	#安装gerritweb
	sudo apt-get install gitweb
	sudo apt-get install git-review
	#下载gerrit
	#之前下载了gerrit-3.9.3.war 在java -jar部署的时候提示我的jdk版本不兼容。我的Ubuntu安装的jdk是jdk 11,后面换了一个更低的版本gerrit-3.4.1.war才ok。这里提供两个低版本下载地址
	 wget https://gerrit-releases.storage.googleapis.com/gerrit-3.1.3.war
     wget https://gerrit-releases.storage.googleapis.com/gerrit-3.4.1.war
	#运行gerrit war包
	sudo java -jar gerrit*.war init
	#安装的选项  注意这个type = HTTP
	[gerrit]
	basePath = git
	canonicalWebUrl = http://192.168.1.100
	serverId = c2681fe1-2f8f-4da4-b074-8e23f6dfe942
[container]
	javaOptions = "-Dflogger.backend_factory=com.google.common.flogger.backend.log4j.Log4jBackendFactory#getInstance"
	javaOptions = "-Dflogger.logging_context=com.google.gerrit.server.logging.LoggingContext#getInstance"
	user = root
	javaHome = /usr/lib/jvm/java-11-openjdk-amd64
[database]
    type = mysql
    hostname = localhost
    database = reviewdb
    username = gerrit
[index]
	type = lucene
[auth]
	type = HTTP
[receive]
	enableSignedPush = false
[sendemail]
	smtpServer = localhost
[sshd]
	listenAddress = *:29418
[httpd]
	listenUrl = proxy-http://*:8081/
[cache]
directory = cache
	#利用lucene创建索引
    sudo java -jar gerrit-3.4.1.war reindex
    #启动gerrit   
    #进入到bin目录  执行启动脚本
    cd /opt/gerrit/bin
    ./gerrit.sh start  #启动脚本
    ./gerrit.sh stop   #停止
    ./gerrit.sh restart  #重启
    #root@ubuntu20:~# cd /opt/gerrit/bin/
	#root@ubuntu20:/opt/gerrit/bin# ./gerrit.sh restart
	#Stopping Gerrit Code Review: OK
	#Starting Gerrit Code Review: OK
	#ok 证明gerrit已经启动成功,但是当我们使用ip访问 页面报错 如开头web报错,这种是因为没有配置代理或者gerrit.config配置问题

在这里插入图片描述
在这里插入描述
二、安装代理
Apache代理坑有点多,搞了好久,还是有问题。我哩个豆
配置如下 启动apache服务报错

<VirtualHost *:80>
    ServerName 192.168.1.100
 
    ProxyRequests Off
    ProxyVia Off
    ProxyPreserveHost On
    <Proxy *>
          Order deny,allow
          Allow from all
    </Proxy>
    <Location '/login/'>
      AuthType Basic
      AuthName "Gerrit Code Review"
      Require admin
      AuthBasicProvider file
       # gerrit.assword就是你创建的登录用户、密码存储的地方 创建命令如下
       # htpasswd -c /opt/gerrit/etc/gerrit.password admin 
       # htpasswd -m /opt/gerrit/etc/gerrit.password zyp
      AuthUserFile  /opt/gerrit/etc/gerrit.password 
    </Location>
    AllowEncodedSlashes On
    ProxyPass / http://192.168.1.100:8081/
 
</VirtualHost>

gerrit.config配置文件:

[gerrit]
	basePath = git
	canonicalWebUrl = http://192.168.1.100:8081
	serverId = c2681fe1-2f8f-4da4-b074-8e23f6dfe942
[container]
	javaOptions = "-Dflogger.backend_factory=com.google.common.flogger.backend.log4j.Log4jBackendFactory#getInstance"
	javaOptions = "-Dflogger.logging_context=com.google.gerrit.server.logging.LoggingContext#getInstance"
	user = root
	javaHome = /usr/lib/jvm/java-11-openjdk-amd64
[database]
  type = mysql
  hostname = localhost
  database = reviewdb
  username = gerrit
[index]
	type = lucene
[auth]
	type = HTTP
[receive]
	enableSignedPush = false
[sendemail]
	smtpServer = localhost
[sshd]
	listenAddress = *:29418
[httpd]
	listenUrl = proxy-http://192.168.1.100:8081/
[cache]
	directory = cache

报错截图如下 百度了下 说需要 在配置文件加下面三行 加了之后不报Invalid command ‘ProxyRequests’, perhaps misspelled or defined by a module not includ>这个错误,报另一个load加载下面这三行错误。草,哥放弃 用nginx代理

LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_http_module modules/mod_proxy_http.so
LoadModule proxy_http2_module modules/mod_proxy_http2.so

在这里插入图片描述

Nginx代理

nginx安装看这里:https://www.cnblogs.com/taiyonghai/p/6728707.html

cd /etc/nginx/
vim nginx.config
#http标签添加下面的配置
server {
       listen 80;
       server_name 192.168.1.100;
       allow all;
       deny all;

       auth_basic "Welcome to Gerrit Code Review Site!";
       # **gerrit.assword就是你创建的登录用户、密码存储的地方**
       htpasswd -c /opt/gerrit/etc/gerrit.password admin 
       htpasswd -m /opt/gerrit/etc/gerrit.password zyp
       # gerrit.assword内容如下
       # admin:$apr1$yfDrZyx7$oLljjjMhseobpsGm5PiDU1
       # zyp:$apr1$QmHYzxYL$k5vUEyn02ZFyDyKaWz.or/

       auth_basic_user_file /opt/gerrit/etc/gerrit.password;


       location / {
         proxy_pass http://192.168.1.100:8081;
         proxy_set_header X-Forwarded-For $remote_addr;
         proxy_set_header Host $host;
      }
  }

启动nginx

启动
[root@localhost ~]# /usr/local/nginx/sbin/nginx
停止/重启
[root@localhost ~]# /usr/local/nginx/sbin/nginx -s stop(quit、reload)
命令帮助
[root@localhost ~]# /usr/local/nginx/sbin/nginx -h
验证配置文件
[root@localhost ~]# /usr/local/nginx/sbin/nginx -t
配置文件
[root@localhost ~]# vim /usr/local/nginx/conf/nginx.conf

确认gerrit.config与nginx.config文件无误,启动nginx与gerrit

/usr/local/nginx/sbin/nginx -s reload
cd /opt/gerrit/bin/
./gerrit.sh restart

浏览器 http://192.168.1.100:80或者8081端口 访问成功
在这里插入图片描述

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

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

相关文章

无监督学习的评价指标

轮廓系数&#xff08;Silhouette Coefficient&#xff09; 轮廓系数用于判断聚类结果的紧密度和分离度。轮廓系数综合了样本与其所属簇内的相似度以及最近的其他簇间的不相似度。 其计算方法如下&#xff1a; 1、计算簇中的每个样本i 1.计算a&#xff08;i&#xff09; &#x…

实时采集麦克风并播放(springboot+webscoekt+webrtc)

项目技术 springbootwebscoektwebrtc 项目介绍 项目通过前端webrtc采集麦克风声音&#xff0c;通过websocket发送后台&#xff0c;然后处理成g711-alaw字节数据发生给广播UDP并播放。 后台处理项目使用线程池(5个线程)接受webrtc数据并处理g711-alaw字节数组放到Map容器中&…

opencv基础篇 ——(九)图像几何变换

图像几何变换是通过对图像的几何结构进行变换来改变图像的形状、大小、方向或者透视关系。常见的图像几何变换包括缩放、旋转、平移、仿射变换和透视变换等。下面对这些几何变换进行简要介绍&#xff1a; 矩阵的转置&#xff08;transpose &#xff09;&#xff1a; 对于图像来…

吴恩达2022机器学习专项课程(一) 7.1 逻辑回归的成本函数第三周课后实验:Lab4逻辑回归的损失函数

问题预览/关键词 上节课回顾逻辑回归模型使用线性回归模型的平方误差成本函数单个训练样本的损失损失函数&#xff0c;成本函数&#xff0c;代价函数的区别线性回归损失函数和逻辑回归损失函数的区别逻辑回归模型的成本函数是什么&#xff1f;逻辑回归模型的损失函数实验逻辑回…

STL——List常用接口模拟实现及其使用

认识list list的介绍 list是可以在常数范围内在任意位置进行插入和删除的序列式容器&#xff0c;并且该容器可以前后双向迭代。 list的底层是双向链表结构&#xff0c;双向链表中每个元素存储在互不相关的独立节点中&#xff0c;在节点中通过指针指向其前一个元素和后一个元素…

linux tcpdump的交叉编译以及使用

一、源码下载 官网&#xff1a;点击跳转 二、编译 1、解压 tar -xf libpcap-1.10.4.tar.xz tar -xf tcpdump-4.99.4.tar.xz 2、配置及编译 //libpcap&#xff1a; ./configure --hostarm-linux --targetarm-linux CCarm-linux-gcc --with-pcaplinux --prefix$PWD/build//t…

对象与JSON字符串互转

1、JSON字符串转化成JSON对象 JSONObject jsonobject JSON.parseObject(str); 或者 JSONObject jsonobject JSONObject.parseObject(str); 功能上是一样的&#xff0c;都是将JSON字符串&#xff08;str&#xff09;转换成JSON对象 jsonobject 。注意str一定得是以键值对存在…

STM32之HAL开发——电容按键

电容按键原理 电容器 (简称为电容) 就是可以容纳电荷的器件&#xff0c;两个金属块中间隔一层绝缘体就可以构成一个最简单的电容。如图 32_1 (俯视图)&#xff0c;有两个金属片&#xff0c;之间有一个绝缘介质&#xff0c;这样就构成了一个电容。这样一个电容在电路板上非常容…

二维数组求最大值(C语言)

一、N-S流程图&#xff1b; 二、运行结果&#xff1b; 三、源代码&#xff1b; # define _CRT_SECURE_NO_WARNINGS # include <stdio.h>int main() {//初始化变量值&#xff1b;int i, j, max 0, row 0, colum 0;int arr[3][4] { {1, 2, 3}, {4, 5, 16}, {7, 8, 9} …

线上办理离婚快速离婚,无需双方见面异地可办

现在离婚有两种方式 一种是协议离婚&#xff0c;双方都同意的情况下&#xff0c;可以去民政局协议离婚&#xff0c;有30天冷静期&#xff0c;冷静期过后需要双方再次去民政局办理离婚手续。 另一种是诉讼离婚&#xff0c;一方不同意离婚&#xff0c;可以选择诉讼离婚。可以全…

Vue 3 路由机制详解与实践

一、路由的理解 路由是指导用户界面导航的一种机制。它通过映射 URL 到应用程序的不同视图组件来实现页面间的切换和导航。 二、路由基本切换效果 路由基本切换效果指的是当用户在应用程序中进行页面导航时&#xff0c;通过路由可以实现页面的切换&#xff0c;从而展示不同的…

ICMP详解

3 ICMP ICMP&#xff08;Internet Control Message Protocol&#xff0c;因特网控制报文协议&#xff09;是一个差错报告机制&#xff0c;是TCP/IP协议簇中的一个重要子协议&#xff0c;通常被IP层或更高层协议&#xff08;TCP或UDP&#xff09;使用&#xff0c;属于网络层协议…

CTF(web方向)--md5的“===”和“==”的绕过

一、PHP弱类型说明 1.简介 php是一种弱类型语言&#xff0c;对数据的类型要求并不严格&#xff0c;可以让数据类型互相转换。 在php中有两种比较符号: 一种是 &#xff0c;另外一种是 &#xff0c;都是用来比较两个数值是否相等的操作符&#xff0c;但他们也是有区别的: &a…

Linux 小技巧1

目录 一. 统计文件的总行数二. 获取从第二行开始的内容三. 合并两个文件为一个文件四. 统计指定列唯一值的数量五. 列出文件的绝对路径六. 获取除了空白行和注释之外的部分 一. 统计文件的总行数 ⏹非压缩文件 统计当前文件夹下csv文件的行数 wc -l ./*.csv统计指定文件夹下…

想要应聘前端工程师——学习路线指南

前端工程师学习路线 按照前端岗位需求,以优先学习工作更需要,面试更常考的内容为原则,由浅入深,层层铺垫,与时俱进,可以较容易地总结出前端学习路线图: HTML / CSS / JavaScript 基础学习 《Web 入门》 MDN 权威入门指南,HTML / CSS / JavaScript 快速上手 《CSS 世界…

面试中算法(链表)

链表相关的题 有一个单向链表&#xff0c;链表中有可能出现“环”&#xff0c;如图所示&#xff0c;如何用程序来判断该链表是否为有环链表呢? 对于这道题&#xff0c;有一个很巧妙的方法&#xff0c;这个方法利用了两个指针。 首先创建两个指针pi和p2(在Python里就是两个对象…

【问题分析】TaskDisplayArea被隐藏导致的黑屏以及无焦点窗口问题【Android 14】

1 问题描述 用户操作出的偶现的黑屏以及无焦点窗口问题。 直接原因是&#xff0c;TaskDisplayArea被添加了eLayerHidden标志位&#xff0c;导致所有App的窗口不可见&#xff0c;从而出现黑屏和无焦点窗口问题&#xff0c;相关log为&#xff1a; 这个log是MTK添加的&#xff0…

目标检测——YOLOv8算法解读

作者&#xff1a;Ultralytics公司 代码&#xff1a;https://github.com/ultralytics/ultralytics YOLO系列算法解读&#xff1a; YOLOv1通俗易懂版解读、SSD算法解读、YOLOv2算法解读、YOLOv3算法解读、YOLOv4算法解读、YOLOv5算法解读、YOLOR算法解读、YOLOX算法解读、YOLOv6算…

7. Django 模型与数据库

第7章 模型与数据库 Django对各种数据库提供了很好的支持, 包括PostgreSQL, MySQL, SQLite和Oracle, 而且为这些数据库提供了统一的API方法, 这些API统称为ORM框架. 通过使用Django内置的ORM框架可以实现数据库连接和读写操作. 本章以SQLite数据库为例, 分别讲述Django的模型…

统一威胁情报如何赋能SOC应对复杂威胁?

安全运营中心&#xff08;SOC&#xff09;是组织网络安全战略的核心组成部分&#xff0c;扮演着至关重要的角色。其负责实时监控整个IT基础设施&#xff0c;以检测、响应和预防各类网络安全威胁。网络安全威胁日益复杂且多变的数字化时代&#xff0c;攻击平面泛化、基础设施复杂…