• 为什么写博客,是因为遇到的坑,不希望别人在踩一遍!
  • 选择了,剩下的就是坚持和努力-------致自己!
  • 当能力达不到梦想时,更需要学习,努力,拼搏

Ubuntu— Gerrit 安装

Linux运维 雪豹 1年前 (2017-09-23) 1233次浏览 0个评论

images

1.1 简介

Gerrit,一种免费、开放源代码的代码审查软件,使用网页界面。利用网页浏览器,同一个团队的软件程序员,可以相互审阅彼此修改后的程序代码,决定是否能够提交,退回或者继续修改。它使用Git作为底层版本控制系统。它分支自Rietveld,作者为Google公司的Shawn Pearce,原先是为了管理Android计划而产生。这个软件的名称,来自于荷兰设计师赫里特·里特费尔德(Gerrit Rietveld)。最早它是由Python写成,在第二版后,改成用Java与SQL。使用Google Web Toolkit来产生前端的JavaScript

1.2 系统环境

系统: Ubuntu 12.04.5 LTS

java:java version "1.8.0_65"

mysql: mysql-5.6.34

nginx: nginx-1.10.1

1.4 安装Gerrit依赖

Gerrit 的包是 java 格式,需要安装 jre。可以用OpenJDK
本文是基于OpenJDK来配置的,如果机器上存在多个JDK版本或者想依赖于Oracle JDK,则作相应修改吧

$ sudo apt-get install default-jre daemon

1.5 创建 Gerrit 数据库

安装Gitlab中已经安装了MySQL,下面只需要创建库就可以了。注意此处的 gerrituser , gerritpass 为新表拥有权限的用户名和密码

mysql -u root –p
>create database gerritdb;
> grant all on gerritdb.* to 'gerrituser'@'localhost' identified by 'gerritpass';

1.1 安装开始

1.1.1 创建一个gerrit的账户

useradd gerrit

1.1.2 安装gerrit

root@web01:/home/yunwei/tools# java -jar gerrit-2.8.war init -d /etc/gerrit/
*** Gerrit Code Review 2.8

***

Create '/etc/gerrit'           [Y/n]? y #默认选择y

*** Git Repositories

***

Location of Git repositories   [git]: #默认回车

*** SQL Database

***

Database server type           [h2]: mysql     #gerrit 默认h2数据库,我们使用mysql,直接输入mysql 回车

Gerrit Code Review is not shipped with MySQL Connector/J 5.1.21

**  This library is required for your configuration. **

Download and install it now [Y/n]? y #关键一定选择y,如果这里没有下载显示OK,后面连接mysql 会报错,一定要看好选择y,并且底下显示OK,关键步骤。

Downloading http://repo2.maven.org/maven2/mysql/mysql-connector-java/5.1.21/mysql-connector-java-5.1.21.jar ... OK

Checksum mysql-connector-java-5.1.21.jar OK

#因为采用mysql数据库下面很关键哦

Server hostname                [localhost]:  #默认因为gerrit和数据在一台主机

Server port                    [(mysql default)]:  #默认3306

Database name                  [reviewdb]: gerritdb #前面设置的数据库名

Database username              [root]: gerrituser  #前面授权的用户

gerrituser's password          :   #连续输入两次密码gerritpass

confirm password :

*** User Authentication  #成功了

***

#注意这个不要按回车跳过去了,否则不是HTTP认证,是需要用google的OPENID

Authentication method          [OPENID/?]: http

Get username from custom HTTP header [y/N]? 默认

SSO logout URL                 :

*** Email Delivery

***

#因为邮箱这块没有配置默认走

SMTP server hostname           [localhost]:

SMTP server port               [(default)]:

SMTP encryption                [NONE/?]:

SMTP username                  :

*** Container Process

***

Run as                         [root]: gerrit

Java runtime                   [/application/jdk1.8.0_65/jre]:

Copy gerrit-2.8.war to /etc/gerrit/bin/gerrit.war [Y/n]?

Copying gerrit-2.8.war to /etc/gerrit/bin/gerrit.war

*** SSH Daemon

***

Listen on address              [*]:

Listen on port                 [29418]:

Gerrit Code Review is not shipped with Bouncy Castle Crypto v144

If available, Gerrit can take advantage of features

in the library, but will also function without it.

Download and install it now [Y/n]? y

Downloading http://www.bouncycastle.org/download/bcprov-jdk16-144.jar ... !! FAIL !!

error: http://www.bouncycastle.org/download/bcprov-jdk16-144.jar: 302 Found

Please download:

http://www.bouncycastle.org/download/bcprov-jdk16-144.jar

and save as:

/etc/gerrit/lib/bcprov-jdk16-144.jar

Press enter to continue

Continue without this library  [Y/n]?

Generating SSH host key ... rsa(simple)... done

*** HTTP Daemon

***

Behind reverse proxy           [y/N]? y #选择y

Proxy uses SSL (https://)      [y/N]?

Subdirectory on proxy server   [/]:

Listen on address              [*]:

Listen on port                 [8081]: 8082 #修改了端口8082

Canonical URL                  [http://web01/]: <a href="http://172.16.1.97">http://172.16.1.97</a> #web 设置为本机IP记得改成你自己的IP

*** Plugins

***

#以下都选择y

Install plugin reviewnotes version v2.8 [y/N]? y    # 以下都选择y

Install plugin download-commands version v2.8 [y/N]? y  #以下都选择y

Install plugin replication version v2.8 [y/N]? y   #以下都选择y

Install plugin commit-message-length-validator version v2.8 [y/N]? y  #以下都选择y

yInitialized /etc/gerrit

Executing

#稍等片刻 配置完成。

1.1.1 查看gerrit.config配置文件

备注:这个配置文件和上不设置一样,如果上步有错可以

root@web01:~# cat /etc/gerrit/etc/gerrit.config

[gerrit]

basePath = git

canonicalWebUrl = http://172.16.1.97

[database]

type = mysql

hostname = localhost

database = gerritdb

username = gerrituser

[auth]

type = HTTP

[sendemail]

smtpServer = localhost

[container]

user = gerrit

javaHome = /application/jdk1.8.0_65/jre

[sshd]

listenAddress = *:29418

[httpd]

listenUrl = proxy-http://*:8082/

[cache]

directory = cache

1.1.2 启动gerrit

/etc/gerrit/bin/gerrit.sh start

Starting Gerrit Code Review: cat: /etc/gerrit/logs/gerrit.pid: No such file or directory

FAILED

error: cannot start Gerrit: exit status 1

Waiting for server on 172.16.1.97:80 ... OK

Opening http://172.16.1.97/#/admin/projects/ ...FAILED

Open Gerrit with a JavaScript capable browser:

<a href="http://172.16.1.97/#/admin/projects/">http://172.16.1.97/#/admin/projects/</a>

查看端口

root@web01:/home/yunwei/tools# netstat -lntup

Active Internet connections (only servers)

Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name

tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      7378/nginx

tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      997/sshd

tcp        0      0 0.0.0.0:26379           0.0.0.0:*               LISTEN      2152/redis-sentinel

tcp6       0      0 :::22                   :::*                    LISTEN      997/sshd

tcp6       0      0 :::3306                 :::*                    LISTEN      7144/mysqld

1.1.1 查看目录结构

root@web01:/home/yunwei/tools# cd /etc/gerrit/

root@web01:/etc/gerrit# ls

bin  cache  data  etc  git  lib  logs  plugins  static  tmp

root@web01:/etc/gerrit# cd ..

root@web01:/etc# ls

X11                     groff            logrotate.d              rc4.d

acpi                    group            lsb-base                 rc5.d

adduser.conf            group-           lsb-base-logging.sh      rc6.d

alternatives            grub.d           lsb-release              rcS.d

apm                     gshadow          ltrace.conf              resolv.conf

apparmor                gshadow-         magic                    resolvconf

apparmor.d              gtk-2.0          magic.mime               rmt

apport                  hdparm.conf      mailcap                  rpc

apt                     host.conf        mailcap.order            rsyslog.conf

at.deny                 hostname         manpath.config           rsyslog.d

bash.bashrc             hosts            mime.types               screenrc

bash_completion         hosts.allow      mke2fs.conf              securetty

bash_completion.d       hosts.deny       modprobe.d               security

bindresvport.blacklist  icedtea-web      modules                  services

blkid.conf              ifplugd          motd                     sgml

blkid.tab               init             mtab                     shadow

byobu                   init.d           my.cnf                   shadow-

ca-certificates         initramfs-tools  nanorc                   shells

ca-certificates.conf    inputrc          network                  skel

calendar                insserv          networks                 ssh

chatscripts             insserv.conf     newt                     ssl

console-setup           insserv.conf.d   nsswitch.conf            sudoers

cron.d                  iproute2         opt                      sudoers.d

cron.daily              ipvsadm.rules    os-release               sysctl.conf

cron.hourly             iscsi            pam.conf                 sysctl.d

cron.monthly            issue            pam.d                    systemd

cron.weekly             issue.net        passwd                   terminfo

crontab                 java-6-openjdk   passwd-                  timezone

daemon.conf             kbd              perl                     ucf.conf

dbus-1                  keepalived       pm                       udev

debconf.conf            kernel           popularity-contest.conf  ufw

debian_version          kernel-img.conf  ppp                      update-manager

default                 landscape        profile                  update-motd.d

deluser.conf            ld.so.cache      profile.d                update-notifier

depmod.d                ld.so.conf       profile.ori              updatedb.conf

dhcp                    ld.so.conf.d     protocols                vim

dpkg                    ldap             pulse                    vtrgb

environment             legal            python                   w3m

fonts                   libnl-3          python2.7                wgetrc

fstab                   locale.alias     rc.local                 wpa_supplicant

fstab.d                 localtime        rc0.d                    xml

fuse.conf               logcheck         rc1.d                    zsh_command_not_found

gai.conf                login.defs       rc2.d

gerrit                  logrotate.conf   rc3.d

1.1.2 授权

root@web01:/etc# chown -R gerrit.gerrit /etc/gerrit/

1.1.3 安装apache

root@web01:/etc# apt-get install apache

1.1.4 使用apache htpasswd 模块设置密码

备注:admin是 用户名  /application/nginx/conf/ 是路径(可以自定义)   gerrit (为密码文件名可以自定义)

root@web01:/application/nginx/conf# htpasswd -c /application/nginx/conf/gerrit admin

New password:  #输入密码

Re-type new password:  #再次输入密码

Adding password for user admin #提示密码成功

images

1.2 nginx端口转发和访问控制

root@web01:/application/nginx/conf# cat nginx.conf
worker_processes  1;
events {
    worker_connections  1024;
}
http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    keepalive_timeout  65;
    server {
        listen       80;
        server_name  localhost;
        location / {
#这块是是提示语"hello
            auth_basic "hello!";
            #/application/nginx/conf/gerrit 上面apache 定义的密码。
            auth_basic_user_file /application/nginx/conf/gerrit;    
            autoindex on;
#转发IP或者域名接端口号。
            proxy_pass http://172.16.1.97:8082;
            #优化参数
            proxy_set_header host         $host;
            proxy_set_header X-Forwarded-For $remote_addr;
            client_max_body_size 10m;
            client_body_buffer_size 128k;
            proxy_connect_timeout 90;
            proxy_send_timeout 90;
            proxy_read_timeout 90;
            proxy_buffer_size 4k;
            proxy_buffers 32 4k;
            proxy_busy_buffers_size 64k;

        }
    }
}

1.3 Gerrit启动脚本

root@web01:~# cp /etc/gerrit/bin/gerrit.sh /etc/init.d/gerrit

root@web01:/# vim /etc/init.d/gerrit

大概在47行书写其中,GERRIT_SITE=跟路径

GERRIT_SITE=/etc/gerrit/

images

1.4 启动gerrit

root@web01:/# /etc/init.d/gerrit start 也可以全路径执行 sh /etc/gerrit/bin/gerrit.sh start (任选其一 显示 OK 就好)

Starting Gerrit Code Review: cat: /etc/gerrit/logs/gerrit.pid: No such file or directory

OK

1.5 检查查看端口号

root@web01:/application/nginx/conf# netstat -lntup

Active Internet connections (only servers)

Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name

tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      7378/nginx

tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      997/sshd

tcp        0      0 0.0.0.0:26379           0.0.0.0:*               LISTEN      2152/redis-sentinel

tcp6       0      0 :::8082                 :::*                    LISTEN      14487/GerritCodeRev

tcp6       0      0 :::22                   :::*                    LISTEN      997/sshd

tcp6       0      0 :::29418                :::*                    LISTEN      14487/GerritCodeRev

tcp6       0      0 :::3306                 :::*                    LISTEN      7144/mysqld

images

1.6 访问

默认第一个登录 Gerrit 的用户是管理员

  • 在浏览器 url 输入: http://172.16.1.97 (你的IP)
  • 在弹出的验证框中输入刚才创建的用户名admin和你设置的密码

images

images

总结配置:多数步骤可以直接回车使用默认参数,仅有几处需要小心:

多数步骤可以直接回车使用默认参数,仅有几处需要小心:

Location of Git repositories:该路径时仓库路径,如果想包含已有的git仓库路径,那么应该使用这个路径,并且,gerrit运行用户必须具有该路径的读写权限!否则gerrit将无法登陆。

Database server type:使用的数据库类型,默认是gerrit自带的h2。

Authentication method:gerrit使用的用户认证方式,默认是OPENID,这是一种使用第三方的账户信息的认证方式,比如使用yahoo!,google,amazon等。另外一种就是http方式,这个在后面的用户会讲到。

Email Delivery:邮件服务配置,可以使用默认。

Run as:Gerrit运行用户,这里就是用到了之前新建的专属用户。

SSH Daemon:Gerrit自带一个独立的ssh服务,所以这里配置的是这个ssh服务器的监听信息,包括地址,以及端口。地址可以默认,端口也可以默认29418,自己也可以配置,但是不要低于1024.另外外部必须能够访问该端口!

HTTP Daemon:Behind reverse proxy:apache2反向代理,应该设定为y。使用反向代理时,必须确保apache2相应的组件可用!后面会讲到。

HTTP Daemon:Listen on port:http运行端口,这里使用的端口应该与反向代理的端口设定为不同的值,否则浏览器无法访问。

第1章 gerrit 使用扩展

1.1 客户端配置ssh KEY

#备注 需要下载安装git bash

images

打开后


xuebao@DESKTOP-8QV2RMH MINGW64 ~

#执行创建key

$ ssh-keygen.exe -t rsa

Generating public/private rsa key pair.

Enter file in which to save the key (/c/Users/xuebao/.ssh/id_rsa):

/c/Users/xuebao/.ssh/id_rsa already exists.

Overwrite (y/n)?

xuebao@DESKTOP-8QV2RMH MINGW64 ~

#进入路径查看,公钥

$ cd .ssh/

xuebao@DESKTOP-8QV2RMH MINGW64 ~/.ssh

$ ls

id_rsa  id_rsa.pub  known_hosts

xuebao@DESKTOP-8QV2RMH MINGW64 ~/.ssh

#查看公钥

$ cat id_rsa.pub

ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCnOx3fwwHOFgZBZsdW5OE4OBpA/FozsI3Bcfaz4rAwG3DkmXvVeVdbUwhrSZ+ieoBi0PfwPSR24Y7cjT0yP8ZorsS+8WYrfBhkRx/ejgOlUcVoaniYm5/0mSVB8DLhT6EBT3WXU1kI/rm7gWizgMXYbPEtZrAvsR717wUcwHS2IRWIzOC7QTMtWXxFg3XYC+dfsrlGUoxE271frKUe8Pm/fVPodBeB7jGZzwd5z/WrelnZ9zsfk4WEdAhL0i5ketnEVe9uYNpQzcckiPtLqXnJf1vjKmy0xg1+J3p+sVBeT4QoLHjpKD2szQy4/Es5iRCyWsM8vv8Y6NV4MVlwf6e1 765289948@qq.com

致自己: 从2015北漂、2016、2017时间已过去。 2019年从头开始,希望自己珍惜每一秒,每一分钟,选择了剩下的就是坚持和努力,努力吧少年。 雪豹 20180109!
喜欢 (0)
发表我的评论
取消评论
表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址