我主要根据下面这个文章而安装,遇到一些小问题,记录如下:
2016.4.30 安装 2.12.2,要将加密的东东全装上!!!注意
            
          1) 由于新的git-bash使用的openssh7.0与gerrit使用的版本不一致,导致认证问题,要在.ssh/config中添加:
                Host gerrit.wikimedia.org
                    KexAlgorithms +diffie-hellman-group1-sha1
          2)也要将known-hosts清空
          3)利用gerrit shell来添加用户名和邮箱
            ssh -p 29418 admin@192.168.0.103 gerrit --help
            ssh -p 29418 admin@192.168.0.103 gerrit set-account --add-email admin@admin.com admin
            //将用户加入到http认证中去,用web登陆该用户则会自动创建该用户
            htpasswd -b htpasswd.conf yazhou 123456
            //设置改用户email,成功后使用网页将该用户加入某些组 
            ssh -p 29418 admin@192.168.0.103 gerrit set-account --add-email yazhou@yazhou.com yazhou
            //admin创建项目,创建项目后要要设置refs/heads/* read/submit等权限
             注意:设置/refs/meta/config对于用户可读, /refs/tags/*和/refs/changes/*可读,否则gitweb无法使用

终于可以使用gerrit了
           4) 如何将已有的git 项目添加到gerrit库中去? ?? 这个目前没有找到方法

-------------------------------------------------------------------------------------------------------------------------------------           
参考文章如下:

origin: http://my.oschina.net/vdroid/blog/387126

Gerrit是用于Git版本控制系统的代码审核系统。

下载

当前最新版本的gerrit为2.8.1,从官方下载二进制war包即可。

数据库设置

gerrit可以使用H2,PostgreSQL,MySql和Oracle数据库。这个安装使用PostgreSQL数据库。

创建gerrit使用的用户和数据库:

1
2
$ createuser --username=postgres -RDIElPS gerrit2
$ createdb --username=postgres -E UTF-8 -O gerrit2 reviewdb

这里使用PostgreSQL提供的shell工具,也可以登录PostgreSQL使用psql来CREATE ROLE和CREATE DATABASE。

创建用户

为gerrit创建单独的用户gerrit2,用于运行gerrit,但是禁止gerrit2用户登录系统。

1
2
# adduser gerrit2
# passwd --delete gerrit2

安装

切换到gerrit2用户,使用gerrit2主目录下的review目录作为gerrit site的根目录

1
2
# sudo su - gerrit2
# java -jar gerrit-2.8.1.war init -d review

进入交互式安装,具体的安装配置如下:

*** Gerrit Code Review 2.8.1
*** 选项中大写字母为默认选项,如使用默认选项回车即可
 
Create '/home/gerrit2/review'  [Y/n]? 
 
*** Git Repositories
*** gerrit用于存储git仓库的目录,相对于根目录review
 
Location of Git repositories   [git]: 
 
*** SQL Database
*** 
 
Database server type           [h2]: postgresql
Server hostname                [localhost]: 
Server port                    [(postgresql default)]: 
Database name                  [reviewdb]: 
Database username              [gerrit2]: 
gerrit2's password             : 
              confirm password : 
 
*** User Authentication
*** 使用HTTP认证,OPENID需要服务器连接互联网,还可以使用LDAP认证服务
 
 
Authentication method          [OPENID/?]: http
Get username from custom HTTP header [y/N]? 
SSO logout URL                 : 
 
*** Email Delivery
*** gerrit发送邮件设置,可以使用本地或远程SMTP服务器,
*** 只要在smtp服务器上有帐号即可。
 
SMTP server hostname           [localhost]: mail.openwares.net
SMTP server port               [(default)]: 25
SMTP encryption                [NONE/?]: tls
SMTP username                  [gerrit2]: gerrit2@openwares.net
gerrit2@openwares.net's password : 
              confirm password : 
 
*** Container Process
*** 使用gerrit2用户运行gerrit
 
Run as                         [gerrit2]: 
Java runtime                   [/usr/lib/jvm/java-7-openjdk-amd64/jre]: 
Copy gerrit-2.8.1.war to /home/gerrit2/review/bin/gerrit.war [Y/n]? 
Copying gerrit-2.8.1.war to /home/gerrit2/review/bin/gerrit.war
 
*** SSH Daemon
*** gerrit自带的ssh服务,与服务器自身的ssh服务无关,监听默认端口即可
*** 注意:如要使用低于1024的特权端口,需authbind授权,否则ssh会绑定端口失败
Listen on address              [*]: 
Listen on port                 [29418]: 
 
Gerrit Code Review is not shipped with Bouncy Castle Crypto v144
  If available, Gerrit can take advantage of features
  in the library, but will also function without it.
Download and install it now [Y/n]? 
Downloading http://www.bouncycastle.org/download/bcprov-jdk16-144.jar ... OK
Checksum bcprov-jdk16-144.jar OK
Generating SSH host key ... rsa... dsa... done
 
*** HTTP Daemon
*** 这里使用nginx反向代理gerrit,所以只在loop接口监听即可。
*** 如果使用域名访问gerrit,最好将规范URL设置为域名形式,发送校验邮件时会使用到
 
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                 [8081]: 
Canonical URL                  [http://127.0.0.1/]:http://review.domain.tld/
 
*** Plugins
*** 选装插件
 
Install plugin download-commands version v2.8.1 [y/N]?
Install plugin reviewnotes version v2.8.1 [y/N]? 
Install plugin replication version v2.8.1 [y/N]? 
Install plugin commit-message-length-validator version v2.8.1 [y/N]? 
 
Initialized /home/gerrit2/review
Executing /home/gerrit2/review/bin/gerrit.sh start
Starting Gerrit Code Review: 
*** 因为为ssh服务选在了低于1024的端口,且没有authbind端口授权,所以会出现如下错误,高于1024端口不会。
*** FAILED
*** error: cannot start Gerrit: exit status 1
Waiting for server on 127.0.0.1:80 ... OK
*** 服务器上没有X,所以使用浏览器打开连接失败
Opening http://127.0.0.1/#/admin/projects/ ...FAILED
Open Gerrit with a JavaScript capable browser:
 
http://127.0.0.1/#/admin/projects/
 
*** 交互式安装完毕

gerrit自启动服务

添加/etc/default/gerritcodereview文件,其内容如下:
GERRIT_SITE=/path/to/gerrit

然后

1
2
# ln -sf /home/gerrit2/review/bin/gerrit.sh /etc/init.d/gerrit
# ln -sf /etc/init.d/gerrit /etc/rc3.d/S90gerrit

nginx配置

使用nginx反向代理gerrit,并且nginx承担http认证,gerrit不会对用户进行认证。gerrit将http认证成功后第一个 登录的用户作为管理员,其他用户皆为普通用户。用户第一次http认证成功后,gerrit会为用户生成同名的gerrit用户,只要进一步完善账户即 可。比如添加email和公钥。管理员为其他普通用户授权。

nginx反向代理配置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
server { 
        listen 80;
        server_name review.domain.tld;
        location / {
                auth_basic              "Gerrit2 Code Review";
                auth_basic_user_file    /home/gerrit2/htpasswd.conf;
                proxy_pass              http://127.0.0.1:8081;
                proxy_set_header        X-Forwarded-For $remote_addr;
                proxy_set_header        Host $host;
        }
        location /login/ {
                proxy_pass              http://127.0.0.1:8081;
                proxy_set_header        X-Forwarded-For $remote_addr;
                proxy_set_header        Host $host;
        }
}

http认证文件

使用htpasswd命令为管理云用户生成http认证配置文件,如果没有htpasswd文件需要安装apache2-utils包。

# htpasswd -d htpasswd.conf admin

以后添加gerrit用户时,同样需要先为其配置http认证,然后用户登录后gerrit会为其自动生成用户帐号,名字与http认证名字一致。

账户配置

第一次成功登录的用户会被gerrit作为管理员用户。登录后点击右上角的”匿名懦夫”Anonymous Coward -> Settings来配置账户。

电子邮件

选择左侧Contact Information页签,添加用户全称。然后注册新邮件Register New Email,输入管理员的邮件地址后,gerrit会向新邮箱发送
校验邮件,校验通过后才是有效的邮箱。这时候安装时配置Canonical URL就有用处了,校验邮件的域名部分就是Canonical URL,如果当时配置的是http://127.0.0.1/,那这时候就要手工修改域名部分再执行验证了。

发送校验邮件有时候不太方便,可以使用gerrit提供的远程ssh shell来为用户添加有效邮箱。当然首先管理员要添加了SSH公钥才能远程访问gerrit的ssh shell。
语法如下:

1
# ssh review gerrit set-account --add-email username@openwares.net username

这是review是.ssh/config中配置的远程ssh主机别名。

也可以通过直接修改gerrit数据库表的方式来添加用户邮件,但这活着实有点儿脏,不建议使用。

SSH公钥

要使用gerrit必须要提供用户的公钥。选择页面左侧的SSH Public Keys为当前用户添加公钥。直接将公钥粘贴到Add SSH Public Key框内,然后点击add即可。
之后用户就可以用ssh来访问gerrit了。当然无法登录服务器,只能使用gerrit提供的shell。

添加其他普通账户

如果采用http认证,那么添加其他账户时,需要现添加http认证账户。用htpasswd创建的用户时,并没有往gerrit中添加账号,只有 当该用户通过web登陆gerrit服务器时,该账号才会被添加进gerrit数据库中。使用http认证方式,不要使用gerrit ssh shell命令来新增用户,通过http认证第一次认证成功的用户,gerrit会为其自动创建账户,之后只要完善账户就可以了。使用ssh shell创建的用户无法与http认证后自动创建的用户关联起来,即是二者的用户名是完全一样的。

其他用户帐号的配置与管理员的配置方式一样。

SSH访问gerrit

添加ssh公钥后就可以使用ssh来使用gerrit了。

# ssh -p 29418 -i ~/.ssh/id_rsa.gerrit admin@review.domain.tld

如果私钥名字为id_rsa可以不用使用-i参数。为ssh主机配置别名访问起来更简单,~/.ssh/config文件中添加:

1
2
3
4
5
6
Host review
    Hostname    review.domain.tld
    User        admin
    Port        29418
    #如果私钥名字为id_rsa,可以省略下面一行
    IdentityFile    ~/.ssh/id_rsa.gerrit

这样ssh访问gerrit就可以了:

1
2
3
4
5
6
7
8
9
10
11
# ssh review
****    Welcome to Gerrit Code Review    ****
 
  Hi username, you have successfully connected over SSH.
 
  Unfortunately, interactive shells are disabled.
  To clone a hosted Git repository, use:
 
  git clone ssh://admin@review.domain.tld:29418/REPOSITORY_NAME.git
 
Connection to review.tafdc.org closed.

查看gerrit shell帮助

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
# ssh review gerrit --help
gerrit [COMMAND] [ARG ...] [--] [--help (-h)]
 
 --          : end of options
 --help (-h) : display this help text
 
Available commands of gerrit are:
 
   ban-commit           Ban a commit from a project's repository
   create-account       Create a new batch/role account
   create-group         Create a new account group
   create-project       Create a new project and associated Git repository
   flush-caches         Flush some/all server caches from memory
   gc                   Run Git garbage collection
   gsql                 Administrative interface to active database
   ls-groups            List groups visible to the caller
   ls-members           Lists the members of a given group
   ls-projects          List projects visible to the caller
   ls-user-refs         List refs visible to a specific user
   plugin               
   query                Query the change database
   receive-pack         Standard Git server side command for client side git push
   rename-group         Rename an account group
   review               Verify, approve and/or submit one or more patch sets
   set-account          Change an account's settings
   set-members          Modifies members of specific group or number of groups
   set-project          Change a project's settings
   set-project-parent   Change the project permissions are inherited from
   set-reviewers        Add or remove reviewers on a change
   show-caches          Display current cache statistics
   show-connections     Display active client SSH connections
   show-queue           Display the background work queues, including replication
   stream-events        Monitor events occurring in real time
   test-submit          
   version              Display gerrit version
 
See 'gerrit COMMAND --help' for more information.

导入现存git代码库

最简单的办法就是直接将现在的git裸仓库拷贝到gerrit管理的仓库目录下

1
#cp -r /path/to/old.git /path/to/gerrit/git/

或者稍微繁琐一些的方法:在gerrit中新建一个project,不要做init commit,然后将新建的仓库做为已经存在仓库的远程仓库,然后push就可以了。
可以设置gerrit该仓库不经过审核,就可以直接将整个仓库push过来了。

gitweb集成

debian系统只要安装了gitweb包, gerrit就可以自动关联到gitweb,通过gitweb来浏览git仓库。

# apt-get install gitweb

其他问题

SMTP证书

如果为gerrit配置的SMTP服务器是SSL/TLS加密的,并且SMTP服务器的证书是自签的,当gerrit试图发送邮件时会抛出异常:

1
2
3
sun.security.validator.ValidatorException: PKIX path building failed: 
sun.security.provider.certpath.SunCertPathBuilderException: 
unable to find valid certification path to requested target

因为自签的证书是不受信任的,最简单的解决办法就是告诉gerrit不要校验STMP服务的证书:

编辑~/review/etc/gerrit.config,添加:

1
2
[sendmail]
    sslverify=false

或者更复杂的解决办法,将SMTP的SSL证书添加到JAVA的truststore里,参考[3]里有对此问题的详细描述。

Sign Out

使用http认证登录gerrit后,并无法通过点击”Sign Out”退出登录,只能通过直接关闭浏览器窗口来退出当前会话。

如果需要重新安装gerrit,记得将数据库drop掉再重新创建。

References:
[1]Gerrit Code Review for Git
[2]烤鸭的gerrit使用总结
[3]代码评审系统 ReviewBoard 和 Gerrit (下)

===
All governments should be pressured to correct their abuses of human rights. --- Richard Stallman

Gerrit2安装配置的更多相关文章

  1. 安装配置gerrit

    Centos 安装配置gerrit 关闭selinux,不然nginx的反向代理会报错connect() to 127.0.0.1:8080 failed (13: Permission denied ...

  2. gerrit+nginx+centos安装配置

    安装环境 centos 6.8 gerrit-full-2.5.2.war 下载地址:https://gerrit-releases.storage.googleapis.com/gerrit-ful ...

  3. gerrit安装配置记录

    gerrit安装配置 java -jar gerrit-2.13.5.war init -d gerrit Authentication method [OPEN/?]: htt Install Ve ...

  4. Hive安装配置指北(含Hive Metastore详解)

    个人主页: http://www.linbingdong.com 本文介绍Hive安装配置的整个过程,包括MySQL.Hive及Metastore的安装配置,并分析了Metastore三种配置方式的区 ...

  5. Hive on Spark安装配置详解(都是坑啊)

    个人主页:http://www.linbingdong.com 简书地址:http://www.jianshu.com/p/a7f75b868568 简介 本文主要记录如何安装配置Hive on Sp ...

  6. ADFS3.0与SharePoint2013安装配置(原创)

    现在越来越多的企业使用ADFS作为单点登录,我希望今天的内容能帮助大家了解如何配置ADFS和SharePoint 2013.安装配置SharePoint2013这块就不做具体描述了,今天主要讲一下怎么 ...

  7. Hadoop的学习--安装配置与使用

    安装配置 系统:Ubuntu14.04 java:1.7.0_75 相关资料 官网 下载地址 官网文档 安装 我们需要关闭掉防火墙,命令如下: sudo ufw disable 下载2.6.5的版本, ...

  8. redis的安装配置

    主要讲下redis的安装配置,以及以服务的方式启动redis 1.下载最新版本的redis-3.0.7  到http://redis.io/download中下载最新版的redis-3.0.7 下载后 ...

  9. Windows环境下的NodeJS+NPM+Bower安装配置

    npm作为一个NodeJS的模块管理,之前我由于没有系统地看资料所以导致安装配置模块的时候走了一大段弯路,所以现在很有必要列出来记录下.我们要先配置npm的全局模块的存放路径以及cache的路径,例如 ...

随机推荐

  1. HDU 3062 简单的2-SAT问题

    在2-SAT,最让我纠结的还是添加有向线段的函数了 void add_clause(int i,int a,int j,int b){    int m=2*i+a;    int n=2*j+b;  ...

  2. SPOJ VJudge QTREE - Query on a tree

    Query on a tree Time Limit: 851MS   Memory Limit: 1572864KB   64bit IO Format: %lld & %llu Submi ...

  3. mysql获取行号的方法

    1.不排序 语句: ) ) ) b,bigquestion 结果:  2.排序的 语句 ) ) ) b,bigquestion order by bigquestion.bigQuestionSequ ...

  4. codeforces 873F(后缀数组)

    题意 给一个长度不超过200000的字符串s,假定有一个字符串a,这个字符串在s中出现次数是f(a),你需要让$|a|f(a)$最大. 但是有一些位置是禁止的,即以该位置为结束位置的字符串不计数. 分 ...

  5. Access to Image at 'file:///Users canvas本地图片跨域报错解决方案

    1.设置跨域 添加跨域条件   crossorigin="anonymous" 前提是后端支持这个图片跨域 2.上面加了之后还是报错 如标题所示 你需要把你的项目放到服务器上面跑 ...

  6. Java根据百度API获得经纬度,然后根据经纬度在获得城市信息

    原文:http://www.open-open.com/code/view/1421032487812 import java.io.BufferedReader; import java.io.IO ...

  7. HDU3926Hand in Hand(搜索 或 并查集)

    Problem Description In order to get rid of Conan, Kaitou KID disguises himself as a teacher in the k ...

  8. Navicat for MySQL无法连接到数据库怎么办

    注意端口就是3306,不要改成80之类的,访问数据库就是从这个端口过去的

  9. vue 自定义 移动端筛选条件

    1.创建组件 components/FilterBar/FilterBar.vue <template> <div class="filterbar" :styl ...

  10. C#调用国家气象局天气预报接口

    原文:C#调用国家气象局天气预报接口 一.需求 最近,刚好项目中有天气预报查询功能的需求,要求录入城市名称,获取该城市今日天气信息及相关气象生活辅助信息等. 例如:查询北京市天气 结果为: 今日北京天 ...