转 gerrit

开发环境 https://blog.csdn.net/u013207966/article/details/79112740

先记录下我的开发环境以及要正确安装gerrit需要用到的工具:

  • Redhat(CentOS) 6.5
  • Java 1.7.0 (至少1.6以上)
  • git 1.7,1
  • Nginx 1.10.2
  • Apache 2.2.15

几点说明:

  1. 关于操作系统

    Redhat和CentOS用的是同样的内核,我这里是6.5版本的内核;其他linux系统上安装过程照猫画虎应该也差不多,只不过可能比如Java或者Nginx等工具的安装方式有所差别。

    为了方便后面文章的讲解,我们这里假设gerrit服务器的ip地址是 192.168.1.100

  2. 关于Java环境

    在终端中输入 java -version 务必确保你的java环境正确安装了;因为整个gerrit的安装是依赖于Java的,另外最好确保Java版本在 1.6 以上吧,虽然我没有验证过低版本的Java是不是没问题,但是高一点的版本保险一点。

  3. Web服务器

    网上很多教程有讲到gerrit+apache安装过程的,我这里是用nginx。先来说说为什么一定要用apache或者nginx,是的就是为了 反向代理 。

    Gerrit有两种工作方式,我们要采用 http 的工作方式,也就是代码审核人员,可以直接通过Web页面对提交的代码进行评审以及后续的操作。

    然后Gerrit要求不能直接请求其端口,必须要使用反向代理才能正确登录。而我们知道Nginx的成功正在于其高效、轻量级以及 反向代理 ,虽然Apache也有反向代理的功能,但是如果你在安装Apache时没有开启,后续的开启过程要相对复杂一点,而Nginx就简单的多了。

    不过即便我们使用Nginx做为web页面引擎,仍然需要安装Apache,因为我们需要用到apache的一个工具来创建验证密码文件。这个后面我们会看到具体用法。

  4. 数据库

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

所以,请务必确保以上几个工具正确安装。

在RedHat或者CentOS上可以通过 yum 工具来安装,如果yum的源打不开,可以去网上搜一下替换yum源的方法。

安装gerrit

下载gerrit安装包

gerrit的下载地址:

https://www.gerritcodereview.com/releases/README.md

我使用的gerrit版本是 2.13.4 。 下载完成之后会发现是一个 war 的包,所以我们的Java环境一定要安装正确。

新建gerrit专用用户

新建一个用户用来专门管理gerrit相关的内容。

在root用户(或者使用 sudo 命令)下面输入下面的命令:

$ adduser gerrit
$ su gerrit

建好用户以后,我们可以把之前下载好的gerrit安装包(gerrit-2.13.4.war)拷贝到 /home/gerrit/目录下,一会方便gerrit用户来安装。

安装gerrit

在gerrit用户的目录(/home/gerrit/)下面,执行下面的命令:

$ java -jar gerrit-2.13.4.war init -d ~/gerrit_site

这个命令的意思是执行安装gerrit,会在当前目录下新建一个文件夹 gerrit_site 用来作为gerrit的根目录,在这个目录中,会安装git仓库,以及gerrit的web页面,还有gerrit的bin,etc等文件夹。

然后就开始安装过程了,安装的过程会询问很多问题,有一些判断性的问题会用 [y/N] 这样的形式,大写的字母表示默认,我们直接敲回车就表示采用默认的安装选项。

注意:

  • 我们安装的时候,可以只在 Authentication method 时输入 http ,其他全部回车用默认值,因为其他配置我们待会可以通过 etc/gerrit.config 文件进行修改
  • 期间可能会下载两个文件,这两个文件虽然都很小(不到3M),但是可能是因为GFW的原因,下载速度很慢。你可以到 /lib 文件夹下面查看他们是不是已经下载完了,或者你手动把那两个文件下载完之后,scp到 /lib 下面。 
    如果你发现已经下完了,但是安装过程卡主了,没有关系,直接 ctrl+c 然后重新安装就可以了。

下面我就把整个安装过程全部贴出来,加上一些注释,好让大家看清楚都安装了什么:

*** Gerrit Code Review 2.13.4  
***

## git 代码仓库的位置, 默认会在之前敲的init -d 目录下新建一个git文件夹
## 我们回车表示默认地址
*** Git Repositories  
***  

Location of Git repositories   [git]:   

## 数据库类型,我们直接回车表示默认的h2
*** SQL Database  
***  

Database server type           [h2]:   

## 用户认证方式,注意!!!!!这里一定要手动输入 http, 其他的就直接回车
*** User Authentication  
***  

Authentication method          [OPENID/?]: http  
Get username from custom HTTP header [y/N]?  
SSO logout URL                 :  

## 发送email的配置,这里我们全部回车使用默认,之后通过配置文件进行修改  
*** Email Delivery  
***  

SMTP server hostname           [localhost]:  
SMTP server port               [(default)]:  
SMTP encryption                [NONE/?]:  
SMTP username                  :  


## 剩下的全部回车就好了,全部安装成默认的配置
*** Container Process  
***  

Run as                         [gerrit]:  
Java runtime                   [/usr/lib/jvm/java-7-openjdk-amd64/jre]:  
Copy gerrit-2.13.4.war to /home/gerrit/review/bin/gerrit.war [Y/n]?  
Copying gerrit-2.13.4.war to /home/gerrit/review/bin/gerrit.war  

*** SSH Daemon  
***  

Listen on address              [*]:  
Listen on port                 [29418]:  

## 这里下载可能会失败,按照我之前说过的方法重新试一遍应该就ok了  
Gerrit Code Review is not shipped with Bouncy Castle Crypto SSL v151  
  If available, Gerrit can take advantage of features  
  in the library, but will also function without it.  
Download and install it now [Y/n]?  
Downloading http://www.bouncycastle.org/download/bcpkix-jdk15on-151.jar ...  


## http的反向代理,我们这里先不要设置,一路回车,尽快完成安装
*** HTTP Daemon  
***  
Behind reverse proxy           [y/N]?   
Proxy uses SSL (https://)      [y/N]?  
Subdirectory on proxy server   [/]:  
Listen on address              [*]:  
Listen on port                 [8080]:

// 插件,默认都是不安装的
*** Plugins  
***  

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

Initialized /home/gerrit_site
...

其实安装过程真的很简单,只是在 Authentication method 方式时输入 http 其他的一路回车下去就好了。

启动gerrit

安装完成之后,gerrit会自动启动,而且会开始监听两个端口:

  • 29418: 默认的ssh端口;
  • 8080: gerrit默认的web页面端口。

我们可以通过下面命令查看:

$ netstat -ltpn | grep -i gerrit

tcp        0      0 :::29418               :::*              LISTEN      49513/GerritCodeRev
tcp        0      0 :::8080                :::*              LISTEN      49513/GerritCodeRev

Nginx

接下来就该Nginx上场了。

在没有配置nginx反向之前,我们直接访问 192.168.1.100:8080/login (我们之前假设gerrit服务器的ip地址是192.168.1.100),会得到一个错误页面,这个页面对于初次使用http方式的gerrit用户可能会让你感到非常。。。绝望,笔者至少看到这个页面不下10多次。。。

 

 

步骤一:创建专用账户和工作目录
adduser gerrit;passwd gerrit;创建gerrit专用工作目录:mkdir /home/gerrit
步骤二:配置Java环境
1) 从官网下载JDK:http://download.oracle.com/otn-pub/java/jdk-nb/8u161-8.2/jdk-8u161-nb-8_2-linux-x64.sh
2) 添加执行权限chmod a+x jdk-8u161-nb-8_2-linux-x64.sh,然后运行该脚本安装
3) 设置环境变量,编辑/etc/profile或~/.bashrc文件在文件末尾添加如下配置
export JAVA_HOME=/usr/local/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
4) 测试Java 环境,在终端输入:java -version 查看是否正常显示版本信息,若显示则安装成功
步骤三:  下载安装gerrit
1) 从官网下载gerrit: http://code.google.com/p/gerrit/ 存放于/home/gerrit目录
2) 安装gerrit:   java -jar gerrit-full-2.5.2.war init -d review_site ,一路回车,默认安装
3) 修改gerrit 配置文件,其说明如下:
[gerrit]
        basePath = git     //指定被gerrit管理的所有git库存放位置,即review_site_project/git/
        canonicalWebUrl = http://192.168.0.20:8081/   //指定web访问gerrit的网址//填自己的ip和端口号
[database]
        type = h2          //指定gerrit所默认数据库类型,可以选用mysql,安装并创建gerrit账户
        database = db/ReviewDB     
[auth]
        type = HTTP    //指定浏览器登录gerrit时的认证方式
[sendemail]
        enable = true
        smtpServer = smtp.126.com
        smtpServerPort = 25
        smtpUser = xxx@126.com
        smtpPass = xxx
        sslVerify = false
        from = CodeReview<xxx@126.com>
[container]
        user = gerritserver                        //指定gerrit所在机器的用户身份与上文创建的用户对应一致
        javaHome = /usr/lib/jvm/jdk7/jre           //系统本身自带
[sshd]
        listenAddress = *:29418          //指定sshd服务监听的端口号
[httpd]
        listenUrl = http://*:8081/project            //指定http代理地址
[cache]
        directory = cache      //缓存位置
4) 启动gerrit服务:review_site/bin/gerrit.sh start | stop | restart
如果提示发生如下错误:** ERROR: GERRIT_SITE not set
则可按如下方法修改:vim gerrit.sh 
在GERRIT_SITE变量被赋值之后加入下面这行,改变该变量的值。
GERRIT_SITE=/home/gerrit/review_site
5) 开机启动:ln -snf /home/gerrit/review_site/bin/gerrit.sh /etc/init.d/gerrit.sh
步骤四:配置反向代理服务(Nginx)
1) 安装Nginx反向代理服务器
 安装gcc: yum install gcc-c++
 安装PCRE: yum install -y pcre pcre-devel
 安装zlib: yum install -y zlib zlib-devel
 安装openssl: yum install -y openssl openssl-devel
 下载nginx:https://nginx.org/en/download.html
 安装Nginx:tar -xzvf nginx-1.13.7.tar.gz; cd nginx-1.13.7;./configure; make; make install 
 开机启动:vi /etc/rc.local文件末尾增加一行 /usr/local/nginx/sbin/nginx
2) 配置nginx: vim /usr/local/nginx/conf/nginx.conf
server {
        listen       80;
        server_name  localhost;
        #charset koi8-r;
        #access_log  logs/host.access.log  main;
        location / {
            #root   html;
            #index  index.html index.htm;
     auth_basic              "Welcome to Gerrit Code Review !";
            auth_basic_user_file    /home/gerrit/gerrit.passwd;
            proxy_pass              http://127.0.0.1:8081;
            proxy_set_header        X-Forwarded-For $remote_addr;
            proxy_set_header        Host $host;
        }


        #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   html;
        }
 启动Nginx服务:/usr/local/nginx/sbin/nginx
3)设置第一个gerrit用户的帐号和密码
      touch ./review_site/etc/passwd
      htpasswd -b ./review_site/etc/passwd gerrit gerrit
步骤五:测试,访问: http://192.168.0.20 ,用gerrit用户登录
 

posted on 2018-05-28 15:41  江湖小女生  阅读(218)  评论(0编辑  收藏  举报

导航