/ 中存储网

Ubuntu系统中安装Gerrit的步骤

2013-10-12 08:05:01 来源:itjs.cn
    目标

配置Gerrit使用mysql数据库(原因:本人比较熟悉mysql)

使用http授权模式,使用apache反向代理。

SMTP使用163的个人邮箱

软件版本

Ubuntu 12.04

Gerrit 2.4.1

Apache 2.2.22

Mysql 5.5.24

下面好戏开始了

相信各位安装mysql和apache,都能搞定,sudo apt-get,完了。

配置数据库:

CREATE USER 'gerrit2'@'localhost' IDENTIFIED BY 'secret';

CREATE DATABASE reviewdb;

ALTER DATABASE reviewdb charset=latin1;

GRANT ALL ON reviewdb.* TO 'gerrit2'@'localhost';

FLUSH PRIVILEGES;

这是从官方文档得到的代码,其中我没有使用alter database reviewdb charset=latin1;这条语句。

网上有资料说utf8会无法安装,但俺没遇到。

但gerrit对中文的支持确实不好,所以大家尽量用英文吧。

安装Gerrit

java -jar gerrit-$version-rc1.war init -d review_site

然后一路回车就行,本人比较喜欢自己修改配置文件。

vi review_sit/etc/gerrit.config

[gerrit]

basePath = git

canonicalWebUrl = 192.168.1.254:8081

[database]

type = MYSQL

hostname = localhost

database = reviewdb

username = gerrit2

[auth]

type = HTTP

[sendemail]

smtpServer = smtp.163.com

smtpUser = [email protected]

from = [email protected]

[container]

user = gerrit2

javaHome = /opt/jdk1.7.0_05/jre

[sshd]

listenAddress = 192.168.1.254:29418

[httpd]

listenUrl = proxy-http://192.168.1.254:8081

[cache]

directory = cache

然后vi review_sit/etc/gerrit.config,下面的mima代表你的密码

[database]

password = mima  //数据库用户gerrit2的密码

[sendemail]

smtpPass = mima  //你邮箱的密码

然后配置apche

将/etc/apache2/sites-enabled目录下的文件都删除,(我是全新安装的)。

为什么删除,因为当我安装资料配置好以后,出现有时候能正常运行,有时候不能运行。让我郁闷了很长时间。这里面有一个默认的虚拟主机。

然后再/etc/apache2/sites-enabled目录下,vi proxy-gerrit,然后输入:

ServerName a.wangconglin.cn

ProxyRequests Off

ProxyVia Off

ProxyPreserveHost On

Order deny,allow

Allow from all

AuthType Basic

AuthName “Gerrit Code Review”

Require valid-user

AuthBasicProvider file

AuthUserFile /home/gerrit2/passwords

ProxyPass / http://192.168.1.254:8081/

ProxyPassReverse / http://192.168.1.254:8081/

上面的AuthUserFile /home/gerrit2/passwords,生成示例命令如下:

htpassword /home/gerrit2/passwords [username]

运行Gerrit:

/home/gerrit2/review_site/bin/gerrit.sh start -d /home/gerrit2/review_site

使用git push前,gerrit不允许直接覆盖git代码库中的任何分支,而是将变更推送到另一个refspce中。

git config remote.origin.push refs/heads/*:refs/for/*

git push origin