1.环境

本文使用VMWare虚拟机进行实验。

  • 2核CPU,4GB内存,20GB硬盘,IP:192.168.159.131
  • CentOS 7.2最小安装(CentOS-7-x86_64-Minimal-1511.iso)

2.需求

Gerrit支持多种数据库、多种认证方式(参考官网手册),这里使用

  • mariadb数据库
  • http认证
  • Apache http server作为web服务器,提供反向代理
  • gitweb作为Repository Browser

3.安装

3.1 安装软件

yum -y install git gitweb httpd mariadb-server

3.2 配置数据库

systemctl start mariadb
mysql

键入如下内容,这里密码是secret

CREATE USER 'gerrit2'@'localhost' IDENTIFIED BY 'secret';
CREATE DATABASE reviewdb DEFAULT CHARACTER SET 'utf8';
GRANT ALL ON reviewdb.* TO 'gerrit2'@'localhost';
FLUSH PRIVILEGES;

3.3 配置httpd反向代理

vim /etc/httpd/conf.d/gerrit.conf

键入如下内容

<VirtualHost *>
ServerName 192.168.159.131 ProxyRequests Off
ProxyVia Off
ProxyPreserveHost On <Proxy *>
Order deny,allow
Allow from all
</Proxy> <Location /login/>
AuthType Basic
AuthName "Gerrit Code Review"
AuthBasicProvider file
AuthUserFile /gerrit.password
Require valid-user
</Location> AllowEncodedSlashes On
ProxyPass / http://127.0.0.1:8081/
</VirtualHost>

注意,

  • ServerName根据自己实际情况来定, 我用的本机IP
  • gerrit的http认证方式,需要使用HTTP基本认证,这里使用文件(/gerrit.password,httpd要有访问权限才行)方式认证。
  • 反向代理设置,从根目录"/",代理到"http://127.0.0.1:8081/",注意端口8001后面有个斜线。8081是gerrit监听的端口,后面会提到。

启动httpd,将监听80端口(反向代理到8081端口)

systemctl start httpd

3.4 添加HTTP认证用户

touch /gerrit.passwd
htpasswd /gerrit.passwd "root"
New password:
Re-type new password:
Adding password for user root

这里添加了用户root,密码123456(跟Linux本地用户没有关系!)

这样首次访问gerrit时的用户将成为gerrit的管理员,若想再添加用户,需要先在/gerrit.passwd中添加,再登录gerrit。

3.5 安装JRE

官网下载Java SE Runtime Environment 8u162 Linux x64

jre-8u162-linux-x64.tar

tar zxvf jre-8u162-linux-x64.tar -C /opt
export JAVA_HOME=/opt/jre1.8.0_162
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/toos.jar

3.6 安装gerrit

3.6.1 添加用户
sudo adduser gerrit2
sudo su gerrit2

官网下载gerrit的war包gerrit-2.14.6.war,这里放至gerrit2的home目录

3.6.2 创建工作目录
mv gerrit-2.14.6.war gerrit.war
mkdir gerrit-test
3.6.3 安装

进入交互命令,蓝色粗体表示输入的内容

[gerrit2@ted ~]$ java -jar gerrit.war init -d gerrit-test/
Using secure store: com.google.gerrit.server.securestore.DefaultSecureStore
[-- ::,] [main] INFO com.google.gerrit.server.config.GerritServerConfigProvider : No /home/gerrit2/gerrit-test/etc/gerrit.config; assuming defaults *** Gerrit Code Review 2.14.
*** Create '/home/gerrit2/gerrit-test' [Y/n]y *** Git Repositories
*** Location of Git repositories [git]: #回车 *** SQL Database
*** Database server type [h2]: mariadb Gerrit Code Review is not shipped with MariaDB Connector/J 1.5.
** This library is required for your configuration. **
Download and install it now [Y/n]? y
Downloading https://repo1.maven.org/maven2/org/mariadb/jdbc/mariadb-java-client/1.5.9/mariadb-java-client-1.5.9.jar ... OK
Checksum mariadb-java-client-1.5..jar OK
Server hostname [localhost]: #回车
Server port [(mariadb default)]: #回车
Database name [reviewdb]: #回车
Database username [gerrit2]: #回车
gerrit2's password : #secret
confirm password : #secret *** Index
*** Type [lucene/?]: #回车 *** User Authentication
*** Authentication method [openid/?]: http
Get username from custom HTTP header [y/N]? #回车
SSO logout URL : #回车
Enable signed push support [y/N]? #回车 *** Review Labels
*** Install Verified label [y/N]? #回车 *** Email Delivery
*** SMTP server hostname [localhost]: #回车
SMTP server port [(default)]: #回车
SMTP encryption [none/?]: #回车
SMTP username : co3@qq.com
co3@qq.com's password : #123456
confirm password : #123456
*** Container Process
*** Run as [gerrit2]: #回车
Java runtime [/opt/jre1..0_162]: #回车
Copy gerrit.war to gerrit-test/bin/gerrit.war [Y/n]? #回车
Copying gerrit.war to gerrit-test/bin/gerrit.war *** SSH Daemon
*** Listen on address [*]: #回车
Listen on port []: #回车
Generating SSH host key ... rsa... dsa... ed25519... ecdsa ... ecdsa ... ecdsa ... done *** HTTP Daemon
*** Behind reverse proxy [y/N]? y
Proxy uses SSL (https://) [y/N]? #回车
Subdirectory on proxy server [/]: #回车
Listen on address [*]: 127.0.0.1
Listen on port []: #回车
Canonical URL [http://localhost/]: http://192.168.159.131 *** Cache
*** *** Plugins
*** Installing plugins.
Install plugin commit-message-length-validator version v2.14.6 [y/N]? y
Installed commit-message-length-validator v2.14.6
Install plugin download-commands version v2.14.6 [y/N]? y
Installed download-commands v2.14.6
Install plugin hooks version v2.14.6 [y/N]? y
Installed hooks v2.14.6
Install plugin replication version v2.14.6 [y/N]? y
Installed replication v2.14.6
Install plugin reviewnotes version v2.14.6 [y/N]? y
Installed reviewnotes v2.14.6
Install plugin singleusergroup version v2.14.6 [y/N]? y
Installed singleusergroup v2.14.6
Initializing plugins. Initialized /home/gerrit2/gerrit-test
Executing /home/gerrit2/gerrit-test/bin/gerrit.sh start
Starting Gerrit Code Review: OK
Waiting for server on 192.168.118.158:80 ... OK
Opening http://192.168.118.158/#/admin/projects/ ...FAILED #(因为还没有用户,所以failed,不影响)
Open Gerrit with a JavaScript capable browser:
http://192.168.118.158/#/admin/projects/
[gerrit2@ted ~]$

完成后查看端口情况

[root@ted ~]# netstat -ltnp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0.0.0.0: 0.0.0.0:* LISTEN /mysqld
tcp 0.0.0.0: 0.0.0.0:* LISTEN /sshd
tcp 127.0.0.1: 0.0.0.0:* LISTEN /master
tcp6 0 0 :::29418 :::* LISTEN 3118/GerritCodeRevi
tcp6
0 0 :::80 :::* LISTEN 2465/httpd
tcp6
0 0 127.0.0.1:8081 :::* LISTEN 3118/GerritCodeRevi
tcp6 ::: :::* LISTEN /sshd
tcp6 ::: :::* LISTEN /master
[root@ted ~]#

这样初始化好后,gerrit的配置文件(gerrit-test/etc/gerrit.config)

[gerrit]
basePath = git
serverId = 70a67d2b-e12e-42b9-a978-705d7685654d
canonicalWebUrl = http://192.168.118.145
[database]
type = mariadb
hostname = localhost
database = reviewdb
username = gerrit2
[index]
type = LUCENE
[auth]
type = HTTP
[receive]
enableSignedPush = false
[sendemail]
smtpServer = localhost
smtpUser = co3@qq.com
[container]
user = gerrit2
javaHome = /opt/jre1.8.0_162
[sshd]
listenAddress = *:29418
[httpd]
listenUrl = proxy-http://127.0.0.1:8081/
[cache]
directory = cache

4.测试

使用浏览器访问canonicalWebUrl ,

http://192.168.118.145

提示输入用户密码,就是/gerrit.password里的http认证用户密码

登录成功后,将看到gerrit用户信息登记界面(添Full Name什么的),然后进入主界面

管理命令如下

./gerrit-test/bin/gerrit.sh start
./gerrit-test/bin/gerrit.sh stop
./gerrit-test/bin/gerrit.sh status

5.配置gitweb

参考官网手册,可以使用命令行实现,我这里直接编辑配置文件,

vi gerrit-test/etc/gerrit.config

添加如下gitweb配置

[gitweb]
cgi = /var/www/git/gitweb.cgi
type = gitweb

注意!此处有坑!如果按官网手册用命令配置,type是没有值的,而默认是disabled,不会显示gitweb超链接!必须手动设置!)

重启gerrit,退出web窗口,重新认证登录,可以看见gitweb超链接了

浏览hey项目,

6.配置邮箱验证

如果按前面默认配置,使用本机smtp发送邮件,这样如果发到公网邮箱(qq、163等),会被判定为垃圾邮件,发不出去。

如果是实验性质的话,可以在局域网搭建postfix+dovecot+dnsmasq简单邮件系统,进行邮箱注册。

(gerrit的账号必须注册邮箱,添加ssh公钥/http密码,git 配置邮箱必须跟注册邮箱一致,才能push)

我再看看其他解决垃圾邮件方法...

CentOS 7.2 安装Gerrit 2.14.6的更多相关文章

  1. Python之——CentOS 6.5安装Python2.7.14

    Python之——CentOS 6.5安装Python2.7.14   版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/l1028386804/art ...

  2. CentOS 7.4安装Nginx 1.14.0

    一.安装所需环境   1.gcc 安装         yum install gcc-c++    

  3. Centos 7.5安装 Nginx 1.14.1

    1. 准备工作 查看系统版本 输入命令 cat /etc/redhat-release 我的Centos版本 CentOS Linux release 7.5.1804 (Core) 安装nginx所 ...

  4. CentOS 6.9编译安装Python-2.7.14(python升级)

    参考 Python官网:https://www.python.org/ 阿里云 https://www.aliyun.com/jiaocheng/517192.html 一.查看CentOS版本和系统 ...

  5. Centos、Ubuntu 安装 Mono、Jexus

    Mono是.NET的跨平台实现 在众多关于语言的争论中,.NET一直被以不能跨平台而诟病,Mono改变了这一现状. 有人当心Mono会涉及版权啥的问题.高深的偶不懂,不过我觉得Unity3D都能用,为 ...

  6. centos下编译安装mysql5.5/5.6

    2013年11月16日 19:39:13 centos 6 mysql 5.5.28 我只说些我出错的地方: cmake后删除的方法是 xargs rm < install_manifest.t ...

  7. 在CentOS 7中安装与配置Tomcat-8方法

    安装前提 在CentOS 7中安装与配置JDK8 安装tomcat  apache-tomcat-8.0.14.tar.gz文件上传到/usr/local中执行以下操作: [root@localhos ...

  8. CentOS 6.4 安装 Transmission 2.76

    1.安装Transmission 首先打开Transmission下载页:http://www.transmissionbt.com/download/ ,点击CentOS下载项,会跳转到一个叫&qu ...

  9. Linux Centos 系统上安装BT客户端 Transmission

    Linux Centos 系统上安装BT客户端 Transmission   Transmission是一种BitTorrent客户端,特点是一个跨平台的后端和其上的简洁的用户界面,以MIT许可证和G ...

随机推荐

  1. C 语言中的 fgets()

    转自:http://blog.csdn.net/daiyutage/article/details/8540932 原型: char *  fgets(char * s, int n,FILE *st ...

  2. Codeforces961F. k-substrings

    $n \leq 1000000$的字符串,对每一个子串$i$~$n-i+1$,求他最长的一个既是前缀又是后缀的子串. 这题要求的东西具有“对称性”,不充分利用难以解决.这里的“对称性”不仅指询问是对称 ...

  3. AC日记——[USACO1.1]坏掉的项链Broken Necklace 洛谷 P1203

    题目描述 你有一条由N个红色的,白色的,或蓝色的珠子组成的项链(3<=N<=350),珠子是随意安排的. 这里是 n=29 的二个例子: 第一和第二个珠子在图片中已经被作记号. 图片 A ...

  4. SpringBoot整合freemarker中自定义标签获取字典表的数据

    因为在前端要根据字典表中的数据去将1.2这些值转换成对应的文字解释 1.首先要创建一个类去实现 TemplateDirectiveModel 类 @Component public class Dic ...

  5. 解决本地调用office组件成功,但是发布到IIS中出现的错误(检索COM类工厂中CLSID为{00024500-0000-0000-C000-000000000046}的组件时失败)

    在C#操作word或者Excel,我们可能会用到微软内置的COM组件,会出现很多问题. 如:在本地调试导出Excel没有问题,发布到IIS就有问题了,检测到的异常: 我们会发现在iis上运行的程序,没 ...

  6. php使用strpos,strstr,strchr注意啦,若是数字查找则会当成ASCII码处理

    strpos,strstr,strchr都是查找某字符出现的位置,若未找到,则返回false(判断是===) 如: var_dump(strpos("oa",'97')); var ...

  7. oracle内核学习总结

    http://blog.csdn.net/bcbobo21cn/article/category/3092145/1

  8. Tomcat载入两次问题

    前提介绍: 1.某个应用Dragon放置路径:/opt/apache-tomcat-7.0.47/webapps/Dragon 2.Tomcat的server.xml部分配置信息例如以下:    &l ...

  9. 生活娱乐 360安全卫士和QQ大战

    360安全卫士指控QQ侵犯用户隐私 [提要]9月26日晚上11点16分,安全软件商360在他们的论坛中发布了最新公告:<360安全卫士发布隐私保护器 专门曝光"窥私"软件&g ...

  10. antd 如何让 Row 中的 Col 自动换行?

    1.解决方案 在需要换行处,设置一个空的 Col // 空白(特殊情况处理) const empty = ( <Col md={6} sm={24}></Col> ); .