Ubuntu 18.04+Postgresql 10+Gerrit 2.15.19+nginx 1.14
安装配置指南
要保证代码的高质量,那必须要进行同行评审代码检查,所有代码都必须经过 Review 才能 merge 到主干。这还要借助于代码审查系统,来改善和保证提交代码质量,还有益于制定研发流程及代码规范,加深研发团队成员沟通等等。
目前的代码审查工具有太多,有开源免费,也有商业收费的,使用功能上也都差不多,下面列一些常见的代码审查工具,根据实际需要进行选择使用。
CodeStriker、RhodeCode、Codebrag、Phabricator、Codifferous、Barkeep、Crucible、Code Review Tool、Malevich、SmartBear、Review Assistant、Review Board、CodeReviewer、JArchitect、Reviewale。
下面进入正题,准备安装配置各应用,搭建 Web 服务。
1、目录
- 操作系统:Ubuntu 18.04.3 LTS (GNU/Linux 4.15.0-117-generic x86_64)
- 数据库:postgres (PostgreSQL) 10.14 (Ubuntu 10.14-0ubuntu0.18.04.1)
- 代码审查系统:Gerrit Code Review gerrit-2.15.19
- Web 服务器:nginx/1.14.0 (Ubuntu) 高性能的HTTP和反向代理 Web 服务器
- Web 访问认证:htpasswd 是 Apache 附带的程序,能生成包含用户名和密码的MD5加密文件
2、安装配置
一、先安装 Ubuntu 操作系统,在这里就默认安装完成,不详细介绍安装过程,只说明一些注意事项。
系统安装完成后,首先要执行一下系统更新,更新完成了在接着安装配置 JDK 环境。
执行如下两条指令:
$ sudo apt-get update
$ sudo apt-get -y upgrade
以上将完成系统更新操作,JDK 环境也默认已安装配置好,也忽略安装过程,接着往下安装 PostgreSQL 数据库。
二、安装 PostgreSQL 数据库
接着执行如下的安装指令:
~$ sudo apt-get -y install postgresql postgresql-contrib
Success. You can now start the database server using:
/usr/lib/postgresql/10/bin/pg_ctl -D /var/lib/postgresql/10/main -l logfile start
Ver Cluster Port Status Owner Data directory Log file
10 main 5432 down postgres /var/lib/postgresql/10/main /var/log/postgresql/postgresql-10-main.log
update-alternatives: using /usr/share/postgresql/10/man/man1/postmaster.1.gz to provide /usr/share/man/man1/postmaster.1.gz (postmaster.1.gz) in auto mode
Setting up postgresql (10+190ubuntu0.1) ...
Setting up postgresql-contrib (10+190ubuntu0.1) ...
Processing triggers for ureadahead (0.100.0-21) ...
Processing triggers for systemd (237-3ubuntu10.24) ...
Processing triggers for libc-bin (2.27-3ubuntu1) ...
~$
~$ /usr/lib/postgresql/10/bin/postgres -V
postgres (PostgreSQL) 10.14 (Ubuntu 10.14-0ubuntu0.18.04.1)
显示 Success 就说明数据库已安装成功了,下面可以查看一下安装的 PostgreSQL 数据库版本信息,执行如下的指令查看:
~$ cd /usr/lib/postgresql/10/bin
~$ ./postgres -V
接着在查看一下数据库的服务状态,执行下面的指令:
~$ sudo ps -ef|grep postgres
~$ sudo service postgresql status
以上操作 PostgreSQL 数据库就算安装完成,接着创建用户、创建数据库、给用户授权。
执行下面的操作,登录数据库。
~$ sudo -i -u postgres
查看所有数据库,执行下面的指令:
postgres=# \l
执行下面指令,查看帮助:
postgres=# \help
执行下面指令,显示用户及用户属性:
postgres=# \du
创建 gerrit 要使用的数据库,执行下面的指令创建:
postgres-# create database gerritdb;
创建 gerrit 要访问的数据库用户,执行下面的指令:
给新创建的数据库用户 gerrit2 设置密码,执行授权,依次执行下面的四条指令:
到此 PostgreSQL 数据库的配置就全部结束了。
三、安装配置 gerrit
提前下载好所需要的版本 *.war 包安装文件,执行下面的指令,进行安装配置:
~$ java -jar gerrit-2.15.19.war init -d /home/scm/review_site
*** Experimental features
***
Enable any experimental features [y/N]?
Initialized /home/scm/review_site
Executing /home/scm/review_site/bin/gerrit.sh start
Starting Gerrit Code Review: WARNING: Could not adjust Gerrit's process for the kernel's out-of-memory killer.
This may be caused by /home/scm/review_site/bin/gerrit.sh not being run as root.
Consider changing the OOM score adjustment manually for Gerrit's PID=11095 with e.g.:
echo '-1000' | sudo tee /proc/11095/oom_score_adj
OK
Waiting for server on 127.0.0.1:80 ... OK
Opening http://127.0.0.1/#/admin/projects/ ...FAILED
Open Gerrit with a JavaScript capable browser:
http://127.0.0.1/#/admin/projects/
~$
直到最后的指令结束,gerrit 初始化安装配置也就完成,安装配置过程中如果没有错,gerrit 服务就正常启动了。
# gerrit 初始化
~$ java -jar gerrit-2.15.19.war init -d /home/scm/review_site
WARNING: An illegal reflective access operation has occurred
WARNING: Illegal reflective access by com.google.inject.internal.cglib.core.$ReflectUtils$1 (file:/home/scm/.gerritcodereview/tmp/gerrit_1484140920033380220_app/guice-4.2.0.jar) to method java.lang.ClassLoader.defineClass(java.lang.String,byte[],int,int,java.security.ProtectionDomain)
WARNING: Please consider reporting this to the maintainers of com.google.inject.internal.cglib.core.$ReflectUtils$1
WARNING: Use --illegal-access=warn to enable warnings of further illegal reflective access operations
WARNING: All illegal access operations will be denied in a future release
Using secure store: com.google.gerrit.server.securestore.DefaultSecureStore
[2020-09-22 01:19:58,385] [main] INFO com.google.gerrit.server.config.GerritServerConfigProvider : No /home/scm/review_site/etc/gerrit.config; assuming defaults
*** Gerrit Code Review 2.15.19
***
Create '/home/scm/review_site' [Y/n]? Y
*** Git Repositories
***
Location of Git repositories [git]: git
*** SQL Database
***
Database server type [h2]: postgresql
Server hostname [localhost]:
Server port [(postgresql default)]: 5432
Database name [reviewdb]: gerritdb
Database username [scm]: gerrit2
gerrit2's password :
confirm password :
*** NoteDb Database
***
Use NoteDb for change metadata?
See documentation:
https://gerrit-review.googlesource.com/Documentation/note-db.html
Enable [Y/n]?
*** 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]? y
*** Email Delivery
***
SMTP server hostname [localhost]:
SMTP server port [(default)]:
SMTP encryption [none/?]:
SMTP username :
*** Container Process
***
Run as [scm]:
Java runtime [/usr/local/jdk11.0.7]:
Copy gerrit-2.15.19.war to /home/scm/review_site/bin/gerrit.war [Y/n]? Y
Copying gerrit-2.15.19.war to /home/scm/review_site/bin/gerrit.war
*** SSH Daemon
***
Listen on address [*]:
Listen on port [29418]:
Generating SSH host key ... rsa... dsa... ed25519... ecdsa 256... ecdsa 384... ecdsa 521... done
*** HTTP Daemon
***
Behind reverse proxy [y/N]? y
Proxy uses SSL (https://) [y/N]?
Subdirectory on proxy server [/]:
Listen on address [*]: 127.0.0.1
Listen on port [8081]:
Canonical URL [http://127.0.0.1/\]:
*** Cache
***
*** Plugins
***
Installing plugins.
Install plugin commit-message-length-validator version v2.15.19 [y/N]? y
Installed commit-message-length-validator v2.15.19
Install plugin download-commands version v2.15.19 [y/N]? y
Installed download-commands v2.15.19
Install plugin hooks version v2.15.19 [y/N]? y
Installed hooks v2.15.19
Install plugin replication version v2.15.19 [y/N]? y
Installed replication v2.15.19
Install plugin reviewnotes version v2.15.19 [y/N]? y
Installed reviewnotes v2.15.19
Install plugin singleusergroup version v2.15.19 [y/N]? y
Installed singleusergroup v2.15.19
Initializing plugins.
*** Experimental features
***
Enable any experimental features [y/N]?
Initialized /home/scm/review_site
Executing /home/scm/review_site/bin/gerrit.sh start
Starting Gerrit Code Review: WARNING: Could not adjust Gerrit's process for the kernel's out-of-memory killer.
This may be caused by /home/scm/review_site/bin/gerrit.sh not being run as root.
Consider changing the OOM score adjustment manually for Gerrit's PID=11095 with e.g.:
echo '-1000' | sudo tee /proc/11095/oom_score_adj
OK
Waiting for server on 127.0.0.1:80 ... OK
Opening http://127.0.0.1/#/admin/projects/ ...FAILED
Open Gerrit with a JavaScript capable browser:
http://127.0.0.1/#/admin/projects/
~$
配置有错就显示 ...FAILED ,说明安装配置过程中,有那个步骤配置肯定出错了,服务启动有异常,就需要重新检查一下配置文件,配置正确了重新启动就可以了。Gerrit 有两种工作方式,通常都采用的是 http 方式,也就是说登录 Web 页面,审核人员就可以对提交的代码进行评审以及后续的分支合并操作,所以下面就进行 Web 服务的安装。
四、安装 nginx 服务
执行下面的指令进行安装:
~$ sudo apt-get -y install nginx
顺利安装完成,默认服务已经启动,下面查看一下服务状态,执行下面的指令:
~$ systemctl status nginx
nginx 服务非常小,安装很快就结束了,下面进行 nginx 服务的配置。
进入到 nginx 的安装目录,显示如下:
进入到 sites-enabled 目录下,修改 default 文件,修改如下内容:
绿框中标注的就是要修改的内容,按实际环境修改即可。
然后在检查一下 gerrit 的配置,进入你初始化安装目录下,找到 gerrit.config 文件,修改如下:
绿框中标注的就是要修改及注意的内容,按实际环境修改即可。
五、最后安装 htpasswd
htpasswd 是 Apache 附带的程序,就是用来生成包含用户名和密码的文本文件。
只需要安装 apache2-utils 就可以了,执行下面的指令进行安装:
~$ sudo apt search htpasswd
~$ sudo apt-get -y install apache2-utils
安装完成,就可以执行指令来生成用户账户,用来登录 gerrit 系统了,执行下面的指令创建:
~$ htpasswd -c /home/scm/review_site/etc/passwords scm
全部安装配置就结束了,下面分别启动 nginx 服务 跟 gerrit 服务,访问 Web 系统就用上面创建的用户来登录,看看登录页面效果吧。
系统能正常访问登录,详细的安装配置也就结束了,希望对各位有帮助,觉得有帮助就点个赞吧!!!
在Windows下的Tomcat中安装Gerrit
https://blogs.sap.com/2013/06/03/install-gerrit-in-tomcat-under-windows/