Gerrit安装及使用Nginx反向代理

Gerrit安装及使用Nginx反向代理

简介

Gerrit做为Google用来管理Android代码版本的工具,是一种免费、开放源代码的代码审查软件,使用网页界面。本文主要介绍它的安装步骤。

一、准备工作

  • 操作系统:Linux 这里用的是Ubuntu16.04
  • Java环境:Java 1.6以上版本都可以 本机装的是64-Bit Server VM Java8的服务器版本
  • Git:直接安装sudo apt-get install git
  • Nginx:可以在安装Gerrit之后安装,版本nginx-1.13.9,gerrit的Authentication method方式为http需要使用反向代理,所以需要Nginx或者Apache服务器。
  • Mysql:这里不用Gerrit默认的H2数据库,使用Mysql存储review仓库。安装Mysql数据库,并创建reviewdb和gerrit用户并授权。
$ mysql -u root -p
mysql> create database reviewdb;
Query OK, 1 row affected (0.01 sec)

mysql> CREATE USER 'gerrit'@'localhost' IDENTIFIED BY 'gerrit';
Query OK, 0 rows affected (0.01 sec)

mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)

mysql> grant all privileges on reviewdb.* to gerrit@localhost identified by 'gerrit';
Query OK, 0 rows affected, 1 warning (0.01 sec)

mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| reviewdb           |
| sys                |
+--------------------+
8 rows in set (0.01 sec)
  • 创建Gerrit管理帐号
sudo adduser gerrit

sudo passwd gerrit
`并将gerrit加入sudo权限`
sudo visudo

gerrit  ALL=(ALL:ALL) ALL
$ mkdir gerrit
$ chown -R gerrit.gerrit gerrit

二、安装与配置Gerrit

在gerrit账号下进行配置安装

 # su - gerrit
 # java -jar gerrit-2.14.6.war init -d ../gerrit

Using secure store: com.google.gerrit.server.securestore.DefaultSecureStore
[2018-02-27 15:52:45,848] [main] INFO  com.google.gerrit.server.config.GerritServerConfigProvider : No /www/download/../gerrit/etc/gerrit.config; assuming defaults

*** Gerrit Code Review 2.14.6
***

Create '/www/download/../gerrit' [Y/n]? y

*** Git Repositories
***

Location of Git repositories   [git]:

*** SQL Database
***

Database server type           [h2]: mysql

Gerrit Code Review is not shipped with MySQL Connector/J 5.1.41
**  This library is required for your configuration. **
Download and install it now [Y/n]? y
Downloading https://repo1.maven.org/maven2/mysql/mysql-connector-java/5.1.41/mysql-connector-java-5.1.41.jar ... OK
Checksum mysql-connector-java-5.1.41.jar OK
Server hostname                [localhost]:
Server port                    [(mysql default)]:
Database name                  [reviewdb]:
Database username              [root]: gerrit
gerrit's password              :
              confirm password :

*** Index
***

Type                           [lucene/?]:

*** User Authentication
***

Authentication method          [openid/?]: http
Get username from custom HTTP header [y/N]? y
Username HTTP header           [SM_USER]:
SSO logout URL                 :
Enable signed push support     [y/N]? n

*** Review Labels
***

Install Verified label         [y/N]? y

*** Email Delivery
***

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

*** Container Process
***

Run as                         [root]:
Java runtime                   [/usr/lib/java/jdk1.8.0_162/jre]:
Copy gerrit-2.14.6.war to ../gerrit/bin/gerrit.war [Y/n]? y
Copying gerrit-2.14.6.war to ../gerrit/bin/gerrit.war

*** SSH Daemon
***

Listen on address              [*]:
Listen on port                 [29418]:
Generating SSH host key ... rsa... dsa... ed25519... ecdsa 256... ecdsa 384... ecdsa 521... done

*** HTTP Daemon
***

Behind reverse proxy           [y/N]? y
Proxy uses SSL (https://)      [y/N]? n
Subdirectory on proxy server   [/]:
Listen on address              [*]:
Listen on port                 [8081]:
Canonical URL                  [http://UbuntuHost/]: http://git.xxxx.com

*** Cache
***


*** Plugins
***

Installing plugins.
Install plugin commit-message-length-validator version v2.14.6 [y/N]? y
Installed commit-message-length-validator v2.14.6
Install plugin download-commands version v2.14.6 [y/N]? y
Installed download-commands v2.14.6
Install plugin hooks version v2.14.6 [y/N]? y
Installed hooks v2.14.6
Install plugin replication version v2.14.6 [y/N]? y
Installed replication v2.14.6
Install plugin reviewnotes version v2.14.6 [y/N]? y
Installed reviewnotes v2.14.6
Install plugin singleusergroup version v2.14.6 [y/N]? y
Installed singleusergroup v2.14.6
Initializing plugins.

......
Initialized /www/gerrit
Executing /www/download/../gerrit/bin/gerrit.sh start
Starting Gerrit Code Review: OK
Waiting for server on localhost:8081 ... OK

完成后配置文件如下:

[gerrit]
        basePath = git
        serverId = 6331fedb-dc40-46a0-a4ab-de09ee155b9f
        canonicalWebUrl = http://git.xxxx.com
[database]
        type = mysql
        hostname = localhost
        database = reviewdb
        username = gerrit
[index]
        type = LUCENE
[auth]
        type = HTTP
[receive]
        enableSignedPush = false
[sendemail]
        smtpServer = localhost
[container]
        user = gerrit
        javaHome = /usr/lib/java/jdk1.8.0_162/jre
[sshd]
        listenAddress = *:29418
[httpd]
        listenUrl = proxy-http://*:8081/
[cache]
        directory = cache
  • canonicalWebUrl 就是gerrit的主页地址。退出Gerrit会跳转到这个地址。
  • auth的类型一定要是http
  • sendemail选项就是我们的邮件发送设置,如果你的gerrit服务器上没有搭建邮件服务器,那你可以用smtp发件代理,可以设置smtp服务器地址是 smtp.xxx.com ,端口使用 465 ,因为使用的是 SSL 认证,然后 smtpPass 填写上之前专用邮箱的密码。sendemail有什么作用呢?当有新的允许登录web页面的成员需要修改自己的邮箱时,点击注册邮箱,我们这个专用邮箱就会向该成员申请的邮箱中发送一封确认邮件。位于Administrator组中的用户,设置了想要watch的项目之后,所有和该项目相关的事件,都能收到一封邮件提醒,发送来自于这个专有邮箱
  • sshd就是ssh监听的端口,这个我们在安装gerrit时采用的是默认的配置,也就是 29418 这个端口
  • httpd表示反向监听的端口,这里注意要修改成 proxy-http://*:8080/ ,默认值是没有proxy的

创建Gerrit管理员帐号:

# htpasswd -c /www/gerrit/gerrit.password admin
New password:

如果没有htpasswd这个工具,按提示安装即可。第一个帐号默认为管理员帐号。

三、配置nginx反向代理

在nginx配置文件中加入反向代理的配置文件:include reverse-proxy.conf;
reverse-proxy.conf文件如下:

server
{
    listen 80;
    server_name git.xxxx.com;

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

    location / {
        proxy_redirect off;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_pass http://localhost:8081;
    }
    access_log logs/gerrit_access.log;
}

给Nginx访问Gerrit的权限

setfacl -m g:nginx:rx ../gerrit

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

其它

退出gerrit网页

如果你已经成功登录了gerrit的网页,那么如果你想退出,请直接关闭整个浏览器,gerrit没有做logout的session清除,所以如果你直接点击网页右上角的logout,仍会返回到gerrit配置canonicalWebUrl的地址 。关于登出,gerrit给出的原因是:

You are using HTTP Basic authentication. There is no way to tell abrowser to quit sending basic authentication credentials, to logout with basicauthentication is to close the Webbrowser.

NOTE:使用OpenID的authentication方式应该不会有这个问题。

卸载Gerrit

如果你的安装过程出错了,或者觉得安装的不够好,比如文件位置什么的,你可以重新安装。

如果你的gerrit服务已经处于运行中,需要先执行下面的命令把它停掉:

# gerrit/bin/gerrit.sh stop

删除reviewdb数据库中的内容,确保重新安装没有问题。
然后再试着删除整个 gerrit 文件目录就好了。

参考

https://www.tuicool.com/articles/iAFBvu7

  • 4
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值