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 gerritsudo passwd gerrit
`并将gerrit加入sudo权限`
sudo visudogerrit  ALL=(ALL:ALL) ALL
  • 下载Gerrit: 下载地址:https://www.gerritcodereview.com/download/ 获得安装包gerrit-2.14.6.war
  • 安装目录:创建安装目录,并把目录赋权给gerrit用户(也可以切换gerrit帐号后安装时自动创建)
$ mkdir gerrit
$ chown -R gerrit.gerrit gerrit

二、安装与配置Gerrit

在gerrit账号下进行配置安装

 # su - gerrit# java -jar gerrit-2.14.6.war init -d ../gerritUsing 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]: mysqlGerrit 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 = gitserverId = 6331fedb-dc40-46a0-a4ab-de09ee155b9fcanonicalWebUrl = http://git.xxxx.com
[database]type = mysqlhostname = localhostdatabase = reviewdbusername = gerrit
[index]type = LUCENE
[auth]type = HTTP
[receive]enableSignedPush = false
[sendemail]smtpServer = localhost
[container]user = gerritjavaHome = /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

Gerrit安装及使用Nginx反向代理相关推荐

  1. gerrit安装配置(http反向代理)

    我的环境:linux:fedora21 一.软件安装 1.安装git.apache sudo yum install git httpd 2.安装并查看java安装情况: sudo yum insta ...

  2. nginx请求转发被拒绝_解决nginx反向代理proxy不能转发header报头

    做了一个德国高防plesk卖虚拟主机,奈何地理位置太过于遥远,控制台使用上速度难以接受.用户站点可以使用cloudflare等等的加速手段,控制台能否也这么干呢?理论是完全可以的,那么时间上手看吧.安 ...

  3. MacOS开发必备工具brew,安装nginx反向代理,替代linux工具 apt-get和 yum...

    Mac os开发者必备工具 brew,替代Linux系统中的 apt-get和yum工具,本文介绍Mac电脑安装Homebrew,并下载安装软件nginx反向代理过程. 1.安装Homebrew 在苹 ...

  4. 云服务器,Linux上安装xampp,搭建node服务,云服务器Firewalld、iptables,nginx反向代理

    目录 写在前面的 前期准备 下载xampp: xampp安装步骤 1.首先链接远程linux服务器 2.xshell终端执行安装命令 3.启动:xampp服务 4.访问数据库,修改数据库密码 安装守护 ...

  5. docker安装_使用docker在带有SSL的Nginx反向代理后面部署Quarkus或任何基于Java的微服务...

    docker安装 已经有一段时间了,但是根据一位朋友的要求,我将向您展示如何使用docker在Nginx反向代理后面部署Quarkus微服务. 我们会做什么- 我将在centos 8主机上安装dock ...

  6. Nginx 概述 如何正规安装 静态网页配置 反向代理配置 负载均衡配置

    目录 1. 基本概念 1.1 Nginx初步认识 1.2 正向/反向代理 1.3 域名和IP 2. Nginx安装和配置 2.1 安装Nginx 2.2 配置 3. Nginx的使用 3.1 部署静态 ...

  7. Linux Centos7 Nginx的安装与配置、反向代理、负载均衡、https配置

    Nginx的安装 1.nginx安装包下载地址 http://nginx.org/en/download.html 2.把nginx安装包上传到Linux系统上 2.1 Xhell 自带上传工具. 2 ...

  8. 在一台win10系统的电脑里安装虚拟机运行CentOS7并实现nginx反向代理从而用域名访问本机的微服务项目

    在虚拟机里的CentOS7安装配置nginx,之前需要一些依赖库作为编译安装的条件,具体作用和命令详情跳转我之前的博客. 安装并使用VMware-workstation-full-15.5.0安装Ce ...

  9. nginx反向代理原理及配置详解

    nginx概述 nginx是一款自由的.开源的.高性能的HTTP服务器和反向代理服务器:同时也是一个IMAP.POP3.SMTP代理服务器:nginx可以作为一个HTTP服务器进行网站的发布处理,另外 ...

最新文章

  1. bs4爬取的时候有两个标签相同_python爬虫初体验,爬取中国最好大学网大学名次...
  2. php 循环写入 缓冲,php利用缓冲实现动态输出(flush,ob_flush)
  3. android token过期怎么跳转登录_用sa-token轻松解决网站权限验证
  4. java线程未执行完成,java线程测试-一个奇怪的景况-执行未完成直接结束了
  5. Cookie、Session、Token那点事儿
  6. 解决Win7英文版显示中文乱码
  7. 系统相机裁剪比例_要不要买全画幅相机?
  8. JKS 密钥库使用专用格式。建议使用 “keytool -importkeystore XXX “迁移到行业标准格式?
  9. IOS 封装轮播图
  10. python selenium自动化测试面试题_selenium 自动化测试面试题及答案
  11. symfony api 异常处理_dubbo-RPC服务的异常处理
  12. _stdcall与_cdecl的区别
  13. 前端代码编辑器:sublime text 4 for Mac v4115中文版
  14. 终于把所有的Python库,都整理出来啦!
  15. 线性代数的本质(Essense of Linear Algebra)——3Blue1Brown
  16. C语言根号下ln怎么表示,用C语言怎么编y=sin(根号下ax)+ln(a+X)
  17. FusionSphere虚拟化套件
  18. 工作之外如何实现自我提升
  19. mysql 快照 理解_MySQL - 当前读和快照读
  20. Java程序员必备技能

热门文章

  1. A095_day01_微信小程序入门与组件
  2. C++复习(二十)——拉丁方阵数字排序
  3. CSS的作用与各种样式
  4. 简简的语法13——副词对动词就像形容词对名词一样
  5. Linux C++ 乱码字符转换问题 GBK转UTF8
  6. Python数据分析与机器学习7-Seaborn之调色版
  7. java获取下载链接文件流并上传至OSS
  8. Mycat的配置---雄关漫道真如铁,而今迈步从头越
  9. Today今天便利店的梦想:准独角兽的雄心与挑战
  10. IPV6大型网络配置实战