搭建Gerrit环境Ubuntu
搭建Gerrit环境
1.安装apache
sudo apt-get install apache2
注意:To run Gerrit behind an Apache server using 'mod_proxy', enable the necessary
Apache2 modules:
执行:sudo a2enmod proxy_http
执行:sudo a2enmod ssl
使新的配置生效,需要执行如下命令:service apache2 restart
2.安装PostgreSQL数据库
sudo apt-get install postgresql
注意:安装完postgresql后,会自动创建一个用户名和密码均为postgres的账户。
3.增加Gerrit需要的数据库
执行:sudo -u postgres createuser -RDIElPS zmj
执行:sudo -u postgres createdb -E UTF-8 -O zmj reviewdb
4.安装Gerrit
在Gerrit官网上下载Gerrit安装包 https://www.gerritcodereview.com/ 点击Download 下载gerrit-3.7.0.war
创建目录 mkdir gerrit
进入目录 cd gerrit
如果zmj@ubuntu:~/gerrit$ java -jar gerrit-3.7.0.war init -d review_site 提示
Command 'java' not found, but can be installed with:sudo apt install default-jre
sudo apt install openjdk-11-jre-headless
sudo apt install openjdk-8-jre-headless
下载sudo apt install openjdk-11-jre-headless 后再次执行命令
指定git存储仓库 gerr 把gerr文件名改为git
[root@localhost gerrit]# java -jar gerrit-3.1.3.war init -d review_site根据提示一步步安装gerrit*** Gerrit Code Review 3.1.3***Create '/usr/local/src/gerrit/review_site' [Y/n]? y#程序会自动创建该文件,必须输入”Y“,如果输入"N"则程序会退出,默认就是"Y",因此我们直接回车应该也可以的*** Git Repositories***Location of Git repositories [git]:/home/zmj/gerr#指定Git存储库,最好指定一个不存在的目录,他会自动创建。*** Index***Type [lucene/?]:#默认即可。*** User Authentication***Authentication method [openid/?]: HTTP#认证方法输入HTTP,我们要使用反向代理Get username from custom HTTP header [y/N]? n#询问咱们是否从自定义HTTP头获取用户名,我们输入”n“SSO logout URL :Enable signed push support [y/N]? y#启用签名的推送支持*** Review Labels***Install Verified label [y/N]?#安装已验证标签,默认即可。SMTP server hostname [localhost]: smtp.exmail.qq.com#输入自动发送邮件的smtp服务器,这里我们用的是腾讯企业邮箱SMTP server port [(default)]: 465#465/994时SSL协议端口后,25是非SSL协议端口号SMTP encryption [none/?]: SSL#如果上一步输入的是465/994,此处输入SSL,否则直接回车即可SMTP username [root]: jsyfzxqa@corp.to8to.com#此处是你定义自动发送邮件的邮箱地址jsyfzxqa@corp.to8to.com's password :#接着我们需要输入2次咱们邮箱的授权码。 confirm password :Run as [root]: #指定容器运行的进程用户,默认为root用户,我们默认即可Java runtime [/yinzhengjie/softwares/jdk1.8.0_201/jre]:#JAVA的运行环境。如果它识别的有误,你可以指定你服务器的环境Copy gerrit-3.1.3.war to review_site/bin/gerrit.war [Y/n]? y#拷贝gerri安装包Copy gerrit-3.1.3.war to review_site/bin/gerrit.war*** SSH Daemon***Listen on address [*]: n #指定SSH后台服务的监听地址Listen on port [29418]:#指定SSH后台服务的端口号Generating SSH host key ... rsa... ed25519... ecdsa 256... ecdsa 384... ecdsa 521... done*** HTTP Daemon***Behind reverse proxy [y/N]? y#使用发向代理Proxy uses SSL (https://) [y/N]? n#不适用SSLSubdirectory on proxy server [/]:#指定代理服务器的子目录,默认为"/"路径,默认即可Listen on address [*]:#只当gerrit服务的监听地址Listen on port [8081]: 8888#指定gerrit的服务端口Canonical URL [[http://localhost/]:#指定标准连接,咱们默认即可
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-AgXDzd1d-1678182424984)(C:\Users\zhangmj2\Desktop\VMware Workstation\图片\image-20230110113520808.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-nhw43NoT-1678182424986)(C:\Users\zhangmj2\Desktop\VMware Workstation\图片\image-20230110113545210.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-4Pk7yWDj-1678182424987)(C:\Users\zhangmj2\Desktop\VMware Workstation\图片\image-20230110113602761.png)]
5.邮箱配置
进入到对应的目录下 /home/zmj/gerrit/review_site/etc
修改gerrit.config文件 在sendemail部分添加from配置
[sendemail] 发送邮件smtpServer = smtp.mxhichina.comsmtpServerPort = 25 端口号smtpUser = 邮箱地址 from=CodeReview<邮箱地址> 代码审查 邮箱地址[gerrit]
basePath = git
canonicalWebUrl = http://192.168.168.128/ //nginx的代理端口 .........[httpd]
listenUrl = http://*:8080/
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-HKAhw2f0-1678182424988)(C:\Users\zhangmj2\Desktop\VMware Workstation\图片\image-20230110115804892.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-jrCs0Ujy-1678182424989)(C:\Users\zhangmj2\Desktop\VMware Workstation\图片\image-20230110145430678.png)]
6.重启Gerrit
cd gerrit/review_site/
./bin/gerrit.sh restart
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-nTiyINun-1678182424990)(C:\Users\zhangmj2\Desktop\VMware Workstation\图片\image-20230110132740585.png)]
7.Apache反向代理配置
编辑/etc/apache2/sites-enabled/000-default.conf
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-33ZnGl73-1678182424990)(C:\Users\zhangmj2\Desktop\VMware Workstation\图片\image-20230110133931636.png)]](https://img-blog.csdnimg.cn/b5ec61fd41bf40a4871aa7ffb446ac12.png)
vim 000-default.conf 修改文件,修改文件后现在文件是链接文件,无法保存。
命令行sudo vim 000-default.conf 并输入密码即可
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ZGegykYh-1678182424991)(C:\Users\zhangmj2\Desktop\VMware Workstation\图片\image-20230110142115615.png)]](https://img-blog.csdnimg.cn/06573046c3924969873690b6a540c5c3.png)
注意:The ProxyPass 8080 must be same with the ./review_site/etc/gerrit.config.
When access the http://192.168.168.128:80,Apache2 will lead you to
http://192.168.168.128:8080.
ProxyPass 8080必须和./review_site/etc/gerrit.config里的端口配置一致。当登录http://192.168.168.128:80的时候,Apache2会帮助打开http://192.168.168.128:8080。
<VirtualHost 192.168.1.179:80>ProxyRequests OffProxyVia OffProxyPreserveHost On
<Proxy *> Order deny,allowAllow from all
</Proxy>
<Location /login/>AuthType BasicAuthName "Welcome to Gerrit Code Review Site!"Require valid-userAuthUserFile /home/zmj/gerrit/review_site/etc/passwords
</Location>
AllowEncodedSlashes On
ProxyPass / http://127.0.0.1:8080/
</VirtualHost>
8.重启Apache服务
service apache2 restart
9.添加Gerrit账户
touch /home/zmj/gerrit/review_site/etc/passwords 创建密码文件
要在Gerrit的配置文件下创建用户
cd /home/zmj/gerrit/review_site/etc
htpasswd -m passwords zmj 创建zmj用户 密码为1
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-pNLCJ43f-1678182424991)(C:\Users\zhangmj2\Desktop\VMware Workstation\图片\image-20230110140818329.png)]](https://img-blog.csdnimg.cn/b23e7380f6a04e3c8e2dd522df7e00e2.png)
10.访问http://192.168.168.128:80
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-0qr0gFQA-1678182424992)(C:\Users\zhangmj2\Desktop\VMware Workstation\图片\image-20230110151237692.png)]](https://img-blog.csdnimg.cn/f01029fe6414484895bb7a08be209a8d.png)
安装php
sudo apt-get update更新
sudo apt-get install language-pack-en-base software-sudo properties-common -y 解决语言冲突和中文乱码
sudo locale-gen en_US.UTF-8 语言环境
sudo apt-get install vim -y 安装vim
sudo LC_ALL=en_US.UTF-8 add-apt-repository ppa:ondrej/php 使用ppa安装php (需要回车)
sudo apt-get update 再次更新
sudo apt-get install php7.4 php7.4-fpm php7.4-cli php7.4-dev php7.4-redis php7.4-mysql php7.4-curl php7.4-xml php7.4-json php7.4-gd php7.4-mbstring php7.4-zip php7.4-bcmath -y 安装php和相关组件
php -v查看php版本
sudo apt-get install nginx -y 下载nginx
nginx -v 显示版本
sudo apt-get install mysql-server -y
nginx -v 显示版本
11.搭建gitweb
sudo apt-get install gitweb
通过git config配置一下
git config --file /home/zmj/gerrit/review_site/etc/gerrit.config gitweb.cgi /var/www/git/gitweb.cgi
git config --file /home/zmj/gerrit/review_site/etc/gerrit.config --unset gitweb.url
重启Gerrit
cd gerrit/review_site/
./bin/gerrit.sh restart
git config --global --unset /home/zmj/gerrit/review_site/etc/gerrit.config gitweb.cgi /var/www/git/gitweb.cgi
git config --unset /home/zmj/gerrit/review_site/etc/gerrit.config --unset gitweb.url相关文章:
搭建Gerrit环境Ubuntu
搭建Gerrit环境 1.安装apache sudo apt-get install apache2 注意:To run Gerrit behind an Apache server using mod_proxy, enable the necessary Apache2 modules: 执行:sudo a2enmod proxy_http 执行:sudo a2enmod ssl 使新的配置生效,需要执行如下命令:serv…...
朋友去华为面试,轻松拿到26K的Offer,羡慕了......
最近有朋友去华为面试,面试前后进行了20天左右,包含4轮电话面试、1轮笔试、1轮主管视频面试、1轮hr视频面试。 据他所说,80%的人都会栽在第一轮面试,要不是他面试前做足准备,估计都坚持不完后面几轮面试。 其实&…...
springboot项目如何配置启动端口
文章目录0 写在前面1 配置文件(.yaml)--推荐2 配置文件(.properties)3 IDEA配置--不推荐4 写在最后0 写在前面 项目启动需要一个独立的端口,所以在此记录一下。 根据配置文件的后缀书写格式略有不同。 1 配置文件(.yaml)–推荐 若是.yaml后缀的配置文件࿰…...
IOS - 抓包通杀篇
IOS中大多数情况,开发者都会使用OC提供的api函数,CFNetworkCopySystemProxySettings来进行代理检测; CFNetworkCopySystemProxySettings 检测函数直接会检测这些ip和端口等: 采用直接附加页面进程: frida -UF -l 通…...
盒子模型的简介
盒子的组成 一个盒子由外到内可以分成四个部分:margin(外边距)、border(边框)、padding(内边距)、content(内容)。会发现margin、border、padding是css属性,因…...
Kubernetes 101,第二部分,pod
在上一篇文章中,我们了解了Kubernetes 的基础知识以及对其主要架构的介绍。 介绍完毕后,就该探索如何在 Kubernetes 中运行应用程序了。 容器包装器 在 Kubernetes 中,我们无法直接创建单个容器。相反,为了更好,我们可以将容器包装成一个单元,其中包括: 规范:多个容器可…...
protobuf序列化解码原理
Protobuf的编码方式 Varints是一种紧凑表示数字的办法。他用一个或者多个字节表示一个数字,值越小的数字节节数越少。相对与传统的用4字节表示int32类型的数字,Varints对于小于128的数值都可以用一个字节表示,大于128的数值会用更多的字节来表…...
OpenCV——line、circle、rectangle、ellipse、polylines函数的使用和绘制文本putText函数以及绘制中文的方法。
学习OpenCV的过程中,画图是不可避免的,本篇文章旨在介绍OpenCV中与画图相关的基础函数。 1、画线条——line()函数 介绍: cv2.line(image, start_point, end_point, color, thickness)参数: image: 图像start_point:…...
性能平台数据提速之路
作者 | 性能中台团队 导读 性能平台负责MEG所有研发数据的管理、接入、传输、应用等各个环节。数据的提速对于公司报表建设、决策分析、转化策略效果都有至关重要的影响。重点介绍数据生产端与消费端提速落地实践,如何高性价比满足大数据生产端提速?如何…...
Dns域名解析服务器
前言 域名解析服务器的介绍 域名服务器的类型划分 DNS域名解析的过程 为什么需要DNS解析域名为IP地址? 通俗理解Dns DNS劫持 DNS污染 Dns面试经验 前言 DNS是一个应用层协议,用来获取域名对应的IP地址 域名解析服务器的介绍 DNS(Dom…...
关于 JavaScript 中的 Promises
在 JavaScript 中,Promise 是一个对象,它表示一个可能还不可用,但会在未来解决的值。Promises 用于处理异步操作,例如发出网络请求或访问数据库,其中结果不是立即可用的。如果你准备好了,我想开始我们的冒险…...
PMP考前冲刺题——错题集
3、 [多选] 采购部门需要向全球不同的供应商采购项目所需的各种商品,所有采购订单均己发送给供应商并已按要求处理。项目经理后来收到客户提出的变更请求。由于项目经理未及时通知采购部门,运抵的所有物品都是按原来的需求所提供。 项目经理本应做什么来…...
【C++】30h速成C++从入门到精通(多态)
多态的概念多态:通俗来说就是多种心态,具体点就是去完成某个行为,当不同的对象去完成时会产生出不同的状态。多态的定义及实现多态的构成条件多态是在不同继承关系的类对象,去调用同意函数,产生了不同的行为࿰…...
从proc文件系统中获取gateway的IP地址
在linux的命令行下获取当前网络环境的gateway的IP并不是一件难事,常用的命令有ip route或者route -n,其实route -n也是通过读取proc文件系统下的文件来从内核获取路由表的,但ip route是通过netlink来获取的路由表;本文将讨论如何编写程序从proc文件系统中获取路由表,并从路…...
【LeetCode】剑指 Offer(17)
目录 题目:剑指 Offer 34. 二叉树中和为某一值的路径 - 力扣(Leetcode) 题目的接口: 解题思路: 代码: 过啦!!! 写在最后: 题目:剑指 Offer …...
MySQL索引类型
MySQL 是最流行的关系型数据库管理系统,属于 Oracle 旗下产品。MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的 RDBMS (Relational Database Management System,关系数据库管理系统) 应用软件之一。 索…...
你了解HashMap吗?
一、前言:面试过的人都知道,HashMap是Java程序员在面试中最最最经常被问到的一个点,可以说,不了解HashMap都不好意思说自己是做Java开发的。基本上你去面试十家公司,有七八家都会问到你HashMap。那么今天,就…...
我一个女孩子居然做了十年硬件……
2011年,一个三本大学的电子信息专业的大三女学生跟2个通信专业的大二男生组成了一组代表学校参加2011年“瑞萨杯”全国大学生电子设计大赛,很意外的获得了湖北赛区省三等奖,虽然很意外,但还是挺高兴的,毕竟第一次为喜欢…...
【Linux】编译器gcc g++和调试器gdb的使用
文章目录1.编译器gcc/g1.1C语言程序的翻译过程1.预处理2.编译3.汇编4. 链接1.2 链接方式与函数库1.动态链接与静态链接2.动态库与静态库1.3 gcc与g的使用2.调试器gdb2.1debug和release2.2gdb的安装2.3gdb的使用2.4gdb的常用指令3.总结1.编译器gcc/g 1.1C语言程序的翻译过程 1…...
高效能自动化港口数字化码头智慧港航,中国人工智能企业CIMCAI世界港航人工智能领军者,成熟港口码头人工智能产品中国人工智能企业
打造高效能自动化港口数字化码头智慧港航,中国人工智能企业CIMCAI中集飞瞳世界港航人工智能领军者,成熟港口码头人工智能产品全球顶尖AI科技CIMCAI成熟AI产品全球前三船公司及港口落地,包括全球港口/堆场智能闸口验箱,全球港口岸边…...
在软件开发中正确使用MySQL日期时间类型的深度解析
在日常软件开发场景中,时间信息的存储是底层且核心的需求。从金融交易的精确记账时间、用户操作的行为日志,到供应链系统的物流节点时间戳,时间数据的准确性直接决定业务逻辑的可靠性。MySQL作为主流关系型数据库,其日期时间类型的…...
Golang 面试经典题:map 的 key 可以是什么类型?哪些不可以?
Golang 面试经典题:map 的 key 可以是什么类型?哪些不可以? 在 Golang 的面试中,map 类型的使用是一个常见的考点,其中对 key 类型的合法性 是一道常被提及的基础却很容易被忽视的问题。本文将带你深入理解 Golang 中…...
AtCoder 第409场初级竞赛 A~E题解
A Conflict 【题目链接】 原题链接:A - Conflict 【考点】 枚举 【题目大意】 找到是否有两人都想要的物品。 【解析】 遍历两端字符串,只有在同时为 o 时输出 Yes 并结束程序,否则输出 No。 【难度】 GESP三级 【代码参考】 #i…...
Cilium动手实验室: 精通之旅---20.Isovalent Enterprise for Cilium: Zero Trust Visibility
Cilium动手实验室: 精通之旅---20.Isovalent Enterprise for Cilium: Zero Trust Visibility 1. 实验室环境1.1 实验室环境1.2 小测试 2. The Endor System2.1 部署应用2.2 检查现有策略 3. Cilium 策略实体3.1 创建 allow-all 网络策略3.2 在 Hubble CLI 中验证网络策略源3.3 …...
Golang dig框架与GraphQL的完美结合
将 Go 的 Dig 依赖注入框架与 GraphQL 结合使用,可以显著提升应用程序的可维护性、可测试性以及灵活性。 Dig 是一个强大的依赖注入容器,能够帮助开发者更好地管理复杂的依赖关系,而 GraphQL 则是一种用于 API 的查询语言,能够提…...
从零开始打造 OpenSTLinux 6.6 Yocto 系统(基于STM32CubeMX)(九)
设备树移植 和uboot设备树修改的内容同步到kernel将设备树stm32mp157d-stm32mp157daa1-mx.dts复制到内核源码目录下 源码修改及编译 修改arch/arm/boot/dts/st/Makefile,新增设备树编译 stm32mp157f-ev1-m4-examples.dtb \stm32mp157d-stm32mp157daa1-mx.dtb修改…...
反射获取方法和属性
Java反射获取方法 在Java中,反射(Reflection)是一种强大的机制,允许程序在运行时访问和操作类的内部属性和方法。通过反射,可以动态地创建对象、调用方法、改变属性值,这在很多Java框架中如Spring和Hiberna…...
C# 类和继承(抽象类)
抽象类 抽象类是指设计为被继承的类。抽象类只能被用作其他类的基类。 不能创建抽象类的实例。抽象类使用abstract修饰符声明。 抽象类可以包含抽象成员或普通的非抽象成员。抽象类的成员可以是抽象成员和普通带 实现的成员的任意组合。抽象类自己可以派生自另一个抽象类。例…...
精益数据分析(97/126):邮件营销与用户参与度的关键指标优化指南
精益数据分析(97/126):邮件营销与用户参与度的关键指标优化指南 在数字化营销时代,邮件列表效度、用户参与度和网站性能等指标往往决定着创业公司的增长成败。今天,我们将深入解析邮件打开率、网站可用性、页面参与时…...
蓝桥杯3498 01串的熵
问题描述 对于一个长度为 23333333的 01 串, 如果其信息熵为 11625907.5798, 且 0 出现次数比 1 少, 那么这个 01 串中 0 出现了多少次? #include<iostream> #include<cmath> using namespace std;int n 23333333;int main() {//枚举 0 出现的次数//因…...
