Gerrit2安装配置
我主要根据下面这个文章而安装,遇到一些小问题,记录如下:
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安装配置的更多相关文章
- 安装配置gerrit
Centos 安装配置gerrit 关闭selinux,不然nginx的反向代理会报错connect() to 127.0.0.1:8080 failed (13: Permission denied ...
- gerrit+nginx+centos安装配置
安装环境 centos 6.8 gerrit-full-2.5.2.war 下载地址:https://gerrit-releases.storage.googleapis.com/gerrit-ful ...
- gerrit安装配置记录
gerrit安装配置 java -jar gerrit-2.13.5.war init -d gerrit Authentication method [OPEN/?]: htt Install Ve ...
- Hive安装配置指北(含Hive Metastore详解)
个人主页: http://www.linbingdong.com 本文介绍Hive安装配置的整个过程,包括MySQL.Hive及Metastore的安装配置,并分析了Metastore三种配置方式的区 ...
- Hive on Spark安装配置详解(都是坑啊)
个人主页:http://www.linbingdong.com 简书地址:http://www.jianshu.com/p/a7f75b868568 简介 本文主要记录如何安装配置Hive on Sp ...
- ADFS3.0与SharePoint2013安装配置(原创)
现在越来越多的企业使用ADFS作为单点登录,我希望今天的内容能帮助大家了解如何配置ADFS和SharePoint 2013.安装配置SharePoint2013这块就不做具体描述了,今天主要讲一下怎么 ...
- Hadoop的学习--安装配置与使用
安装配置 系统:Ubuntu14.04 java:1.7.0_75 相关资料 官网 下载地址 官网文档 安装 我们需要关闭掉防火墙,命令如下: sudo ufw disable 下载2.6.5的版本, ...
- redis的安装配置
主要讲下redis的安装配置,以及以服务的方式启动redis 1.下载最新版本的redis-3.0.7 到http://redis.io/download中下载最新版的redis-3.0.7 下载后 ...
- Windows环境下的NodeJS+NPM+Bower安装配置
npm作为一个NodeJS的模块管理,之前我由于没有系统地看资料所以导致安装配置模块的时候走了一大段弯路,所以现在很有必要列出来记录下.我们要先配置npm的全局模块的存放路径以及cache的路径,例如 ...
随机推荐
- 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; ...
- SPOJ VJudge QTREE - Query on a tree
Query on a tree Time Limit: 851MS Memory Limit: 1572864KB 64bit IO Format: %lld & %llu Submi ...
- mysql获取行号的方法
1.不排序 语句: ) ) ) b,bigquestion 结果: 2.排序的 语句 ) ) ) b,bigquestion order by bigquestion.bigQuestionSequ ...
- codeforces 873F(后缀数组)
题意 给一个长度不超过200000的字符串s,假定有一个字符串a,这个字符串在s中出现次数是f(a),你需要让$|a|f(a)$最大. 但是有一些位置是禁止的,即以该位置为结束位置的字符串不计数. 分 ...
- Access to Image at 'file:///Users canvas本地图片跨域报错解决方案
1.设置跨域 添加跨域条件 crossorigin="anonymous" 前提是后端支持这个图片跨域 2.上面加了之后还是报错 如标题所示 你需要把你的项目放到服务器上面跑 ...
- Java根据百度API获得经纬度,然后根据经纬度在获得城市信息
原文:http://www.open-open.com/code/view/1421032487812 import java.io.BufferedReader; import java.io.IO ...
- HDU3926Hand in Hand(搜索 或 并查集)
Problem Description In order to get rid of Conan, Kaitou KID disguises himself as a teacher in the k ...
- Navicat for MySQL无法连接到数据库怎么办
注意端口就是3306,不要改成80之类的,访问数据库就是从这个端口过去的
- vue 自定义 移动端筛选条件
1.创建组件 components/FilterBar/FilterBar.vue <template> <div class="filterbar" :styl ...
- C#调用国家气象局天气预报接口
原文:C#调用国家气象局天气预报接口 一.需求 最近,刚好项目中有天气预报查询功能的需求,要求录入城市名称,获取该城市今日天气信息及相关气象生活辅助信息等. 例如:查询北京市天气 结果为: 今日北京天 ...