Gerrit是一个基于Git版本控制系统的运行于Web浏览器上的Code Review工具,本文叙述如何在Ubuntu 16.04上安装Gerrit服务。(当然安装Gerrit的方法有很多,本文只是其中之一)
文章目录
- 前提
- 安装PostgreSQL数据库并创建用户
- 下载、配置和运行Gerrit服务
- 安装Apache进行反向代理
- 配置登录账号密码
- 重启服务,验证效果
前提
依照本文实践的前提如下:
- 一台具有公网IP地址的ECS服务器
- 服务器有访问公网资源的权限
- 服务器的操作系统为Ubuntu 16.04
- 操作者拥有对ECS服务器的网络控制权限
- 已经安装了Java运行环境(JRE)
安装PostgreSQL数据库并创建用户
apt install postgresql
# 创建pg用户名 pguser
sudo -u postgres createuser -RDIElPS <pguser>
# 创建pg数据库 pgdb
sudo -u postgres createdb -E UTF-8 -O <pguser> <pgdb>
下载、配置和运行Gerrit服务
下载页面地址 https://gerrit-releases.storage.googleapis.com/index.html ,目前最新版是 gerrit-2.16.5.war ,我们以它为例。
下载完成后开始运行如下命令进行配置:(注意修改/your/target/site_directory)
java -jar /your/path/to/gerrit-2.16.5.war -d /your/target/site_directory
在下面的交互式设置中,进行相应输入(其中的邮箱配置以阿里云邮为例):
*** Gerrit Code Review 2.16.5
***
Create '/your/target/site_directory' [Y/n]? Y
*** Git Repositories
***
Location of Git repositories [git]: [Enter]
*** SQL Database
***
Database server type [h2]: postgresql
Server hostname [localhost]: [Enter]
Server port [(postgresql default)]: [Enter]
Database name [reviewdb]: <pgdb>
Database username [root]: <pguser>
<pguser>'s password : <pgpwd>confirm password : <pgpwd>
*** Index
***
Type [lucene/?]: [Enter]
*** User Authentication
***
Authentication method [openid/?]: http
Get username from custom HTTP header [y/N]? [Enter]
SSO logout URL : [Enter]
Enable signed push support [y/N]? [Enter]
*** Review Labels
***
Install Verified label [y/N]? [Enter]
*** Email Delivery
***
SMTP server hostname [localhost]: smtp.mxhichinacom
SMTP server port [(default)]: 25
SMTP encryption [none/?]:
SMTP username [root]: 你的阿里云邮邮件地址
email@email.com's password : 你的邮件密码confirm password : 重复你的邮件密码
*** Container Process
***
Run as [root]: [Enter]
Java runtime [/usr/lib/jvm/jdk1.8.0_201/jre]: [Enter]
Copy gerrit-2.16.5.war to /your/target/site_directory/bin/gerrit.war [Y/n]? [Enter]
Copying gerrit-2.16.5.war to /your/target/site_directory/bin/gerrit.war
*** SSH Daemon
***
Listen on address [*]:
Listen on port [29418]:
Generating SSH host key ... rsa... ed25519... ecdsa 256... ecdsa 384... ecdsa 521... done
*** HTTP Daemon
***
Behind reverse proxy [y/N]? y
Proxy uses SSL (https://) [y/N]? [Enter]
Subdirectory on proxy server [/]: [Enter]
Listen on address [*]: [Enter]
Listen on port [8081]: [Enter]
Canonical URL [http://<your.ip:port>/]:
*** Cache
***
*** Plugins
***
Installing plugins.
Install plugin codemirror-editor version v2.16.5 [y/N]? [Enter]
Install plugin commit-message-length-validator version v2.16.5 [y/N]? [Enter]
Install plugin download-commands version v2.16.5 [y/N]? [Enter]
Install plugin hooks version v2.16.5 [y/N]? [Enter]
Install plugin replication version v2.16.5 [y/N]? [Enter]
Install plugin reviewnotes version v2.16.5 [y/N]? [Enter]
Install plugin singleusergroup version v2.16.5 [y/N]? [Enter]
Initializing plugins.
No plugins found with init steps.
进行完以上初始化步骤之后,还可以进一步在/your/target/site_directory/etc/gerrit.config
中修改配置。例如,我们在邮件配置中加入一条from属性:
[sendemail]smtpServer = smtp.mxhichinacomsmtpServerPort = 25smtpUser = email@email.comfrom = CodeReview<email@email.com>
这样Gerrit服务就配置完成了,我们重启Gerrit:
/your/target/site_directory/bin/gerrit.sh restart
安装Apache进行反向代理
安装Apache:
apt install apache2
编辑Apache配置/etc/apache2/sites-enabled/000-default.conf
,注意和你刚刚对Gerrit服务做的配置保持一致(例如8081端口、/your/target/site_directory/etc/passwords
密码文件路径):
<VirtualHost *:80>ServerName <你的主机名>ProxyRequests OffProxyVia OffProxyPreserveHost On<Proxy *>Order deny,allowAllow from all</Proxy><Location /login/>AuthType BasicAuthName "Welcome to Gerrit Code Review Site"Require valid-userAuthUserFile /your/target/site_directory/etc/passwords</Location>AllowEncodedSlashes OnProxyPass / http://127.0.0.1:8081/
</VirtualHost>
配置登录账号密码
由于在上一步配置了密码文件路径,用于鉴权,我们需要在文件中添加账号信息。
touch /your/target/site_directory/etc/passwords
/usr/bin/htpasswd -b review_site/etc/passwords <你的Gerrit用户名> <密码>
重启服务,验证效果
service apache2 restart
/your/target/site_directory/bin/gerrit.sh restart
打开网页地址 http://<你的主机名>:80/
,观察效果: