centos7安装gerrit

本次安装gerrit需要用到的工具:
虚拟机、centos7系统(解决centos系统安装后没有分配ip问题
Java 11 (至少1.6以上)
git 1.8.3
Nginx 1.10.2
httpd
几点说明:

1.关于操作系统
Redhat和CentOS用的是同样的内核,我这里是7.8版本的内核;其他linux系统上安装过程照猫画虎应该也差不多,只不过可能比如Java或者Nginx等工具的安装方式有所差别。
为了方便后面文章的讲解,我们这里假设gerrit服务器的ip地址是192.168.255.168

2.关于Java环境
在终端中输入 java -version 务必确保你的java环境正确安装了;因为整个gerrit的安装是依赖于Java的,刚开始使用Java版本1.8有问题,所以使用了11版本。高一点的版本保险一点,可以自行尝试

3.Web服务器
网上很多教程有讲到gerrit+apache安装过程的,我这里是用nginx。先来说说为什么一定要用apache或者nginx,是的就是为了反向代理
Gerrit有两种工作方式,我们要采用http的工作方式,也就是代码审核人员,可以直接通过Web页面对提交的代码进行评审以及后续的操作。
然后Gerrit要求不能直接请求其端口,必须要使用反向代理才能正确登录。而我们知道Nginx的成功正在于其高效、轻量级以及反向代理,虽然Apache也有反向代理的功能,但是如果你在安装Apache时没有开启,后续的开启过程要相对复杂一点,而Nginx就简单的多了。
不过即便我们使用Nginx做为web页面引擎,仍然需要安装Apache,因为我们需要用到apache的一个工具来创建验证密码文件。这个后面我们会看到具体用法。

4.数据库
我们使用gerrit自带的H2数据库。网上也有其他数据库的安装教程,我这里想说的是,H2就够用,而且,我们不推荐直接对数据库进行操作,所有的操作,都可以通过命令行的方式完成,所以,尽量简单我们就使用自带的默认的数据库好了。

gerrit官网:https://www.gerritcodereview.com/index.html

一、准备工作
①因为Java JDK区分32位和64位系统,所以在安装之前必须先要判断以下我们的Centos系统为多少位系统,命令如下:

[root@centos7 ~]# uname -a
Linux centos7 3.10.0-1127.el7.x86_64 #1 SMP Tue Mar 31 23:36:51 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux

如果有x86_64就是64位的,没有就是32位的。后面是X686或X86_64则内核是64位的,i686或i386则内核是32位的
由此可以判断我的centos为64位系统,故而我需要下载64位系统的JDK。

②下载JDK,我下载的JDK为11,如图所示:
方法1官网地址:https://www.oracle.com/java/technologies/javase/javase-jdk11-downloads.html,需要登录下载,特别慢
方法2华为云下载,速度快

③自行下载安装虚拟机(Vmware),虚拟机中安装的Centos系统,Xshell 工具
拓展:查看CentOS版本命令:cat /etc/redhat-release
在这里插入图片描述

二、安装java jdk11
①通过上面准备工作之后,我们现在已经拥有了可以安装JDK的环境。
②然后在Xshell中,进入到local下面创建者自己的文件夹:javajdk

cd /usr/local
mkdir javajdk
cd javajdk

然后使用Xshell的rz命令将jdk上传到javajdk文件夹下面,如图所示:
如果没有rz命令,需要安装:yum install -lrzsz -y
在这里插入图片描述
将上传的jdk解压,解压之后重命名为javajdk

tar -zxvf jdk-11_linux-x64_bin.tar.gz
mv jdk-11 javajdk
cd javajdk

③通过上面的步骤,我们的jdk已经全部完成安装了,接下来就是更重要的一步:配置环境变量
进入/etc/profile文件vim /etc/profile
将下面内容复制到profile文件中,并保存退出:

JAVA_HOME=/usr/local/javajdk/javajdk
PATH=$JAVA_HOME/bin:$PATH
CLASSPATH=$JAVA_HOME/jre/lib/ext:$JAVA_HOME/lib/tools.jar
export PATH JAVA_HOME CLASSPAHT

备注:根据上面的配置信息,我们既可以将环境变量的配置完成,需要注意的是,PATH在配置的哦时候,一定要把AVA_HOME/bin放在最前面,不然使用java命令式,系统会找到以前的JAVA,在不往下找了,这样java这个可执行文件运行的目录其实不在$JAVA_HOME/bin下,而在其它目录下,会造成很大的问题。

配置完成,使profile文件生效:source /etc/profile

④验证安装是否成功

java -version
echo $JAVA_HOME

在这里插入图片描述
拓展:卸载jdk
首先执行命令查看服务器下的jdk的版本:命令如下:rpm -qa|grep jdk
然后执行命令: yum -y remove java java-1.6.0-openjdk-1.6.0.0-1.50.1.11.5.el6_3.x86_64将上面查询出来的每个版本以此删掉即可。

参考文章: http://www.cnblogs.com/hanyinglong/p/5025635.html

三、安装git
安装:yum install git
验证:git --version

Git初始化并生成授权证书:

①git初始化

[root@centos7 ~]# git config --global user.name "jingjing"
[root@centos7 ~]# git config --global user.email "2573135193@qq.com"

查看设置的信息:git config --list
在这里插入图片描述

②生成授权证书:ssh-keygen -t rsa -C “邮箱”
在这里插入图片描述
查看证书:cd ~/.ssh
将公钥id_rsa.pub添加到gitlab的ssh key:
在这里插入图片描述

验证git配置是否正确:ssh git@gitlab.com
在这里插入图片描述
四、安装gerrit

①下载gerrit安装包,我使用了最新版本3.4.0。
下载地址:https://www.gerritcodereview.com/releases-readme.html

②使用root用户权限操作:新建gerrit专用用户

adduser gerrit
su gerrit

将gerrit安装包(gerrit-3.4.0.war)拷贝到/home/gerrit/目录下用来安装

③安装gerrit
在gerrit用户的目录(/home/gerrit/)下面,执行下面的命令开始安装:

java -jar gerrit-3.4.0.war init -d ~/gerrit_site

注意:
&我们安装的时候,在Authentication method时输入http,
拓展:我认为gerrit安装比较难的地方在于它有多种身份验证方法,身份验证方法决定了如何登录Gerrit。
如果你想挂入某个现有的身份验证提供方(例如GoogleAccounts),那么可以使用OpenID;如果是用于测试和学习,可以选择最简单的development_become_any_account。如果你选择了development_become_any_account,在页面顶端会有一个Become链接,通过它可以进入注册/登录页面;
HTTP认证也是可选的认证方式,此认证方式下需要配置Apache的反向代理,并在Apache中配置Web站点的口令认证,通过口令认证后gerrit在创建账号的过程中会询问用户的邮件地址并发送确认邮件。–参考资料:https://blog.csdn.net/benkaoya/article/details/8680886
在这里插入图片描述

&&插件安装要选择yes,默认是不安装的,否则后续安装比较麻烦

在这里插入图片描述
&&&其他选择默认就行。其他配置我们待会可以通过etc/gerrit.config文件进行修改

Opening http://centos7:8080/#/admin/projects/ …FAILED#(因为还没有用户,所以failed,不影响)

④启动gerrit

安装完成之后,gerrit会自动启动,而且会开始监听两个端口:
29418: 默认的ssh端口;
8080: gerrit默认的web页面端口。

我们可以通过下面命令查看:gerrit或者root用户都可以

[root@centos7 bin]# netstat -ltpn|grep -i gerrit
tcp6       0      0 :::29418                :::*                    LISTEN      1974/GerritCodeRevi 
tcp6       0      0 :::8080                 :::*                    LISTEN      1974/GerritCodeRevi 

拓展:
1.如果需要手动启动gerrit:cd gerrit_site/bin; ./gerrit.sh start

五、Nginx反向代理服务器
①安装nginx(CentOS):
官网步骤:http://nginx.org/en/linux_packages.html#RHEL-CentOS
在这里插入图片描述
②配置nginx

cd /etc/nginx/conf.d
ls -l

默认的nginx只有一个default.conf文件,是nginx的默认配置文件 ,修改default.conf文件:
在这里插入图片描述
上面就是默认的配置,看到这里我把端口默认的监听端口设置成了85, 因为80分配给了apache;
查找文件路径:find / -name 文件名
然后日志文件的路径在/usr/local/nginx/logs目录下–与安装路径有关,如果后面登录认证的失败的时候,我们可以在这个目录下面查找日志文件,分析失败的原因。
Nginx路径在/usr/share/nginx/html下,如果我们进到该目录下,查看其下面的index.html文件,就会发现他就是我们在服务器ip:85页面中看到的关于nginx的介绍的页面。

在这里插入图片描述
访问nginx(http://ip:85)的web页面注意事项:
注意1:
要查看防火墙状态 systemctl status firewalld ,防火墙开放时不能访问
防火墙要关闭:systemctl stop firewalld或者开放端口:
注意2:
查看nginx状态:systemctl status nginx
如果状态为dead,需要启动nginx:service nginx start
解决nginx报错:nginx: [emerg] bind() to 0.0.0.0:xxxx failed (13: Permission denied)
在这里插入图片描述
解决方式:经检查发现是selinux导致报错。
[root@localhost nginx]# getenforce    #查询selinux状态
在这里插入图片描述
[root@localhost nginx]# setenforce 0 #临时将selinux关闭

如果需要永久关闭selinux,请编辑/etc/selinux/config文件,将SELINUX=disabled。之后一定要将系统重启一下。
在这里插入图片描述
之后重启nginx服务,发现报错已经解除。

在这里插入图片描述
③Gerrit.conf配置:
我们这里需要新建一个专门用来处理gerrit请求的配置文件。
在 /etc/nginx/conf.d 文件夹下,用vim gerrit.conf创建这个文件,然后输入下面的内容:

server {
     listen *:86;
     server_name gerrit.microwu.com;
     allow   all;
     deny    all;

     auth_basic "Welcomme to Gerrit Code Review Site!";
     auth_basic_user_file /home/gerrit/gerrit.password;

     location / {
        proxy_pass  http://127.0.0.1:8080;
        proxy_set_header X-Forwarded-For $remote_addr;
        proxy_set_header Host $host;
     }
   }

我们来详细解释几个重点:

我们监听86端口,原因和前面一样,80端口被apache占用了,当然你还可以设置成其他没有被占用的端口
auth_basic 是用于登录时弹出验证登录对话框,我盗一张图来说明一下
在这里插入图片描述
4⃣️配置好了之后,我们需要重启nginx:service nginx restart

启动失败常见问题,https://www.jianshu.com/p/1ca5a62df1a9
https://blog.csdn.net/qq_32448349/article/details/109725173

然后我们去访问http://ip:86页面,就能看到和上图一样的登录认证界面了。

5⃣️.登录认证文件:
那登录认证有了,我们怎么登录呢??就需要前面的auth_basic_user_file文件了。
这里我们需要用apach的 htpasswd工具来新建这个文件,这也是为什么我们虽然不用到apache的反向代理,仍然需要apache的原因。

我们通过下面的命令来在/home/gerrit/路径下创建认证文件:

$ htpasswd -c /home/gerrit/gerrit.password admin

问题:-bash: htpasswd: command not found
解决办法:yum -y install httpd-tools

接下来你需要在命令行中连续输入两次密码,我们就为admin用户设置好了密码,可以通过vim来查看下这个密码文件,会发现里面是经过加密的。

[root@centos7 gerrit]# cd /home/gerrit/
[root@centos7 gerrit]# ls
gerrit-3.4.0.war  gerrit.password
[root@centos7 gerrit]# cat gerrit.password 
admin:$apr1$Sbkk2t/w$njIQydyhgUKIXh2cY8YsL1
test:$apr1$ylxI2zqV$VTUiXBGNiUJ31XlLjG2sA0

如果我们想新建别的用户,或者修改某个用户的密码,只需要把-c改成-m就好了,如果还是用-c并且路径不变的话,就会覆盖掉原来的文件。

$ htpasswd -m /home/gerrit/gerrit.password test

同样的输入两遍密码,就设置好了master用户的登录密码了。

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

这个问题之前纠缠了我好久,通过nginx的日志可以清楚的看到访问拒绝的错误。

所以,我们需要通过下面的命令,来改变gerrit目录的权限

[root@centos7 home]# ls
gerrit
[root@centos7 home]# chmod 755 gerrit
[root@centos7 home]# ls -l
total 0
drwxr-xr-x. 2 gerrit gerrit 109 Aug 15 15:27 gerrit

这样,当前目录权限就变成了drwxr-xr-x,也就是其他组的用户也拥有了读取和执行的权利。

⑥修改gerrit配置
配置好了nginx,我们接下来修改下gerrit的配置,vi gerrit_site/etc/gerrit.config
我们要做下面几个事情:
配置SMTP邮件发送
配置反向代理

[gerrit]
        basePath = git
        canonicalWebUrl = http://172.16.207.134:8080/  自己服务器的ip地址
        serverId = 18f8ac4c-58fe-4f44-bffa-35ab039233f2
[container]
        javaOptions = "-Dflogger.backend_factory=com.google.common.flogger.backend.log4j.Log4jBackendFactory#getInstance"
        javaOptions = "-Dflogger.logging_context=com.google.gerrit.server.logging.LoggingContext#getInstance"
        user = root
        javaHome = /usr/local/javajdk/javajdk
[index]
        type = lucene
[auth]
        type = HTTP
[receive]
        enableSignedPush = false
[sendemail]
        #smtpServer = localhost 
		smtpServer = smtp.qq.com
		smtpServerPort = 465
		smtpEncryption = SSL
		smtpUser = 95*****29@qq.com  #发件人
		smtpPass = zzfgawunajftbbgj #邮箱的SMTP密码,在邮箱的设置中查找
		from = 95******29@qq.com

[sshd]
        listenAddress = *:29418
[httpd]
        listenUrl =proxy-http://*:8080/  #http修改为proxy-http
[cache]
        directory = cache
[plugins] #如果要和gitlab即成,一定要添加,否则不能出发replication插件
	allowRemoteAdmin = true

7⃣️重启gerrit
完成上面的配置之后,我们重启一下gerrit

gerrit的可执行文件位于/home/gerrit/gerrit_site/bin目录下,我们直接执行

重启完成之后,我们可以在浏览器中输入ip:85看看是不是可以弹出输入用户名和密码的对话框(如果没有,请检查你的Nginx配置);然后输入正确的用户名(我们创建的密码文件用户是admin)和密码,如果你能登录到这个页面,就表示你的gerrit已经成功配置好了!

参考资料:https://www.csdn.net/tags/Mtjagg5sMTE0MTItYmxvZwO0O0OO0O0O.html
http://lipeng1667.github.io/2017/01/17/build-gerrit-with-nginx/
https://www.cnblogs.com/anliven/p/11980432.html#_label7_1

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值