CentOS 安装部署 Gerrit

Gerrit 安装配置过程

安装过程如下

步骤一:创建专用账户和工作目录

1
2
# adduser gerrit  // 创建专用账户
# passwd gerrit //为专有账户设置密码

步骤二:配置Java环境

  • 去官网下载JDKhttp://www.oracle.com/technetwork/java/javase/downloads/java-archive-javase8-2177648.html

  • 安装JDK
    将下载得到的jdk-8u161-linux-x64.rpm包保存到Linux主机
1
# rpm -ivh jdk-8u161-linux-x64.rpm
  • 设置环境变量,编辑~/.bashrc
1
# vim ~/.bashrc

在文件的末尾添加以下行

1
2
3
4
export JAVA_HOME=/usr/java/jdk1.8.0_161
export JRE_HOME=$JAVA_HOME/jre
export CLASSPATH=$JAVA_HOME/lib
export PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin:$CLASSPATH

使环境配置生效

1
# source ~/.bashrc
  • 测试Java环境,在终端输入:java -version查看是否正常显示版本信息,若显示则安装成功

步骤三:安装MySQL

MySQL的Server在CentOS 7上从默认软件列表中被移除了,用MariaDB来代替,所以这导致我们必须要去官网上进行下载,找到链接,用wget打开,然后再安装:

1
2
3
# wget http://dev.mysql.com/get/mysql57-community-release-el7-9.noarch.rpm
# rpm -ivh mysql57-community-release-el7-9.noarch.rpm
# yum -y install mysql mysql-server mysql-devel

启动MySQL服务

1
# systemctl start mysqld

获取安装MySQL时的初始密码并登录MySQL

1
2
# grep 'temporary password' /var/log/mysqld.log
# mysql -u root -p

登录成功后修改密码,首先修改安全策略为0,然后将密码长度限制修改为1,最后修改密码

1
2
3
mysql> set global validate_password_policy=0;
mysql> set global validate_password_length=1;
mysql> set password for root@localhost=password('root');

创建gerrit用户

1
mysql> CREATE USER 'gerrit'@'%' IDENTIFIED BY '123456';

创建gerrit要用的数据表

1
mysql> CREATE DATABASE ReviewDB;

把ReviewDB的所有权限赋给gerrit

1
mysql> GRANT ALL ON ReviewDB.* TO 'gerrit'@'%';

步骤四:安装Git

1
# yum -y install git

步骤五:下载安装gerrit

  • 从官网下载gerrit,存放于/home/gerrit目录:
1
# wget https://gerrit-releases.storage.googleapis.com/gerrit-2.15.5.war
  • 安装gerrit

首先切换为gerrit用户,然后运行gerrit的war包

1
2
3
# su gerrit
$ cd
$ java -jar gerrit-2.15.war init -d review_site

一路回车默认安装(其中的认证方式处改为HTTP)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
[root@centos-7 gerrit]# su gerrit
[gerrit@centos-7 ~]$ ll
总用量 83864
-rwxr-xr-x. 1 root root 85872756 8月 21 12:49 gerrit-2.14.war
[gerrit@centos-7 ~]$ java -jar gerrit-2.15.5.war init -d review_site
Using secure store: com.google.gerrit.server.securestore.DefaultSecureStore
[2018-08-21 12:51:37,463] [main] INFO com.google.gerrit.server.config.GerritServerConfigProvider : No /home/gerrit/review_site/etc/gerrit.config; assuming defaults

*** Gerrit Code Review 2.15.5
***

Create '/home/gerrit/review_site' [Y/n]?

*** Git Repositories
***

Location of Git repositories [git]:

*** SQL Database
***

Database server type [h2]:

*** 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 [/usr/java/jdk1.8.0_161/jre]:
Copy gerrit-2.15.5.war to review_site/bin/gerrit.war [Y/n]?
Copying gerrit-2.15.5.war to review_site/bin/gerrit.war

*** SSH Daemon
***

Listen on address [*]:
Listen on port [29418]:
Generating SSH host key ... rsa... dsa... done

*** HTTP Daemon
***

Behind reverse proxy [y/N]?
Use SSL (https://) [y/N]?
Listen on address [*]:
Listen on port [8080]:
Canonical URL [http://centos-7.shared:8080/]:

*** Cache
***


*** Plugins
***

Installing plugins.
Install plugin commit-message-length-validator version v2.15.5 [y/N]?
Install plugin download-commands version v2.15.5 [y/N]?
Install plugin hooks version v2.15.5 [y/N]?
Install plugin replication version v2.15.5 [y/N]?
Install plugin reviewnotes version v2.15.5 [y/N]?
Install plugin singleusergroup version v2.15.5 [y/N]?
Initializing plugins.
No plugins found with init steps.

Initialized /home/gerrit/review_site
Executing /home/gerrit/review_site/bin/gerrit.sh start
Starting Gerrit Code Review: OK
Waiting for server on centos-7.shared:8080 ... OK
Opening http://centos-7.shared:8080/#/admin/projects/ ...FAILED
Open Gerrit with a JavaScript capable browser:
http://centos-7.shared:8080/#/admin/projects/
[gerrit@centos-7 ~]$

授权文件夹权限给gerrit用户:

1
# chown -R gerrit:gerrit review_site
  • 修改gerrit配置文件,说明如下
1
$ vim review_site/etc/gerrit.config
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
[gerrit]
basePath = git //指定被gerrit管理的所有git库存放位置,即review_site_project/git/
canonicalWebUrl = http://10.211.55.19:8081/project //指定web访问gerrit的网址//填自己的ip和端口号
[database]
type = mysql //指定gerrit所默认数据库类型,可以选用mysql,安装并创建gerrit账户
database = /home/gerrit/review_site/db/ReviewDB
[auth]
type = HTTP //指定浏览器登录gerrit时的认证方式
[sendemail]
smtpServer = localhost //局域网邮件服务器,可使用hMailSever搭建
[container]
user = gerrit //指定gerrit所在机器的用户身份与上文创建的用户对应一致,可以是root
javaHome = /usr/java/jdk1.8.0_161/jre
[sshd]
listenAddress = *:29418 //指定sshd服务监听的端口号
[httpd]
listenUrl = http://*:8081/ //指定http代理地址
[cache]
directory = cache //缓存位置

重启gerrit服务

1
$ review_site/bin/gerrit.sh restart

设置gerrit服务开机启动

1
# ln -snf /home/gerrit/review_site/bin/gerrit.sh /etc/init.d/gerrit.sh

步骤六:配置反向代理服务(nginx)

说明: 局域网本地安装,设置本地repo

安装nginx反向代理服务器

  • 安装gcc-c++ pcre pcre-devel zlib zlib-devel openssl
1
# yum -y install gcc-c++ pcre pcre-devel zlib zlib-devel openssl
  • 安装启动nginx并设置自启动
1
2
3
4
5
# rpm -Uvh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm
# yum update && yum -y install nginx
# systemctl enable nginx
Created symlink from /etc/systemd/system/multi-user.target.wants/nginx.service to /usr/lib/systemd/system/nginx.service.
# systemctl start nginx

配置nginx

1
# vim /etc/nginx/conf.d/default.conf
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
server {
listen 82;
server_name localhost;

auth_basic "Welcome to Gerrit Code Review !";
auth_basic_user_file /home/gerrit/review_site/etc/passwd;

#charset koi8-r;
#access_log /var/log/nginx/host.access.log main;

location / {
#root /usr/share/nginx/html;
#index index.html index.htm index.php index.jsp;
proxy_pass http://127.0.0.1:8081;
#proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}

#error_page 404 /404.html;

# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}

启动nginx服务:

1
2
3
4
# setenforce 0                 //关闭selinux以避免造成权限问题
# systemctl disable firewalld //禁用防火墙
# systemctl stop firewalld //关闭防火墙
# systemctl start nginx

设置第一个gerrit用户的账号和密码

要用到htpasswd命令需要首先安装有httpd

1
2
3
# yum -y install httpd
$ touch ./review_site/etc/passwd
$ htpasswd -b ./review_site/etc/passwd gerrit 123456

步骤七:安装配置gitweb

安装gitweb,最好在联网环境下安装,或者在离线环境下下载对应的依赖包

1
# yum -y install gitweb

配置gitweb,与gerrit集成

修改gitweb的配置文件(/etc/gitweb.conf),将配置项 “$projectroot”修改为gerritgit仓库目录。

修改/home/gerrit/review_site/etc/gerrit.config,添加:

配置gerrit权限

使用管理员账号登录gerrit,修改All-Projects的权限,为refs/*refs/meta/configRead配置项配置合适的权限。

注意:如果你是在root用户下输入上面的命令 创建了password文件到/home/gerrit/review_site/etc目录中,你会发现在登录的时候永远登录不成功,永远会得到服务器500的错误页面。原因是password文件的权限问题。我们知道,/home/gerrit/是我们之前新建的gerrit用户的,那么这个文件夹的权限是700,也就是只允许gerrit用户访问,其他组的用户是访问不了的,虽然这个文件的权限拥有root用户的所有权限,但是因为它放在700权限的文件夹下面,所以同样其他用户是访问不到的。解决方法如下

1
# chown -R gerrit:gerrit /home/gerrit

重启gerrit服务和Nginx服务

重启gerritnginx服务

1
2
$ /home/gerrit/review_site/bin/gerrit.sh restart
# systemctl restart nginx

步骤八:测试

访问http://localhost,用gerrit用户登录,登录界面如下

-------------本文结束感谢您的阅读-------------
请站长喝杯咖啡吧´◡`