gerrit安装配置及过程中遇到的问题

本文详细介绍了如何在Ubuntu系统中配置Gerrit代码审查工具,包括系统环境准备、软件安装、配置Gerrit服务、Apache反向代理设置、企业账号接入以及多实例部署等内容。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

(文章来源: http://blog.youkuaiyun.com/ljchlx/article/details/22277311)


小注解:

本文所使用的关于apache的配置设置是基于apache2.2的,因此部分设置与apache 2.3/2.4稍有不同.

例如:

          Order deny,allow
          Allow from all
就应该改为

          Require all granted

 进一步详细的请查看apache说明文档。

系统配置环境
Gerrit 是一个基于 Web 的代码评审和项目管理的工具,面向基于 Git 版本控制系统的项目。因此需要Apache、Mysql、GIT等相关软件的支持 系统配置: 新装的UBANTU LINUX系统请先更新自己的系统软件包 $sudo apt-get dist-upgrade
$sudo adduser project
以新用户身份操作 $sudo su - project
$sudo apt-get install  git-core apache2.2-bin apache2.2-common apache2-utils apache2-mpm-worker

安装Gerrit



1.创建一个以项目名称命名的新用户,以project为例(如以创建可省)
$sudo adduser project

以新用户身份操作

$sudo su - project

 
2.创建安装目录,以项目名命令。(建议直接拷贝使用其它项目的gerrit安装目录) $mkdir -p gerrit_reviewsite

3.下载gerrit

 http://code.google.com/p/gerrit/downloads/list?can=1&q=&colspec=Filename+Summary+Uploaded+ReleaseDate+Size+DownloadCount

  
4.安装并配置初始化gerrit
 java -jar gerrit-2.6.1.war init -d ~/gerrit_reviewsite/

reate '/home/gerrit2/review-site' [Y/n]?

*** Git Repositories
***

Location of Git repositories [git]:

*** SQL Database
***

Database server type [H2/?]:   //改成MYSQL或者使用H2

*** User Authentication
***

Authentication method [OPENID/?]: HTTP   //注意这个不要按回车跳过去了,否则不是HTTP认证,是需要用google的OPENID
Get username from custom HTTP header [y/N]? :
SSO logout URL : 

*** Email Delivery
***

SMTP server hostname [localhost]: smtp.126.com   //自己改成自己的邮箱smtp
SMTP server port [(default)]: 25
SMTP encryption [NONE/?]: 
SMTP username [?]: xxxxxxxx@126.com             //自己改成自己的邮箱
yourname@xxxxx.com's password : xxxxxxx
confirm password : xxxxxxx

*** Container Process
***

Run as [project]:
Java runtime [/usr/lib/jvm/java-6-sun-1.6.0.24/jre]:
Copy gerrit.war to /home/gerrit2/review-site/bin/gerrit.war [Y/n]?
Copying gerrit.war to /home/gerrit2/review-site/bin/gerrit.war

*** SSH Daemon
***

Listen on address [*]:
Listen on port [29418]:       //如果同一个用户下建多个gerrit,请不用都公用29418这个端口号 如39418 49418

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]?     
//这里如果选择了y,则gerrit服务器上的fingerprint会有两个,否则则只有一个
Downloading http://www.bouncycastle.org/download/bcprov-jdk16-144.jar ... OKChecksum bcprov-jdk16-144.jar OKGenerating SSH host key ... rsa... dsa... done*** HTTP Daemon*** Behind reverse proxy [y/N]? y
//使用反向代理的话必须选择y来配置,默认是N

Proxy uses SSL (https://) [y/N]? n
Subdirectory on proxy server   [/]: /project/     //可以选择直接跳过,那样你的gerrit最后的URL是http://192.168.11.73:80
Listen on address              [*]: 
Listen on port                 [8081]:          //切记,此端口号一定不要和apache2占用相同的端口号,多个gerrit可以8082 8083 8084                                                			//否则就会Starting Gerrit Code Review:Failed
Canonical URL                  [http://*/]:http://192.168.11.73/project/    //上一步Subdirectory on proxy server 跳过不填则是http://192.168.11.73:80  (80为你将要在apache 给gerrit设置的端口)
Initialized /home/gerrit2/review-siteExecuting 
/home/gerrit2/review-site/bin/gerrit.sh start
Starting Gerrit Code Review: OK
=========================================QA=======================================================================================
Q:Configuration ErrorCheck the HTTP server's authentication settings.The HTTP server did not provide the username in the Authorizationheader when it forwarded the request to Gerrit Code Review.If the HTTP server is Apache HTTPd, check the proxy configurationincludes an authorization directive with the proper location, ensuringit ends with '/':
In error_log:ERROR com.google.gerrit.httpd.auth.container.HttpLoginServlet : Unableto authenticate user by Authorization request header.  Check containeror server configuration.
A:You cannot run these on the same port. Your Apache NameVirtualHostshould be on a different port than the internal Jetty web sever thatGerrit is using.
即gerrit和apache2占用相同的端口号
例如:

cat review_site_project/etc/gerrit.config:

[httpd]       listenUrl = http://x.x.x.x:8081/

cat /etc/apache2/apache2.conf :

NameVirtualHost x.x.x.x:8081

<VirtualHost x.x.x.x:8081>

apache2和gerrit都使用了8081,肯定有一个启动不来的,一般是gerrit
5. 启动gerrit时失败,查看gerrit_reviewsite/log/error_log中的错误信息如下:
[2016-07-29 02:56:56,387] [main] WARN  com.google.gerrit.sshd.SshDaemon : Disabling cipher aes192-cbc: Illegal key size; try installing unlimited cryptography extension
[2016-07-29 02:56:56,388] [main] WARN  com.google.gerrit.sshd.SshDaemon : Disabling cipher aes256-cbc: Illegal key size; try installing unlimited cryptography extension
[2016-07-29 02:56:56,390] [main] WARN  com.google.gerrit.sshd.SshDaemon : Disabling cipher aes256-ctr: Illegal key size; try installing unlimited cryptography extension
[2016-07-29 02:56:56,393] [main] WARN  com.google.gerrit.sshd.SshDaemon : Disabling cipher arcfour256: Illegal key size or default parameters; try installing unlimited cryptography extension
[2016-07-29 02:56:56,425] [main] WARN  com.google.gerrit.server.config.GitwebCgiConfig : gitweb not installed (no /usr/lib/cgi-bin/gitweb.cgi found)
[2016-07-29 02:56:56,882] [main] INFO  org.eclipse.jetty.util.log : Logging initialized @14808ms
[2016-07-29 02:56:56,950] [main] INFO  com.google.gerrit.server.git.LocalDiskRepositoryManager : Defaulting core.streamFileThreshold to 45m
[2016-07-29 02:56:56,999] [main] ERROR com.google.gerrit.pgm.Daemon : Unable to start daemon
com.google.inject.ProvisionException: Unable to provision, see the following errors:

1) Schema not yet initialized.  Run init to initialize the schema:
$ java -jar gerrit.war init -d /home/watasianata/gerrit_review

1 error
        at com.google.gerrit.server.schema.SchemaVersionCheck.start(SchemaVersionCheck.java:56)
        at com.google.gerrit.lifecycle.LifecycleManager.start(LifecycleManager.java:74)
        at com.google.gerrit.pgm.Daemon.start(Daemon.java:302)
        at com.google.gerrit.pgm.Daemon.run(Daemon.java:203)
        at com.google.gerrit.pgm.util.AbstractProgram.main(AbstractProgram.java:64)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:606)
        at com.google.gerrit.launcher.GerritLauncher.invokeProgram(GerritLauncher.java:159)
        at com.google.gerrit.launcher.GerritLauncher.mainImpl(GerritLauncher.java:100)
        at com.google.gerrit.launcher.GerritLauncher.main(GerritLauncher.java:56)
        at Main.main(Main.java:25)
1)原因1,google搜素到有如下可能,就是我们在新的gerrit的gerrit.config中增加了如下索引的配置
 [index]
        type = LUCENE

而我们的系统中,并未安装Lucene,因此参照网上的例子安装下Lucene(http://keping.me/ubuntu%E4%B8%8Blucene%E7%8E%AF%E5%A2%83%E6%90%AD%E9%85%8D/)。


2)Lucene安装完毕了,试一下,发现仍然报上述错误。

万般无奈之下,只能按照提示重新跑了一遍

java -jar gerrit.war init -d /home/watasianata/gerrit_review

逐个参数检查,终于发现原来是在安装Lucene时,将原本jkd1.7的环境改为了jdk1.8,而gerrit却仍然采用了jdk1.7的配置,能不出错吗?

赶紧将
        user = watasianata
        javaHome = /usr/local/devtools/jdk1.8.0_45/jre

改好。

再次试,这次仍然出错:

[2016-07-29 03:24:10,152] [main] INFO  com.google.gerrit.server.plugins.PluginLoader : Loaded plugin reviewnotes, version v2.12.3
[2016-07-29 03:24:10,214] [main] INFO  com.google.gerrit.server.plugins.PluginLoader : Loaded plugin singleusergroup, version v2.12.3
[2016-07-29 03:24:10,216] [main] ERROR com.google.gerrit.pgm.Daemon : Unable to start daemon
com.google.inject.ProvisionException: Unable to provision, see the following errors:

1) No index versions ready; run Reindex

1 error
        at com.google.gerrit.lucene.LuceneVersionManager.start(LuceneVersionManager.java:124)
        at com.google.gerrit.lifecycle.LifecycleManager.start(LifecycleManager.java:74)
        at com.google.gerrit.pgm.Daemon.start(Daemon.java:302)
        at com.google.gerrit.pgm.Daemon.run(Daemon.java:203)
        at com.google.gerrit.pgm.util.AbstractProgram.main(AbstractProgram.java:64)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:497)
        at com.google.gerrit.launcher.GerritLauncher.invokeProgram(GerritLauncher.java:159)
        at com.google.gerrit.launcher.GerritLauncher.mainImpl(GerritLauncher.java:100)
        at com.google.gerrit.launcher.GerritLauncher.main(GerritLauncher.java:56)
        at Main.main(Main.java:25)

这次的信息明确多了,直接重新reindex一次,

java -jar ~/tool/gerrit-2.12.3.war reindex

好啦!

5.按下面内容修改gerrit_reviewsite/etc/gerrit.conf 及GERRIT的配置文件

[gerrit]
        basePath = git  //指定被gerrit管理的所有git库存放位置,即review_site_project/git/
        canonicalWebUrl = http://42.62.42.75:8090/project    

//指定web访问gerrit的网址//填自己的ip和端口号,勿完全抄

[database]
        type = h2          //指定gerrit所默认数据库类型,可以选用mysql
        database = db/ReviewDB    
[auth]
        type = HTTP    //指定浏览器登录gerrit时的认证方式
[sendemail]
        enable = true
        smtpServer = smtp.126.com
        smtpServerPort = 25
        smtpUser = xxxxxxxxxxxx@126.com
        smtpPass = xxxxxxxx
        sslVerify = false
        from = CodeReview<xxxxxxxx@126.com>

[container]
        user = gerritserver            //指定gerrit所在机器的用户身份与上文创建的用户对应一致
        javaHome = /usr/lib/jvm/jdk7/jre           //系统本身自带
[sshd]
        listenAddress = *:29418          //指定sshd服务监听的端口号
[httpd]
        listenUrl = http://*:8081/project            //指定http代理地址
[cache]
        directory = cache      //缓存位置



配置Apache


$sudo apt-get install  apache2.2-bin apache2.2-common apache2-utils apache2-mpm-worker

1.创建编辑apache配置文件,添加如下内容(下面以Ubuntu系统为例请注意不同操作系统apache配置文件的区别)也可配置 apache2.conf httpd.conf,我们这里配置的是/etc/apache2/sites-available/gerrit

$sudo vi /etc/apache2/sites-available/defalt   

<VirtualHost 192.168.134.59:8090>
    ServerName 192.168.134.59

    ProxyRequests Off
    ProxyVia Off
    ProxyPreserveHost On

    <Proxy *>
          Order deny,allow
          Allow from all
    </Proxy>

    <Location "/project/login/">
      AuthType Basic
      AuthName "Gerrit Code Review"
      AuthBasicProvider file
      AuthUserFile ../../../etc/apache2/passwords

//指定http登录认证的的paassword文件所在位置,放哪都行,根据后来 sudo htpasswd -cb  /etc/apache2/passwords admin pwxxx 来定。

      Require valid-user
    </Location>


    AllowEncodedSlashes On
    RedirectMatch  ^/project$                /project/
    ProxyPass /project/ http://127.0.0.1:8081/project/
    ProxyPassReverse /project/ http://127.0.0.1:8081/project/
</VirtualHost>


保存退出
$cd /etc/apache2/sites-enabled/
$sudo ln ../sites-available/gerrit .

2.创建passwd文件,添加gerrit登录用户,-c参数为创建,仅限第一次添加用户时使用
$sudo htpasswd -cb  /etc/apache2/passwords admin passwordxxx

第二次添加其他用户时,不要加-c了:
$sudo htpasswd -b  /etc/apache2/passwords test test


3继续配置apache2
   
$sudo vi /etc/apache2/http.conf //在文件中加入以下内容
ServerName localhost


$cd /etc/apache2/mods-enabled
$sudo ln -s /etc/apache2/mods-available/proxy.conf proxy.conf 
$sudo ln -s /etc/apache2/mods-available/proxy.load proxy.load 
$sudo ln -s /etc/apache2/mods-available/proxy_http.load proxy_http.load
配置apache2的监听端口:
/etc/apache2$sudo vi ports.conf 
NameVirtualHost *:80
Listen 80
Listen 8080    //不要给gerrit!
Listen 8000    //不要给gerrit!
添加apache2的tcp端口号,切记不要把gerrit的,即
Listen on port                 [8081]: 不要输入上面配置给apache2的端口号,切记!!!
可以用sudo netstat -lnp | grep 80   查看相关80的所有端口使用情况
否则gerrit 起不来的
搭建多个gerrit 时Listen on port                 [8081]:可以用8082 8083 8084 等

 

Apache2 配置安装 FQA:

Q:启动apache报错

Syntax error on line 300 of /etc/apache2/apache2.conf:Invalid command 'ProxyPass', perhaps misspelled or defined by a module not included in the server configuration   ...fail!
A:配置了反向代理,但是没有打开module,执行下面操作
cd /etc/apache2/mods-enabled
ln -s /etc/apache2/mods-available/proxy.conf proxy.conf 
ln -s /etc/apache2/mods-available/proxy.load proxy.load 
 ln -s /etc/apache2/mods-available/proxy_http.load proxy_http.load
Q:启动Apache报错
No apache MPM package installed
A:安装apache2-mpm-worker软件包
$sudo apt-get install apache2-mpm-worker
Q:启动Apache报错
 apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1 for ServerName
A:修改/etc/apache2/http.conf文件,在文件中加入以下内容
ServerName localhost
 
Q:(13)Permission denied: make_sock: could not bind to address 0.0.0.0:80

A:需要用ROOT用户执行   直接 sudo  /etc/init.d/apache2 restart  就OK了    

启动服务

1.启动apache
sudo /etc/init.d/apache2 restart 
2.启动gerrit服务
$review_site_project/bin/gerrit.sh start 

登录gerrit

在浏览器地址栏中输入

192.168.11.73/project/    

注:Subdirectory on proxy server [/]:选择直接跳过  则192.168.11.73:80

在显示的登录框中输入用户名/密码,

即之前配置passwords 

$sudo htpasswd -cb  /etc/apache2/passwords admin passwordxx
admin
passwordxx

Note: 请注意第一个登入的用户,Gerrit会自动将其定义为管理员

3. 接入企业内部域账号
    <Location "/project/login">
      AuthType Basic
      AuthName "Gerrit Code Review"
      AuthBasicProvider ldap
      AuthzLDAPAuthoritative off
      AuthLDAPURL "ldap://192.168.xx.x:xxx/OU=xxxxx,OU=_BJKS(xxx),DC=xxxxx,DC=cn?sAMAccountName?sub?(objectClass=user)"
      AuthLDAPBindDN xxxx@kingsoft.cn
      AuthLDAPBindPassword xxxx
      Require valid-user
    </Location>






<think>好的,用户需要查找关于Gerrit安装指南、教程或步骤。首先,我需要回忆一下Gerrit的基本安装流程,并结合提供的引用内容来组织回答。 根据引用[1],Gerrit的官方网站是重要的资源,应该首先推荐用户访问官网获取最新文档。接着,引用[2]提到了Gitweb的集成,虽然这不是安装的核心步骤,但可能涉及后续配置。引用[3]中的Nginx配置示例对设置反向代理很有帮助,安装过程中可能需要配置Web服务器。 接下来,我需要整理安装步骤。通常,Gerrit安装包括准备环境(Java、Git)、下载Gerrit WAR文件、初始化安装配置数据库、设置反向代理(如Nginx),以及基本配置和验证。需要确保每个步骤都清晰,并正确引用相关材料。例如,在数据库配置部分,可能需要提到引用[3]中的反向代理设置,而初始化步骤可以参考引用[1]的官方网站文档。 同时,用户可能遇到的问题包括Java版本不兼容、权限设置错误或反向代理配置不当,应该在注意事项中提醒这些点。最后,生成的相关问题需要围绕安装后的配置、优化和常见问题解决,帮助用户进一步学习。</think>### Gerrit安装指南 Gerrit是一个基于Git的代码审查工具,以下是安装的核心步骤及注意事项: --- #### **1. 环境准备** - **Java环境**:确保安装Java 11或更高版本(推荐OpenJDK)[^1] - **Git版本**:安装Git 2.x及以上版本 - **数据库**:支持PostgreSQL、MySQL或内置H2数据库(生产环境建议使用外部数据库) --- #### **2. 下载Gerrit** 从官网下载最新WAR文件: ```bash wget https://gerrit-releases.storage.googleapis.com/gerrit-3.8.1.war ``` --- #### **3. 初始化安装** 执行交互式初始化命令: ```bash java -jar gerrit-3.8.1.war init --batch -d /path/to/gerrit_site ``` 参数说明: - `--batch`:跳过交互式配置(适合自动化部署) - `-d`:指定安装目录 --- #### **4. 数据库配置** 若选择外部数据库(以PostgreSQL为例): 1. 创建数据库和用户 2. 修改`gerrit_site/etc/gerrit.config`: ```config [database] type = postgresql hostname = localhost database = gerrit username = gerrit_user ``` --- #### **5. 反向代理配置(以Nginx为例)** 参考引用[3]的配置示例,创建`/etc/nginx/conf.d/gerrit.conf`: ```nginx server { listen 80; server_name gerrit.example.com; location / { proxy_pass http://localhost:8081; proxy_set_header Host $host; proxy_set_header X-Forwarded-For $remote_addr; } } ``` 重启Nginx生效。 --- #### **6. 基础配置** - **认证方式**:在`gerrit.config`中设置LDAP、OAuth或OpenID - **邮件通知**:配置SMTP服务器以发送审核通知 - **插件管理**:通过`gerrit plugin install`命令安装必要插件 --- #### **7. 启动与验证** ```bash /path/to/gerrit_site/bin/gerrit.sh start ``` 访问`http://gerrit.example.com`,确认界面正常加载。 --- #### **注意事项** 1. 需开放8081(Gerrit服务端口)和29418(Git协议端口) 2. 生产环境建议禁用H2数据库,改用MySQL/PostgreSQL 3. 定期备份`gerrit_site`目录下的配置和数据 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值