【Linux】在Ubuntu 16.04上安装Gerrit + PostgreSQL + Apache服务

Gerrit是一个基于Git版本控制系统的运行于Web浏览器上的Code Review工具,本文叙述如何在Ubuntu 16.04上安装Gerrit服务。(当然安装Gerrit的方法有很多,本文只是其中之一)

文章目录

  • 前提
  • 安装PostgreSQL数据库并创建用户
  • 下载、配置和运行Gerrit服务
  • 安装Apache进行反向代理
  • 配置登录账号密码
  • 重启服务,验证效果

前提

依照本文实践的前提如下:

  1. 一台具有公网IP地址的ECS服务器
  2. 服务器有访问公网资源的权限
  3. 服务器的操作系统为Ubuntu 16.04
  4. 操作者拥有对ECS服务器的网络控制权限
  5. 已经安装了Java运行环境(JRE)

安装PostgreSQL数据库并创建用户

apt install postgresql
# 创建pg用户名 pguser
sudo -u postgres createuser -RDIElPS <pguser>
# 创建pg数据库 pgdb
sudo -u postgres createdb -E UTF-8 -O <pguser> <pgdb>

下载、配置和运行Gerrit服务

下载页面地址 https://gerrit-releases.storage.googleapis.com/index.html ,目前最新版是 gerrit-2.16.5.war ,我们以它为例。

下载完成后开始运行如下命令进行配置:(注意修改/your/target/site_directory)

java -jar /your/path/to/gerrit-2.16.5.war -d /your/target/site_directory

在下面的交互式设置中,进行相应输入(其中的邮箱配置以阿里云邮为例):

*** Gerrit Code Review 2.16.5
*** 
Create '/your/target/site_directory' [Y/n]? Y
*** Git Repositories
*** 
Location of Git repositories [git]: [Enter]
*** SQL Database
*** 
Database server type [h2]: postgresql
Server hostname [localhost]: [Enter]
Server port [(postgresql default)]: [Enter]
Database name [reviewdb]: <pgdb>
Database username [root]: <pguser>
<pguser>'s password : <pgpwd>confirm password : <pgpwd>
*** Index
*** 
Type [lucene/?]: [Enter]
*** User Authentication
*** 
Authentication method [openid/?]: http
Get username from custom HTTP header [y/N]? [Enter]
SSO logout URL : [Enter]
Enable signed push support [y/N]? [Enter]
*** Review Labels
*** 
Install Verified label [y/N]? [Enter]
*** Email Delivery
*** 
SMTP server hostname [localhost]: smtp.mxhichinacom
SMTP server port [(default)]: 25
SMTP encryption [none/?]: 
SMTP username [root]: 你的阿里云邮邮件地址
email@email.com's password : 你的邮件密码confirm password : 重复你的邮件密码
*** Container Process
*** 
Run as [root]: [Enter]
Java runtime [/usr/lib/jvm/jdk1.8.0_201/jre]: [Enter]
Copy gerrit-2.16.5.war to /your/target/site_directory/bin/gerrit.war [Y/n]? [Enter]
Copying gerrit-2.16.5.war to /your/target/site_directory/bin/gerrit.war
*** SSH Daemon
*** 
Listen on address [*]: 
Listen on port [29418]: 
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]? [Enter]
Subdirectory on proxy server [/]: [Enter]
Listen on address [*]: [Enter]
Listen on port [8081]: [Enter]
Canonical URL [http://<your.ip:port>/]: 
*** Cache
*** 
*** Plugins
*** 
Installing plugins.
Install plugin codemirror-editor version v2.16.5 [y/N]? [Enter]
Install plugin commit-message-length-validator version v2.16.5 [y/N]? [Enter]
Install plugin download-commands version v2.16.5 [y/N]? [Enter]
Install plugin hooks version v2.16.5 [y/N]? [Enter]
Install plugin replication version v2.16.5 [y/N]? [Enter]
Install plugin reviewnotes version v2.16.5 [y/N]? [Enter]
Install plugin singleusergroup version v2.16.5 [y/N]? [Enter]
Initializing plugins.
No plugins found with init steps.

进行完以上初始化步骤之后,还可以进一步在/your/target/site_directory/etc/gerrit.config中修改配置。例如,我们在邮件配置中加入一条from属性:

[sendemail]smtpServer = smtp.mxhichinacomsmtpServerPort = 25smtpUser = email@email.comfrom = CodeReview<email@email.com>

这样Gerrit服务就配置完成了,我们重启Gerrit:

/your/target/site_directory/bin/gerrit.sh restart

安装Apache进行反向代理

安装Apache:

apt install apache2

编辑Apache配置/etc/apache2/sites-enabled/000-default.conf,注意和你刚刚对Gerrit服务做的配置保持一致(例如8081端口、/your/target/site_directory/etc/passwords密码文件路径):

<VirtualHost *:80>ServerName <你的主机名>ProxyRequests OffProxyVia OffProxyPreserveHost On<Proxy *>Order deny,allowAllow from all</Proxy><Location /login/>AuthType BasicAuthName "Welcome to Gerrit Code Review Site"Require valid-userAuthUserFile /your/target/site_directory/etc/passwords</Location>AllowEncodedSlashes OnProxyPass / http://127.0.0.1:8081/
</VirtualHost>

配置登录账号密码

由于在上一步配置了密码文件路径,用于鉴权,我们需要在文件中添加账号信息。

touch /your/target/site_directory/etc/passwords
/usr/bin/htpasswd -b review_site/etc/passwords <你的Gerrit用户名> <密码>

重启服务,验证效果

service apache2 restart
/your/target/site_directory/bin/gerrit.sh restart

打开网页地址 http://<你的主机名>:80/,观察效果:
在这里插入图片描述

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

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

相关文章

【飞舞的花瓣】飞舞的花瓣代码||樱花代码||表白代码(完整代码)

关注微信公众号「ClassmateJie」有完整代码以及更多惊喜等待你的发现。 简介/效果展示 这段代码是一个HTML页面&#xff0c;其中包含一个canvas元素和相关的JavaScript代码。这个页面创建了一个飘落花瓣的动画效果。 代码【获取完整代码关注微信公众号「ClassmateJie」回复“…

一步将 CentOS 7.X 原地升级并迁移至 RHEL 7.9

《OpenShift / RHEL / DevSecOps 汇总目录》 在《在离线环境中将 CentOS 7.X 原地升级并迁移至 RHEL 7.9》一文中为了实现从 CentOS 7.X 原地升级并迁移至 RHEL 7.9&#xff0c;我们第一步先将一个测试环境 CentOS 7.5 升级到 CentOS 7.9&#xff0c;然后在第二步使用 convert2…

抖音运营_如何开抖店

截止20年8月&#xff0c;抖音的日活跃数高达6亿。 20年6月&#xff0c;上线抖店 &#xff08;抖音官方电商&#xff09; 一 抖店的定位和特色 1 一站式经营 帮助商家进行 商品交易、店铺管理、客户服务 等全链路的生意经营 2 多渠道拓展 抖音、今日头条、西瓜、抖音火山版…

【Python】用于发送电子邮件的标准库smtplib和构建邮件主体、添加附件、设置收件人的email

欢迎来到《小5讲堂》 这是《Python》系列文章&#xff0c;每篇文章将以博主理解的角度展开讲解。 温馨提示&#xff1a;博主能力有限&#xff0c;理解水平有限&#xff0c;若有不对之处望指正&#xff01; 目录 插件介绍邮件代码扩展知识点文章推荐 插件介绍 smtplib 是 Pytho…

海外媒体发稿的关键步骤和投稿策略:如何撰写高质量的新闻稿?国外软文发布平台有哪些?

发布国外新闻稿件是一个涉及多步骤的过程&#xff0c;旨在确保您的新闻稿能够有效覆盖目标受众。以下是一些关键步骤和实用的技巧&#xff0c;帮助你实现海外媒体发稿。 1. 明确目标和受众 首先&#xff0c;明确您发布新闻稿的目标&#xff0c;是为了增加品牌曝光、推出新产品…

惊呆了!企业数字化转型竟如工厂生产?

在众多使用蚓链数字化生态系统解决方案实现数字化转型的企业&#xff0c;你能想象吗&#xff1f;如今的企业数字化转型&#xff0c;就如同一家工厂的生产过程&#xff01;数据成为了原材料&#xff0c;而数据资源则是场景化的零件&#xff0c;最终生产出满足市场需求的数据产品…

基于Kafka的日志采集

目录 前言 架构图 资源列表 基础环境 关闭防护墙 关闭内核安全机制 修改主机名 添加hosts映射 一、部署elasticsearch 修改limit限制 部署elasticsearch 修改配置文件 启动 二、部署filebeat 部署filebeat 添加配置文件 启动 三、部署kibana 部署kibana 修…

21-信号集处理函数

屏蔽信号集 屏蔽某些信号 手动自动 未处理信号集 信号如果被屏蔽&#xff0c;则记录在未处理信号集中 非实时信号&#xff08;1~31&#xff09;&#xff0c;不排队&#xff0c;只留一个实时信号&#xff08;34~64&#xff09;&#xff0c;排队&#xff0c;保留全部 信号集…

springmvc中HandlerMapping是干什么用的

HandlerMapping处理器映射器 作用是根据request找到相应的处理器Handler和Interceptors&#xff0c;然后封装成HandlerExecutionChain对象返回 HandlerExecutionChain getHandler(HttpServletRequest request) throws Exception; 实现类 HandlerMapping帮助DispatcherServlet进…

【AD21】BOM表文件的输出

BOM表文件通常发给采购&#xff0c;采购可以购买BOM表中所需的元器件。 在菜单栏中点击报告->Bill of Materials。 在以下界面&#xff0c;点击Columns&#xff0c;对输出的BOM表中一些说明进行不显示&#xff0c;可以不显示Description和LibRef。值&#xff0c;位号&#…

文心智能体【焦虑粉碎机】——帮你赶走“坏”情绪

目录&#xff1a; 引言1.登录 文心智能体平台2.创建智能体3.配置智能体&#x1f337; 头像设置&#x1f337; 名称设置&#x1f337; 简介设置&#x1f337;指令设置&#x1f337; 开场白设置&#x1f337; 引导示例设置 4.使用智能体 引言 随着ChatGPT的爆火&#xff0c;人工智…

【Python】 掌握 Flask 请求数据获取的艺术

基本原理 在Web开发中&#xff0c;Flask是一个用Python编写的轻量级Web应用框架。它被广泛用于快速开发简单的Web应用。当用户通过浏览器或其他客户端向服务器发送请求时&#xff0c;Flask需要能够接收和解析这些请求中的数据。这些数据可以是GET请求的查询字符串、POST请求的…

【算法】分治 - 快速排序

快乐的流畅&#xff1a;个人主页 个人专栏&#xff1a;《算法神殿》《数据结构世界》《进击的C》 远方有一堆篝火&#xff0c;在为久候之人燃烧&#xff01; 文章目录 引言一、颜色分类二、排序数组三、数组中的第k个数四、最小的k个数总结 引言 本节主要介绍快速排序&#xf…

swust oj 1012: 哈希表(链地址法处理冲突)

直接采用二维数组模拟实现 #include <iostream> using namespace std; const int N 100; int arr[N][N]; int point[N];//计数int main() {int m, n,data;cin >> m >> n;for (int i 0; i < n; i){cin >> data;int key data % m;arr[key][point[…

对于高速信号完整性,一块聊聊啊(10)

本文包含的主要内容有: 过孔设计概述:从前面的各种基础知识到过孔设计,逐步对信号完整性有了初步了解,在过孔设计这里稍微做一个概述,也是个人的一些理解,算是一个小结。 过孔设计的必要性。 过孔结构的基础知识 实例:过孔设计仿真HFSS实例 过孔设计概述 通过前面…

题目----力扣--回文链表

题目 给你一个单链表的头节点 head &#xff0c;请你判断该链表是否为 回文链表 。如果是&#xff0c;返回 true &#xff1b;否则&#xff0c;返回 false 。 示例 1&#xff1a; 输入&#xff1a;head [1,2,2,1] 输出&#xff1a;true示例 2&#xff1a; 输入&#xff1a;…

Kafka-生产者(producer)发送信息流程详解

Kafka概述 在 Kafka 消息发送的过程中&#xff0c;涉及到了两个重要的线程&#xff1a;主线程&#xff08;main thread&#xff09;和发送线程&#xff08;Sender thread&#xff09;。 1.主线程&#xff08;main thread&#xff09;&#xff1a; 应用程序在主线程中创建 Kaf…

详解CSS(三)及案例实现

目录 1.弹性布局 1.1 弹性布局案例 1.2flex 布局基本概念 1.3常用属性 1.3.1justify-content 1.3.2align-items 2.案例实现&#xff1a;小广告 3.案例实现&#xff1a;百度热榜 1.弹性布局 弹性布局&#xff08;Flex布局&#xff09;是一种用于创建自适应和响应式布局的…

“AIGC行业投资时机分析:评估当前市场发展阶段与未来需求趋势“

文章目录 每日一句正能量前言行业前景当前发展前景相关领域的发展趋势行业潜力竞争情况结论 市场需求人才需求情况机会挑战结论 选择与规划自我评估行业调研职业规划风险管理个人陈述示例 后记 每日一句正能量 胖了就减&#xff0c;没钱就赚&#xff0c;不会就学&#xff0c;不…

男士内裤什么材质的好?推荐男士内裤的注意事项

天气已经逐渐热了起来&#xff0c;广大男士们在夏天难免会出一身的汗&#xff0c;不少男士朋友都觉得一些吸湿性、透气性不好的内裤会在夏天穿着很不适&#xff0c;想挑选一些比较适合夏天的男士内裤&#xff0c;但现在的男士内裤品牌和材质分类却比较多&#xff0c;看得大家眼…