版本说明
系统版本: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,如果安装没有问题就能看到如下界面:
提示身份验证错误,这是因为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,这时正常情况下会弹出登录界面:
输出第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
参考
Gerrit官网
Apache htpasswd命令用法详解
网友评论