Gerrit的安装和配置个人经验总结

Gerrit的安装和配置个人经验总结

  • 环境配置
  • Gerrit的安装
  • nginx的安装和配置
  • Gerrit的配置和启动
    • 配置gerrit用户账号密码文件用于登录时的身份认证
    • 设置gerrit的访问执行权限
    • gerrit配置邮件系统
    • gerrit相关文件路径
    • gerrit启动/停止
    • 防火墙设置
  • 个人总结

环境配置

本次Gerrit安装环境:CentOS7系统,Java版本1.8.0_211,nginx(用于反向代理)。

Gerrit的安装

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的安装和配置反向代理的过程我也踩了不少的坑。

首先,因为看了不同的教程,有的人使用的时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;
     }
   }

Gerrit的配置和启动

配置gerrit用户账号密码文件用于登录时的身份认证

在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

设置gerrit的访问执行权限

将/home/gerrit的权限设置为755,否则在访问时会报500错误。

chmod 755/home/gerrit

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<邮箱地址>

gerrit相关文件路径

配置文件路径/home/gerrit/gerrit-review/etc
日志文件路径/home/gerrit/gerrit-review/logs

gerrit启动/停止

# 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,总的来说踩了非常多的坑,中间失败了很多次,最后勉强算是搭建完成了,还需要对系统的各项功能进行测试才能确认安装成功。

你可能感兴趣的:(gerrit)