Gerrit服务器搭建

来自个人维基
2015年5月6日 (三) 20:14Hovercool讨论 | 贡献的版本

(差异) ←上一版本 | 最后版本 (差异) | 下一版本→ (差异)
跳转至: 导航搜索

目录

-、安装jdk

1、下载

2、将下载的tar.gz解压

3、更改 /etc/profile文件,在末处加入以下内容

export JAVA_HOME=/usr/java/jdk1.8.0_25
export PATH=$PATH:$JAVA_HOME/bin
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tool.jar:$JAVA_HOME/lib/rt.jar

4、新打开一个shell,输入java -version,能看到版本号就代表安装成功了

zmk@zmk-G41M-ES2L:~$ java -version
java version "1.8.0_25"
Java(TM) SE Runtime Environment (build 1.8.0_25-b17)
Java HotSpot(TM) 64-Bit Server VM (build 25.25-b02, mixed mode)

二、安装gerrit

1、下载gerrit

2、进入tomcat下面的webapps目录,安装war

java -jar gerrit.war init -d gerrit

一路回车下去(后面再更改配置文件)

打开 http://192.168.199.110:8080/ ,这个网址可以通过下面这条命令获取:

admin@zmk-G41M-ES2L:~$ git config -f ~/gerrit/etc/gerrit.config gerrit.canonicalWebUrl
http://zmk-G41M-ES2L:8080/

考虑到局域网跨机访问,建议把机器名域名(可以让局域网所有机器改host文件),编辑 ~/gerrit/etc/gerrit.config:

[gerrit]
        basePath = git
        canonicalWebUrl = http://gerrit.myserver.org:8080/

浏览器一直显示:

Loading Gerrit Code Review ...

这是因为默认的认证方式是用于和github之类关联的 OPENID,如果不配置是会出错的,我们把认证方式改一下

vim gerrit/etc/gerrit.config

把认证项改成:

[auth]
        type = HTTP

重启 gerrit服务:

$ gerrit/bin/gerrit.sh restart
  • gerrit-2.10需要再运行以下命令,否则 restart时会失败:
$ java -jar gerrit-2.10.war reindex

再访问:

Configuration Error
Check the HTTP server's authentication settings.

The HTTP server did not provide the username in the Authorization header when it forwarded the request to Gerrit Code Review. 
...

出现上面这个错误,是因为使用HTTP方式必须配置反向代理,如果仅仅是为了尝试一下,可以将auth type配置成 development_become_any_account(言下之意任意访问者都能注册)

  • 这里可能会奇怪,到目前为止,服务器没有安装任何网页服务啊,这是怎么show出来的?——这是因为 gerrit自带了 jetty服务器

3、安装apache、配置反向代理

  • 首先更改gerrit配置,使能代理;另外使用代理后就直接使用apache的80端口访问了,需要把8080去掉
[gerrit]
        basePath = git
        canonicalWebUrl = http://gerrit.myserver.org/
...

[httpd]  
        listenUrl = proxy-http://127.0.0.1:8080/  
  • 安装apache2
apt-get install apache2
  • 配置apache
在ubuntu 12.04上,apache配置路径为 /etc/apache2/apache2.conf,不过使能模块不用直接更改这个文件,只要进入/etc/apache2/mods-enabled,创建软链接即可:
root@zmk-G41M-ES2L:/etc/apache2/mods-enabled# ln -s ../mods-available/proxy.conf proxy.conf
root@zmk-G41M-ES2L:/etc/apache2/mods-enabled# ln -s ../mods-available/proxy.load proxy.load
root@zmk-G41M-ES2L:/etc/apache2/mods-enabled# ln -s ../mods-available/proxy_http.load proxy_http.load
  • 配置虚拟主机,在这个主机中使能代理,修改 /etc/apache2/httpd.conf,末尾加入以下内容:
<VirtualHost *>
  ServerName gerrit.myserver.org
  ProxyRequests Off
  ProxyVia Off
  ProxyPreserveHost On

  <Proxy *>
        Order deny,allow
        Allow from all
  </Proxy>

  <Location /login/>
     AuthType Basic
     AuthName "Gerrit Code Review"
     AuthBasicProvider file
     AuthUserFile /home/admin/gerrit/etc/passwords
     Require valid-user
  </Location>

  AllowEncodedSlashes On
  ProxyPass / http://127.0.0.1:8080/ nocanon
</VirtualHost>
  • ServerName配置的是主机的域名或者ip,如果用localhost那就相当于只能本机访问

4、生成第一个gerrit帐户

第一个帐户会默认为管理员

admin@zmk-G41M-ES2L:~$ touch /home/admin/gerrit/etc/passwords
admin@zmk-G41M-ES2L:~$ htpasswd /home/admin/gerrit/etc/passwords "root"
New password:
Re-type new password:
Adding password for user root

重启 apache:

/etc/init.d/apache2 restart

再用浏览器打开看一下,注意现在是通过apache代理访问,所以只要输入 http://192.168.199.110 使用apache默认的80端口就可以了,不是 http://192.168.199.110:8080

这时提示要用户密码,输入刚刚创建的 root——久违的界面终于出来了!

5、配置gerrit服务官方邮箱

编辑 gerrit/etc/gerrit.config

[sendemail]
        smtpServer = smtp.exmail.qq.com
        smtpServerPort = 465
        smtpEncryption = SSL
        smtpUser = xxx@exmail.qq.com
        smtpPass = your_passwad
        from = xxx@exmail.qq.com

如此,在gerrit用户设置/修改自己邮箱时就会通过这个邮箱发出验证链接

三、使用 gerrit简单示例

在.ssh目录下创建config文件,加入以下内容:

Host gerrit
        User root
        Port 29418
        Hostname 192.168.199.110
        IdentityFile ~/.ssh/id_rsa

这样就不用每次都输入 "ssh -p 29418 root@192.168.199.110 xxx"了,可以简化,直接输:

ssh gerrit xxx
  • 注意,windows下使用 Git Bash也直接用这个文件即可,无需更改 IdentityFile地址
  • 如果提示 "Bad owner or permissions on /home/xxx/.ssh/config",则更改一下文件权限 "chmod 600 ~/.ssh/config"

如创建一个git库:

ssh gerrit gerrit create-project -n test_project

再列出当前所有git库:

admin@zmk-G41M-ES2L:~$ ssh gerrit gerrit ls-projects
test_project

此时,再通过浏览器查看,也可以找到这个git库

四、配置gitweb

安装gitweb,再配置下gitconfig就ok了:

admin@zmk-G41M-ES2L:~/WD/python$ sudo apt-get install gitweb
admin@zmk-G41M-ES2L:~/WD/python$ git config --file  ~/gerrit/etc/gerrit.config gitweb.cgi /usr/share/gitweb/gitweb.cgi
admin@zmk-G41M-ES2L:~/WD/python$ vim /home/admin/gerrit/etc/gerrit.config
admin@zmk-G41M-ES2L:~/WD/python$ vim /home/admin/gerrit/etc/gerrit.config
admin@zmk-G41M-ES2L:~/WD/python$ git config --file ~/gerrit/etc/gerrit.config  --unset gitweb.url
admin@zmk-G41M-ES2L:~/WD/python$ ~/gerrit/bin/gerrit.sh restart
Stopping Gerrit Code Review: OK
Starting Gerrit Code Review: OK

刷新一下,是project -> list的右侧是不是多了 gitweb的链接?

这时,我们以管理员身份登陆 gerrit发现一切OK,但使用其他用户则发现点击 gitweb会打不开项目,提示 "not found",这时还需要配置一下 All-Project的权限:

为 refs/meta/config添加 Registered Users的read access权限。