Gerrit服务器搭建
目录 |
-、安装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/
- 尤其注意,虽然生成的文件在目录 gerrit下面,但URL并非 http://xxxx:8080/gerrit/
浏览器一直显示:
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>
- The two options AllowEncodedSlashes On and ProxyPass .. nocanon are required since Gerrit 2.6.,这两个必须设置,否则在 gerrit/git/下创建子目录时将会出现访问出错
- 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权限。