Contents [hide]
Gerrit,一种开放源代码的代码审查软件,使用网页界面。利用网页浏览器,同一个团队的软件开发者,可以相互审阅彼此修改后的代码,决定是否能够提交,回退或是继续修改。它使用版本控制系统Git作为底层,已经被广泛的应用到了各大公司的代码 review中。对于不太习惯使用git diff/difftool来查看两个相邻提交差异的同学来讲,gerrit也是一个不错的选择,当然,这样显然是大材小用了。不管如何,gerrit已经像git一样成为程序员必备的技能了。对于想学习而又没有gerrit环境的同学,可以参考本文在ubuntu电脑上快速搭建一个。
本文将基于以下环境使用nginx实现反向代理来搭建一个gerrit服务器:
注意:软件版本的不同有可能会导致即使相同的配置,最终不能正常工作。如果对相关软件不太熟悉的,请务必选用与本文一致的软件版本。
gerrit是一个java软件,因此需要安装JDK,这里我们使用openjdk-8。安装命令如下:
sudo add-apt-repository ppa:openjdk-r/ppa && sudo apt-get update && sudo apt-get install openjdk-8-jdk -y
Nginx是一款轻量级的web服务器软件,它将提供供我们访问的gerrit服务器。安装命令如下:
sudo apt-get install nginx -y
安装成功后在你的浏览器中输入服务器的IP地址,如果看到下面的显示,则表明Nginx已正确安装。
htpasswd
用于建立和更新登陆gerrit服务器的存储用户名/密码的文本文件。它是apache工具集下的一个工具,因此我们需要安装apache-utils。安装命令如下:
sudo apt-get install apache2-utils -y
安装包可以直接点击 gerrit release note页面下载 ,或者直接使用下面命令下载:
wget https://gerrit-releases.storage.googleapis.com/gerrit-2.15.4.war
到目前为止安装gerrit依赖的所有软件已经准备完毕,下面我们来开始安装。在安装前,需要说明一点的是:安装gerrit最好在服务器上新建一个user,这个账户只用来安装、配置并启动gerrit服务,因此,不需要赋给它更多的权限(比如root权限),而修改nginx的配置文件需要使用具有root权限的账户。因此,下文中涉及到修改gerrit配置文件,请切换回gerrit专用账户;其他操作(比如修改nginx配置文件),请使用具有root权限的账户。
使用下面的命令创建一个gerrit专用账户,账户名字就叫做gerrit
:
sudo adduser gerritsu gerritcd ~
接着使用下面的命令来安装gerrit(注意,这里应该使用gerrit专用账户):
java -jar ./gerrit-2.15.4.war init -d ~/gerrit_site
安装过程很简单,只需要使用默认的配置,一路回车下去就行了,只是在Authentication method
方式时输入http
。
安装的时候我们基本选择了默认配置,但是其中有两项是需要修改的。gerrit的配置文件具体路径为:/home/gerrit/gerrit_site/etc/gerrit.config
完整的文件如下,我们需要只需要修改第4行和第28行即可:
1 [gerrit] 2 basePath = git 3 serverId = 2d5e17e4-a507-424d-b5cd-f63d8e08e6fd 4 canonicalWebUrl = http://104.238.167.38:8085/ 5 [database] 6 type = h2 7 database = /home/gerrit/gerrit_site/db/ReviewDB 8 [noteDb 'changes'] 9 disableReviewDb = true 10 primaryStorage = note db 11 read = true 12 sequence = true 13 write = true 14 [index] 15 type = LUCENE 16 [auth] 17 type = HTTP 18 [receive] 19 enableSignedPush = false 20 [sendemail] 21 smtpServer = localhost 22 [container] 23 user = gerrit 24 javaHome = /usr/lib/jvm/java-8-openjdk-amd64/jre 25 [sshd] 26 listenAddress = *:29418 27 [httpd] 28 listenUrl = proxy-http://*:8085/ 29 [cache] 30 directory = cache
其中第4行表示要替换成你自己服务器的ip地址(104.238.167.38是我的服务器IP地址),端口号自己选择一个当前未被占用的即可。第28行意思是使用反向代理,端口号要和第4行的设置成一样。
接下来,需要为nginx添加gerrit的配置文件(注意,这里我们需要切换为拥有root权限的账户)。添加的目录为:/etc/nginx/conf.d
。在其下面新建一个文件命名为gerrit.conf
,然后将下面内容写入该文件,并保存。
server { listen *:358; server_name localhost; allow all; deny all; auth_basic 'Welcomme to Gerrit Code Review Site!'; auth_basic_user_file /home/gerrit/gerrit_site/etc/gerrit.passwd; location / { proxy_pass http://127.0.0.1:8085; proxy_set_header X-Forwarded-For $remote_addr; proxy_set_header Host $host; } }
其中,listen
表示nginx对外监听的端口号,设置成任意一个未被占用的即可(我这里设置成了358
)。proxy_pass
这句里面的端口号应该和gerrit配置文件(即2.4中的gerrit.config
)里设置的一样。
下面我们使用htpasswd
工具来建立和增加可登陆的gerrit账号(注意,这里应该使用gerrit专用账户)。
sudo htpasswd -c /home/gerrit/gerrit_site/etc/gerrit.passwd administrator
这里我们在/home/gerrit/gerrit_site/etc/
目录下新建了一个名为gerrit.passwd
的密码配置文件,并添加了一个名为administrator
的用户账号。
sudo htpasswd -m /home/gerrit/gerrit_site/etc/gerrit.passwd user1
使用-m
参数表示添加一个账户。这里我们在上述密码配置文件中添加了一个名为user1
的用户账号。
使用下列命令重启nginx(注意,这里我们需要切换为拥有root权限的账户):
sudo /etc/init.d/nginx restart
重启gerrit服务(注意,这里应该使用gerrit专用账户):
/home/gerrit/gerrit_site/bin/gerrit.sh restart
然后,打开浏览器访问104.238.167.38:358
(IP地址即为服务器的IP,端口号应为nginx监听的端口号),即可看到gerrit登陆界面:
然后输入账号登陆后,如果显示下面的画面,证明一切配置正常,gerrit就可以正常使用了。
注意,gerrit默认第一次成功登陆的账户为gerrit服务器的管理员账户,它拥有整个gerrit系统的最大权限,包括但不限于新建project,新增group,配置所有用户或者group对project的访问、代码下载、push和submit等权限,所以登陆的时候务必慎重!
gerrit登陆出错,有各种各样的问题,请试着先从以下思路看看能否解决:
1. 使用2.7.2提供的命令,重启nginx,然后重新gerrit。如果重启失败,查看gerrit启动log,一般位于/home/gerrit/gerrit_site/logs/error_log
。
2. 如果重启成功,但是登陆失败,请查看nginx的log,一般位于:/var/log/nginx
目录下。对于log中的错误,可以自行google解决。
3. 实在不行的话,可以考虑删掉gerrit的安装目录,即/home/gerrit/gerrit_site/
重新安装。
联系客服