版本说明
系统版本:Ubuntu server 14.04
Gerrit版本:Gerrit-3.1.2
需要安装的程序
- Ubuntu server 14.04
- Gerrit-3.1.2
- nginx 1.4.6(版本可以随意)
- JDK 1.8x (必须为1.8版本)
- apache2-utils
- git
安装步骤
安装好Ubuntu server系统后开始安装Gerrit
1.新建用户gerrit
在指定用户gerrit下搭建我们的Gerrit,避免影响其它用户。
ubuntu:~$ sudo useradd gerrit -m -s /bin/bash ubuntu:~$ sudo passwd gerrit
将gerrit用户添加sudo权限,打开文件
sudo vim /etc/sudoers
按照root用户配置,添加一行,如下:
# User privilege specification root ALL=(ALL:ALL) ALL gerrit ALL=(ALL:ALL) ALL
切换到gerrit用户,后面所有的配置都是在gerrit用户上进行的:
su gerrit
2.安装JDK
JDK版本必须为1.8,我使用的版本为jdk-8u212-linux-x64.tar.gz
。
将该文件拷贝到gerrit主目录,并运行命令解压tar -xvf jdk-8u212-linux-x64.tar.gz
即可解压到当前文件来,并生成jdk1.8.0_212
文件夹。
接下来配置环境变量,我们只为当前用户配置,打开~/.bashrc,在文件末尾添加如下配置:
export JAVA_HOME=/home/gerrit/jdk1.8.0_212 export JRE_HOME=${JAVA_HOME}/jre export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib export PATH=${JAVA_HOME}/bin:$PATH
再执行sudo source ~/.bashrc
更新环境变量。
可以运行java -version
或者javac
等命令进行验证。
3.下载并安装gerrit
下载地址,我下载的是当前最新版本gerrit-3.1.2-war。
gerrit在3.0版本后有重大更新,安装时可能会有些许不同。3.0之后数据库默认使用git来存储,所以必须要安装git。
sudo apt-get install git
将war包放在gerrit用户主目录下面,执行如下命令进行安装:
java -jar gerrit-3.1.2.war init -d review_site
后面有很多的安装选项,其中重要的是设置一下监听端口,验证方式和插件安装,插件的安装全部选y。
gerrit@ubuntu:~$ java -jar gerrit-3.1.2.war init -d review_site Using secure store: com.google.gerrit.server.securestore.DefaultSecureStore [2020-02-02 13:46:20,103] [main] INFO com.google.gerrit.server.config.GerritServerConfigProvider : No /home/gerrit/review_site/etc/gerrit.config; assuming defaults *** Gerrit Code Review 3.1.2 *** *** Git Repositories *** Location of Git repositories [git]: GerritResource *** Index *** Type [lucene]: *** User Authentication *** Authentication method [openid/?]: http Get username from custom HTTP header [y/N]? SSO logout URL : Enable signed push support [y/N]? *** Review Labels *** Install Verified label [y/N]? *** Email Delivery *** SMTP server hostname [localhost]: SMTP server port [(default)]: SMTP encryption [none/?]: SMTP username : *** Container Process *** Run as [gerrit]: Java runtime [/home/bianjb/jdk1.8.0_212/jre]: Copy gerrit-3.1.2.war to review_site/bin/gerrit.war [Y/n]? Copying gerrit-3.1.2.war to review_site/bin/gerrit.war *** SSH Daemon *** Listen on address [*]: 8181 Listen on port [29418]: Generating SSH host key ... rsa... ed25519... ecdsa 256... ecdsa 384... ecdsa 521... done *** HTTP Daemon *** Behind reverse proxy [y/N]? Use SSL (https://) [y/N]? Listen on address [*]: 8181^Cgerrit@ubuntu:~$ ^C gerrit@ubuntu:~$ clear gerrit@ubuntu:~$ java -jar gerrit-3.1.2.war init -d review_site Using secure store: com.google.gerrit.server.securestore.DefaultSecureStore [2020-02-02 13:47:28,872] [main] INFO com.google.gerrit.server.config.GerritServerConfigProvider : No /home/gerrit/review_site/etc/gerrit.config; assuming defaults *** Gerrit Code Review 3.1.2 *** *** Git Repositories *** Location of Git repositories [git]: GerritResource *** Index *** Type [lucene]: *** User Authentication *** Authentication method [openid/?]: http Get username from custom HTTP header [y/N]? SSO logout URL : Enable signed push support [y/N]? *** Review Labels *** Install Verified label [y/N]? *** Email Delivery *** SMTP server hostname [localhost]: SMTP server port [(default)]: SMTP encryption [none/?]: SMTP username : *** Container Process *** Run as [gerrit]: Java runtime [/home/bianjb/jdk1.8.0_212/jre]: Upgrade review_site/bin/gerrit.war [Y/n]? Copying gerrit-3.1.2.war to review_site/bin/gerrit.war *** SSH Daemon *** Listen on address [*]: Listen on port [29418]: *** HTTP Daemon *** Behind reverse proxy [y/N]? Use SSL (https://) [y/N]? Listen on address [*]: Listen on port [8787]: Canonical URL [http://ubuntu:8787/]: *** Cache *** Delete cache file /home/gerrit/review_site/cache/pure_revert.lock.db [y/N]? Delete cache file /home/gerrit/review_site/cache/web_sessions.lock.db [y/N]? Delete cache file /home/gerrit/review_site/cache/git_tags.lock.db [y/N]? Delete cache file /home/gerrit/review_site/cache/change_kind.lock.db [y/N]? Delete cache file /home/gerrit/review_site/cache/diff.lock.db [y/N]? Delete cache file /home/gerrit/review_site/cache/diff_summary.lock.db [y/N]? Delete cache file /home/gerrit/review_site/cache/conflicts.lock.db [y/N]? Delete cache file /home/gerrit/review_site/cache/mergeability.lock.db [y/N]? Delete cache file /home/gerrit/review_site/cache/oauth_tokens.lock.db [y/N]? Delete cache file /home/gerrit/review_site/cache/diff_intraline.lock.db [y/N]? *** Plugins *** Installing plugins. Install plugin codemirror-editor version v3.1.2 [y/N]? y Installed codemirror-editor v3.1.2 Install plugin commit-message-length-validator version v3.1.2 [y/N]? y Installed commit-message-length-validator v3.1.2 Install plugin delete-project version v3.1.2 [y/N]? y Installed delete-project v3.1.2 Install plugin download-commands version v3.1.2 [y/N]? y Installed download-commands v3.1.2 Install plugin gitiles version v3.1.2 [y/N]? y Installed gitiles v3.1.2 Install plugin hooks version v3.1.2 [y/N]? y Installed hooks v3.1.2 Install plugin plugin-manager version v3.1.2 [y/N]? y Installed plugin-manager v3.1.2 Install plugin replication version v3.1.2 [y/N]? y Installed replication v3.1.2 Install plugin reviewnotes version v3.1.2 [y/N]? y Installed reviewnotes v3.1.2 Install plugin singleusergroup version v3.1.2 [y/N]? y Installed singleusergroup v3.1.2 Install plugin webhooks version v3.1.2 [y/N]? y Installed webhooks v3.1.2 Initializing plugins. Initialized /home/gerrit/review_site Reindexing projects: 100% (2/2) with: reindex --site-path review_site --threads 1 --index projects Reindexed 2 documents in projects index in 0.2s (8.6/s)
最后启动gerrit
review_site/bin/gerrit.sh start
有时候可以启动不成功,这时就需要查看错误日志,位于~/review_site/logs/
目录下面,分析日志来解决启动时遇到的错误。
启动成功后就可以通过浏览器访问了,gerrit的监听是8787端口,所以在同一网络内访问http://192.168.111.129:8787
,其中192.168.111.129是我的机器的内网IP,如果安装没有问题就能看到如下界面:
image.png
提示身份验证错误,这是因为gerrit强制使用反向代理来进行访问,所以还需要配置反向代理。
4.配置反向代理
反向代理大部分使用nginx或者apache2,这里使用的是nginx。
首先安装nginx
sudo apt-get install nginx
再配置反向代理,打开/etc/nginx/nginx.conf,在http结点下添加如下内容
server { listen *:81; server_name localhost; allow all; deny all; auth_basic "Welcomme to Gerrit Code Review Site!"; auth_basic_user_file /home/gerrit/review_site/etc/gerrit.passwd; location / { proxy_pass http://127.0.0.1:8787; proxy_set_header X-Forwarded-For $remote_addr; proxy_set_header Host $host; } }
其中:
- listen *:81 是代理端口,也就是访问gerrit时需要浏览器地址栏的8787改为81
auth_basic_user_file/home/gerrit/review_site/etc/gerrit.passwd
是后面需要我们创建的身份验证文件- proxy_pass是被代理的地址,http://127.0.0.1:8787是本机的8787端口
保存后重新加载nginx配置
sudo nginx -s reload
5.创建用户名和密码
gerrit的第一个登录的用户是比较特殊的,具有特殊仅限。
使用htpasswd工具创建用户名和密码。
安装htpasswd工具
sudo apt-get install apache2-utils
创建用户admin,并设置密码:
htpasswd -c /home/gerrit/review_site/etc/gerrit.passwd admin
该命令会在/home/gerrit/review_site/etc下面创建gerrit.passwd文件,并把admin用户名和密码保存在里面。
这时要重启gerrit
review_site/bin/gerrit.sh restart
重启的时间较长,请耐心等待。
6.登录验证
在同一网络的其它机器上的浏览器中输出地址:http://192.168.111.129:81,这时正常情况下会弹出登录界面:
image.png
输出第5步中创建的用户admin和密码
登录成功后,就会出现gerrit的的界面了:
image.png
到这时就完成了gerrit的安装过程,当然这只是使用gerrit很简单的一小步,后面还有很多的配置要做,以及学习如何使用gerrit。
问题总结
安装过程可能并不顺利,因为每个人的情况不同,你的ubuntu系统中可能有其它程序影响商端口号,也会产生较多的问题,总之要有耐心的一个一个解决。
- nginx重启错误
gerrit@ubuntu:~$ sudo nginx -s reload nginx: [error] open() "/run/nginx.pid" failed (2: No such file or directory)
解决方法:
gerrit@ubuntu:~$ sudo nginx -c /etc/nginx/nginx.conf gerrit@ubuntu:~$ sudo nginx -s reload