本次Gerrit安装环境:CentOS7系统,Java版本1.8.0_211,nginx(用于反向代理)。
Gerrit官网下载,本次使用的是Gerrit的2.16.2版本,官网目前最新版本为3.2.3,我在3.2.3的安装中遇到了问题(h2数据库设置问题),所以选用了其他人教程中使用的2.16.2版本。
添加gerrit用户,并切换到gerrit用户。
useradd gerrit
su gerrit
cd ~
用xftp将下载问gerrit-2.16.2.war文件传输到服务器的/home/gerrit目录下,执行安装命令,除了开启http认证、设置反向代理、指定ip地址和端口号外,其他都选择默认(smtp邮件系统之后通过配置文件进行配置)。
java -jar gerrit-2.16.2.war init -d ~/gerrit-review
Using secure store: com.google.gerrit.server.securestore.DefaultSecureStore
*** Gerrit Code Review 2.16.2
***
*** Git Repositories
***
Location of Git repositories [git]:
*** SQL Database
***
Database server type [h2]:mariadb #我之前有按别人的教程配置过mariadb数据库,但是在安装是会报错,还有使用官网最新的3.2.3版本时,没有设置数据库这一步,也会报错,原因未知,后来我删除了第一次安装时建的数据库,新建数据库,没有报错
*** Index
***
Type [lucene/?]:
*** User Authentication
***
Authentication method [openid/?]: http #将认证方式改为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邮件系统
SMTP server port [(default)]:
SMTP encryption [none/?]:
SMTP username :
*** Container Process
***
Run as [gerrit]:
Java runtime [/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.102-4.b14.el7.x86_64/jre]:
Copy gerrit-2.16.5.war to /home/gerrit/gerrit_site/bin/gerrit.war [Y/n]?
Copying gerrit-2.16.5.war to /home/gerrit/gerrit_site/bin/gerrit.war
*** SSH Daemon
***
Listen on address [*]: #ssh连接的ip地址设置
Listen on port [29418]: #ssh连接的端口设置
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 [*]: #http连接的ip地址设置
Listen on port [8080]: 8081 #http连接的端口设置,使用没有被占用的端口
Canonical URL [http://*:8081/]: #在服务器上可以通过ip和端口访问gerrit主页,要远程访问还需要进行http的反向代理
*** Cache
***
*** Plugins
***
Installing plugins.
Install plugin codemirror-editor version v2.16.5 [y/N]?
Install plugin commit-message-length-validator version v2.16.5 [y/N]?
Install plugin download-commands version v2.16.5 [y/N]?
Install plugin hooks version v2.16.5 [y/N]?
Install plugin replication version v2.16.5 [y/N]?
Install plugin reviewnotes version v2.16.5 [y/N]?
Install plugin singleusergroup version v2.16.5 [y/N]?
Initializing plugins.
No plugins found with init steps.
Initialized /home/gerrit/gerrit_site
Init complete, reindexing projects with: reindex --site-path /home/gerrit/gerrit_site --threads 1 --iReindexing projects: 100% (2/2)
Reindexed 2 documents in projects index in 0.1s (38.5/s)
nginx的安装和配置反向代理的过程我也踩了不少的坑。
首先,因为看了不同的教程,有的人使用的时nginx,有的人使用的时Apache,这导致我两个都下载并运行了,这导致了我的端口占用混乱。使用以下命令可以查看本机端口占用情况:
netstat -ntlp
如果开启了Gerrit,会发现gerrit占用了2个tcp6端口。
其次,因为我之前在服务器上安装运行过gitlab,所以服务器上有gitlab自带的nginx服务,又因为我不知道gitlab自带的nginx配置文件在哪,也怕改了nginx配置之后导致gitlab出问题,最后我停掉了gitlab。
除此以外,我因为使用了第三方的yum镜像源安装nginx,这样和官网下载nginx源码编译安装的路径不同,这也导致了我无法找到nginx的配置文件。
最后我还是老老实实地跑去官网下载了nginx源码编译安装。配置文件在/usr/local/nginx/conf/nginx.conf,在其中加入以下内容:
server {
listen *:234; #nginx监听的ip和端口
server_name 10.27.100.234;
allow all;
deny all;
auth_basic "Welcomme to Gerrit Code Review Site!";
auth_basic_user_file /home/gerrit/gerrit-review/gerrit.password; #存储身份认证信息的文件,初始添加一个admin账户,之后添加新用户在这里添加
location / {
proxy_pass http://10.27.100.234:8081; #Gerrit设置的http连接的ip和端口
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header Host $host;
}
}
在nignx配置中对应的目录(/home/gerrit/gerrit-review/)下创建gerrit.password文件,执行以下命令,重复输入两次密码,创建admin账户:
htpasswd -c /home/gerrit/gerrit-review/gerrit.password admin
执行以下命令,重复输入两次密码,创建一般用户账号
htpasswd -m /home/gerrit/gerrit-review/gerrit.password username
将/home/gerrit的权限设置为755,否则在访问时会报500错误。
chmod 755/home/gerrit
在/home/gerrit/gerrit-review/etc下的gerrit.config文件中添加以下内容
[sendemail]
enable = true
smtpServer = smtp.qq.com
smtpServerPort = 465
smtpEncryption = SSL
sslVerify = true
smtpUser = 邮箱地址
smtpPass = 邮箱开通smtp时申请的验证码
from = CodeReview<邮箱地址>
配置文件路径/home/gerrit/gerrit-review/etc
日志文件路径/home/gerrit/gerrit-review/logs
# gerrit启动
/home/gerrit/gerrit-review/bin/gerrit.sh start
# gerrit停止
/home/gerrit/gerrit-review/bin/gerrit.sh stop
因为是centos系统,所以还要对防火墙进行配置开放对应的端口,nginx监听端口和gerrit配置端口都要开放
# --permanent使更改永久生效
firewall-cmd --zone=public --add-port=****/tcp --permanent
# 重新载入,更新防火墙规则
firewall-cmd --reload
# 查看防火墙所有开放的端口
firewall-cmd --zone=public --list-ports
第一次上手安装gerrit,总的来说踩了非常多的坑,中间失败了很多次,最后勉强算是搭建完成了,还需要对系统的各项功能进行测试才能确认安装成功。