Gerrit 版本维护与代码评审系统的搭建。
最近在公司内部推广Gerrit,趟过不少坑,好记性不如烂笔头,先记下来。
注:本文是在Windows Server 2016下进行的验证,Linux平台大同小异。
准备工作:安装Git, 安装Java。
一、安装Apache
下载 Apache:
https://www.apachehaus.com/cgi-bin/download.plx
根据需要下载32/64位版本。
绿色软件,不用安装,解压缩即可。
我的目录是: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
ServerName review.example.com
ProxyRequests Off
ProxyVia Off
ProxyPreserveHost On
Order deny,allow
Allow from all
AuthType Basic
AuthName "Gerrit Code Review"
Require valid-user
AuthUserFile D:/dev/config/gerrit_passwd
AllowEncodedSlashes On
ProxyPass / http://192.168.100.123:8099/ nocanon
ProxyPassReverse / http://192.168.100.123:8099/
####################################
其中192.168.100.123:8099 是即将安装Gerrit服务的地址,nocanon为必选项,否则反向代理会出问题(参见:http://blog.csdn.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
[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。
注: 可在开始菜单的“启动”中加入开机自启项。
再次启动 apache (httpd.exe)
在浏览器地址栏输入:127.0.0.1:8080
输入密码后就可以顺利使用了!