Gerrit 系统的搭建

Gerrit 版本维护与代码评审系统的搭建。

 

最近在公司内部推广Gerrit,趟过不少坑,好记性不如烂笔头,先记下来。

 

 

 

注:本文是在Windows Server 2016下进行的验证,Linux平台大同小异。

 

准备工作:安装Git, 安装Java。

 

一、安装Apache

 

下载 Apache:

https://www.apachehaus.com/cgi-bin/download.plx

 

根据需要下载32/64位版本。

 

Gerrit 系统的搭建

 

 

绿色软件,不用安装,解压缩即可。

我的目录是:D:\dev\Apache24。

修改文件 Apache24\conf\httpd.conf,如下:

 

#Define SRVROOT "/Apache24"

Define SRVROOT "D:/dev/Apache24"

 

为以后方便调用,将目录 D:\dev\Apache24\bin 放在系统环境变量($PATH)里。

运行 D:\dev\Apache24\bin\httpd.exe(有些机器可能会需要安装VC14的运行库)。

也可以注册成系统服务:httpd.exe -k install -n "apache_service" -f "D:\dev\Apache24\conf\httpd.conf" 。

在浏览器地址栏输入:127.0.0.1, 可以看到 Apache Web服务器已经运行起来了。

(可能会遇到防火墙的问题,但与本文无关,就不赘述了)。

关掉httpd.exe。进一步修改配置文件(Apache24\conf\httpd.conf),如下:

 

#Listen 12.34.56.78:80

Listen 80

Listen 8088

 

LoadModule access_compat_module modules/mod_access_compat.so

LoadModule actions_module modules/mod_actions.so

LoadModule alias_module modules/mod_alias.so

LoadModule allowmethods_module modules/mod_allowmethods.so

LoadModule asis_module modules/mod_asis.so

LoadModule auth_basic_module modules/mod_auth_basic.so

#LoadModule auth_digest_module modules/mod_auth_digest.so

#LoadModule auth_form_module modules/mod_auth_form.so

#LoadModule authn_anon_module modules/mod_authn_anon.so

LoadModule authn_core_module modules/mod_authn_core.so

#LoadModule authn_dbd_module modules/mod_authn_dbd.so

#LoadModule authn_dbm_module modules/mod_authn_dbm.so

LoadModule authn_file_module modules/mod_authn_file.so

#LoadModule authn_socache_module modules/mod_authn_socache.so

#LoadModule authnz_fcgi_module modules/mod_authnz_fcgi.so

#LoadModule authnz_ldap_module modules/mod_authnz_ldap.so

LoadModule authz_core_module modules/mod_authz_core.so

#LoadModule authz_dbd_module modules/mod_authz_dbd.so

#LoadModule authz_dbm_module modules/mod_authz_dbm.so

LoadModule authz_groupfile_module modules/mod_authz_groupfile.so

LoadModule authz_host_module modules/mod_authz_host.so

#LoadModule authz_owner_module modules/mod_authz_owner.so

LoadModule authz_user_module modules/mod_authz_user.so

LoadModule autoindex_module modules/mod_autoindex.so

#LoadModule buffer_module modules/mod_buffer.so

#LoadModule cache_module modules/mod_cache.so

#LoadModule cache_disk_module modules/mod_cache_disk.so

#LoadModule cache_socache_module modules/mod_cache_socache.so

#LoadModule cern_meta_module modules/mod_cern_meta.so

LoadModule cgi_module modules/mod_cgi.so

#LoadModule charset_lite_module modules/mod_charset_lite.so

#LoadModule data_module modules/mod_data.so

LoadModule dav_module modules/mod_dav.so

LoadModule dav_fs_module modules/mod_dav_fs.so

#LoadModule dav_lock_module modules/mod_dav_lock.so

#LoadModule dbd_module modules/mod_dbd.so

LoadModule deflate_module modules/mod_deflate.so

LoadModule dir_module modules/mod_dir.so

#LoadModule dumpio_module modules/mod_dumpio.so

LoadModule env_module modules/mod_env.so

#LoadModule expires_module modules/mod_expires.so

#LoadModule ext_filter_module modules/mod_ext_filter.so

#LoadModule file_cache_module modules/mod_file_cache.so

LoadModule filter_module modules/mod_filter.so

LoadModule headers_module modules/mod_headers.so

#LoadModule heartbeat_module modules/mod_heartbeat.so

#LoadModule heartmonitor_module modules/mod_heartmonitor.so

#LoadModule http2_module modules/mod_http2.so

#LoadModule ident_module modules/mod_ident.so

#LoadModule imagemap_module modules/mod_imagemap.so

LoadModule include_module modules/mod_include.so

#LoadModule info_module modules/mod_info.so

LoadModule isapi_module modules/mod_isapi.so

LoadModule lbmethod_bybusyness_module modules/mod_lbmethod_bybusyness.so

LoadModule lbmethod_byrequests_module modules/mod_lbmethod_byrequests.so

#LoadModule lbmethod_bytraffic_module modules/mod_lbmethod_bytraffic.so

#LoadModule lbmethod_heartbeat_module modules/mod_lbmethod_heartbeat.so

#LoadModule ldap_module modules/mod_ldap.so

#LoadModule logio_module modules/mod_logio.so

LoadModule log_config_module modules/mod_log_config.so

#LoadModule log_debug_module modules/mod_log_debug.so

#LoadModule log_forensic_module modules/mod_log_forensic.so

#LoadModule lua_module modules/mod_lua.so

#LoadModule macro_module modules/mod_macro.so

LoadModule mime_module modules/mod_mime.so

#LoadModule mime_magic_module modules/mod_mime_magic.so

LoadModule negotiation_module modules/mod_negotiation.so

LoadModule proxy_module modules/mod_proxy.so

LoadModule proxy_ajp_module modules/mod_proxy_ajp.so

LoadModule proxy_balancer_module modules/mod_proxy_balancer.so

LoadModule proxy_connect_module modules/mod_proxy_connect.so

#LoadModule proxy_express_module modules/mod_proxy_express.so

#LoadModule proxy_fcgi_module modules/mod_proxy_fcgi.so

LoadModule proxy_ftp_module modules/mod_proxy_ftp.so

#LoadModule proxy_html_module modules/mod_proxy_html.so

LoadModule proxy_http_module modules/mod_proxy_http.so

#LoadModule proxy_http2_module modules/mod_proxy_http2.so

#LoadModule proxy_scgi_module modules/mod_proxy_scgi.so

#LoadModule proxy_wstunnel_module modules/mod_proxy_wstunnel.so

#LoadModule ratelimit_module modules/mod_ratelimit.so

#LoadModule reflector_module modules/mod_reflector.so

#LoadModule remoteip_module modules/mod_remoteip.so

#LoadModule request_module modules/mod_request.so

#LoadModule reqtimeout_module modules/mod_reqtimeout.so

LoadModule rewrite_module modules/mod_rewrite.so

#LoadModule sed_module modules/mod_sed.so

#LoadModule session_module modules/mod_session.so

#LoadModule session_cookie_module modules/mod_session_cookie.so

#LoadModule session_crypto_module modules/mod_session_crypto.so

#LoadModule session_dbd_module modules/mod_session_dbd.so

LoadModule setenvif_module modules/mod_setenvif.so

#LoadModule slotmem_plain_module modules/mod_slotmem_plain.so

LoadModule slotmem_shm_module modules/mod_slotmem_shm.so

#LoadModule socache_dbm_module modules/mod_socache_dbm.so

#LoadModule socache_memcache_module modules/mod_socache_memcache.so

LoadModule socache_shmcb_module modules/mod_socache_shmcb.so

#LoadModule speling_module modules/mod_speling.so

LoadModule ssl_module modules/mod_ssl.so

#LoadModule status_module modules/mod_status.so

#LoadModule substitute_module modules/mod_substitute.so

#LoadModule unique_id_module modules/mod_unique_id.so

#LoadModule userdir_module modules/mod_userdir.so

#LoadModule usertrack_module modules/mod_usertrack.so

LoadModule version_module modules/mod_version.so

#LoadModule vhost_alias_module modules/mod_vhost_alias.so

#LoadModule watchdog_module modules/mod_watchdog.so

#LoadModule xml2enc_module modules/mod_xml2enc.so

 

 

<VirtualHost *:8088>

ServerName review.example.com

ProxyRequests Off

ProxyVia Off

ProxyPreserveHost On

 

<Proxy *8088>

Order deny,allow

Allow from all

</Proxy>

 

<Location /login/>

AuthType Basic

AuthName "Gerrit Code Review"

Require valid-user

AuthUserFile D:/dev/config/gerrit_passwd

</Location>

 

AllowEncodedSlashes On

ProxyPass / http://192.168.100.123:8099/ nocanon

ProxyPassReverse / http://192.168.100.123:8099/

</VirtualHost>

 

####################################

 

其中192.168.100.123:8099 是即将安装Gerrit服务的地址,nocanon为必选项,否则反向代理会出问题(参见:http://blog.****.net/luansxx/article/details/18305731

 

二、配置Gerrit.

Gerrit 需要用到Java和Git,这个不多说了,请自行安装。

下载最新版本 https://gerrit-releases.storage.googleapis.com/index.html (可能需要Fan Qiang)。

命令行执行:Java -jar gerrit.war init -d  D:/dev/gerrit,安装过程开始,选默认选项即可。

下面拷贝war包到安装目录:

Copy gerrit.war to d:\dev\gerrit\bin\gerrit.war

 

完成后,修改配置文件:D:\dev\gerrit\etc\gerrit.config:

 

[gerrit]

basePath = git

serverId = 723c7930-84ef-434b-9b3a-c3ed970b0106

canonicalWebUrl = http://192.168.100.123:8088/

[database]

type = h2

database = db/ReviewDB

[noteDb "changes"]

disableReviewDb = true

primaryStorage = note db

read = true

sequence = true

write = true

[index]

type = LUCENE

[auth]

type = HTTP

[receive]

enableSignedPush = false

[sendemail]

smtpServer = smtp.XXX.com

smtpUser = [email protected]

smtpPass = XXXXX

smtpServerPort = 465

smtpEncryption = ssl

from=CodeReview<[email protected]>

[container]

user = folle

javaHome = C:\\Program Files\\Java\\jre-9.0.1

[sshd]

listenAddress = *:29418

[httpd]

listenUrl = http://*:8099/

[cache]

directory = cache

 

###################################

创建用户

htpasswd -m d:/dev/config/gerrit_passwd aUser

 

创建的第一个用户默认是系统的超级管理员!

..........

..........

命令行启动Gerrit:  gerrit.sh start。

注: 可在开始菜单的“启动”中加入开机自启项。

Gerrit 系统的搭建

再次启动 apache (httpd.exe)

在浏览器地址栏输入:127.0.0.1:8080

Gerrit 系统的搭建

 

输入密码后就可以顺利使用了!