apache2 git gerrit mysql 配置过程.docx

上传人:b****6 文档编号:8217296 上传时间:2023-01-29 格式:DOCX 页数:9 大小:20.06KB
下载 相关 举报
apache2 git gerrit mysql 配置过程.docx_第1页
第1页 / 共9页
apache2 git gerrit mysql 配置过程.docx_第2页
第2页 / 共9页
apache2 git gerrit mysql 配置过程.docx_第3页
第3页 / 共9页
apache2 git gerrit mysql 配置过程.docx_第4页
第4页 / 共9页
apache2 git gerrit mysql 配置过程.docx_第5页
第5页 / 共9页
点击查看更多>>
下载资源
资源描述

apache2 git gerrit mysql 配置过程.docx

《apache2 git gerrit mysql 配置过程.docx》由会员分享,可在线阅读,更多相关《apache2 git gerrit mysql 配置过程.docx(9页珍藏版)》请在冰豆网上搜索。

apache2 git gerrit mysql 配置过程.docx

apache2gitgerritmysql配置过程

apache2+git+gerrit+mysql配置过程

参考资料:

Gerrit简易安装入门

安装使用Codereview工具Gerrit

CodeReviewwithGerrit,amostlyvisualguide

GerritCodeReview-ReverseProxy

git是分布式版本控制工具。

gerrit是代码审核工具,当然也包括了一套权限系统(google发明的?

),git向远程仓库的refs/for/*分支提交代码时会先经过gerrit,审核通过后才会提交到ref/head/*分支。

mysql为gerrit提供数据库支持。

apache2在这里的主要是为了配合gerrit的账户认证,提供反向代理功能。

2.准备工作。

安装git,安装apache2,安装mysql,下载gerrit包。

(没有jdk的话也需要先安装和配置,网上资料很多)

apt-getinstallgit

apt-getinstallapache2

mysql本人是通过linux的updatamanger工具安装。

版本是5.1.10。

需要注意的是mysql默认安装以后所有字符集都是拉丁1,请不要更改此默认设置,本人的教训。

改成utf8以后安装gerrit时跑数据库脚本出错,会导致使用过程中会出现一些莫名的错误。

在googecode网站上下载gerrit2.x.x.war文件备用。

貌似还可以通过wget命令下载,未尝试。

安装过程没什么特殊设置。

说明:

apache2安装好以后默认的工作目录在/var/www/下。

配置目录在/etc/apache2下。

启动apache2:

/etc/init.d/apache2start

停止apache2:

/etc/init.d/apache2stop

启动mysql:

/etc/init.d/mysqlstart

停在mysql:

/etc/init.d/mysqlstop

mysql安装好以后是默认开机启动的。

3.配置过程。

1首先配置数据库。

数据库类型是可选的,h2,postgre也是可以的

执行mysql-uroot-p启动mysql控制台,执行如下脚本Java代码

CREATEUSER'git'@'localhost'IDENTIFIEDBY'git';

CREATEDATABASEreviewdb;

ALTERDATABASEreviewdbcharset=latin1;

GRANTALLONreviewdb.*TO'git'@'localhost';

FLUSHPRIVILEGES;

这里的数据库用户git和数据库名称reviewdb可以随便取,后面会用到他们。

关键是要设置charset=latin1,不要改成utf8了,本人一开始就是自做聪明该改成utf8,导致gerrit安装异常。

2安装gerrit。

通过执行命令Java代码

java-jar/home/xx/gerrit-2.2.1.warinit-d/home/xx/gerrt_sites

进行安装。

安装过程中会提示输入各种信息,包括数据库信息等,这些可以参考上面的链接。

大部分都可以使用默认配置,关键是在选择认证的时候Java代码

***UserAuthentication

***

Authenticationmethod[OPENID/?

]:

http

请选择http方式,不要使用openid方式,选择http方式后可以配置apache进行认证,选择openid方式后认证需要外网链接,而且貌似有bug,在[url]working[/url]网站上有介绍。

安装完成以后通过执行/home/xx/gerrt_sites/bin/gerrit.shstart启动gerrit。

接下来通过浏览器访问http:

//127.0.0.1:

8080/会进入错误提示页面,提示http请求未带授权头。

你也许会奇怪这里的http服务器是哪里来的。

这个其实就是打包在gerrit.war文件里的jetty服务器。

接下来配置好apache2就行了。

测试apahce2安装成功可以通过浏览器访问http:

//127.0.0.1/显示itworks就是按好了。

apahce2的默认端口是80.首先要激活代理模块Java代码

ln-s/etc/apache2/mods-available/proxy.conf/etc/apache2/mods-enable/proxy.conf

ln-s/etc/apache2/mods-available/proxy.load/etc/apache2/mods-enable/proxy.load

ln-s/etc/apache2/mods-available/proxy_http.load/etc/apache2/mods-enable/proxy_http.load然后在/etc/apache2/httpd.conf中加入下面的内容(什么?

httpd.conf是空的?

不要觉得奇怪,原始的httpd.conf本来就是个空文件)Java代码

<VirtualHost*>

ServerNamelocalhost

ProxyRequestsOff

ProxyViaOff

ProxyPreserveHostOn

<Proxy*>

Orderdeny,allow

Allowfromall

</Proxy>

<Location/login/>

AuthTypeBasic

AuthName"GerritCodeReview"

AuthBasicProviderfile

AuthUserFile/home/xx/gerrt_sites/etc/passwords

Requirevalid-user

</Location>

ProxyPass/http:

//127.0.0.1:

8080/

</VirtualHost>这里需要注意的是2个地方,一是AuthUserFile/home/xx/gerrt_sites/etc/passwords,这个路是指向的是个密码文件。

此文件通过命令生成Java代码

htpasswd/home/xx/gerrt_sites/etc/passwords"gerrit_fisrt_username"

这里的gerrit_fisrt_username就是以后用来登录gerrit的用户名。

以后要为gerirt增加用户,也需要通过htpasswd命令在此passwords文件中添加用户二是ProxyPass/http:

//127.0.0.1:

8080/,这里的配置必须和/home/xx/gerrt_sites/etc/gerrit.config文件里面的Java代码

[httpd]

listenUrl=proxy-http:

//127.0.0.1:

8080/

匹配。

/home/xx/gerrt_sites/etc/gerrit.config文件里面保存的是在gerrit安装过中输入的信息,更改配置也可以直接编辑此文件。

本人的gerrit.config如下Java代码

[gerrit]

basePath=git

canonicalWebUrl=http:

//127.0.0.1:

8080/

[database]

type=MYSQL

hostname=localhost

database=reviewdb

username=git

[auth]

type=HTTP

[sendemail]

smtpServer=localhost

[container]

user=gerrit2

javaHome=/usr/lib/jvm/java-6-openjdk/jre

[sshd]

listenAddress=*:

29418

[httpd]

listenUrl=proxy-http:

//127.0.0.1:

8080/

[cache]

directory=cache这些都配置好以后重启apache2,通过浏览器访问http:

//127.0.0.1/,会提示输入用户名密码,输入gerrit_fisrt_username和密码登录,就会自动跳转到http:

//127.0.0.1:

8080/,在此页面的右上方点击settings,然后在左侧栏点击profile,可以看到当前登录的用户名为gerrit_fisrt_username,然后点击ContactInformation,在fullname中随便输入名字保存即可。

第一个登入的账户默认是管理员账户正常情况下,在页面admin--》project下应该能在列表项中看到一个All-Projects项。

点击All-Projects可以设置各种权限。

如果你看不到All-Projects就说明你的gerrit安装又异常,多半是我上面提到的数据库字符集导致的。

4.gerrit公钥配置

在shell中执行命令Java代码

ssh-p29418gerrit_fisrt_username@127.0.0.1

提示Permissiondenied(publickey).

缺少公钥配置。

参考

执行:

Java代码

ssh-keygen-trsa

生成公钥,

查看:

Java代码

cat~/.ssh/id_rsa.pub

将个公钥添加到gerrit中。

进入http:

//127.0.0.1:

8080/,点击右上角setting,点左侧栏SSHPublicKeys

再点击又边的addkey,将公钥复制到里面,点击add提交。

这里需要注意的是需要复制的字符串是包括cat~/.ssh/id_rsa.pub命令打印出来的所有内容,即开头的ssh-sha和结尾的xx@xxx也要一起复制再次执行Java代码

ssh-p29418gerrit_fisrt_username@127.0.0.1

恭喜你,看到welcome就表示你已经配置完成如果链接异常的话,可以删除~/.ssh/knows_host重试执行Java代码

ssh-p29418gerrit_fisrt_username@127.0.0.1gerritcreate-project-ntest_project

添加一个项目。

在webUI就可以看到此项目了5.简便ssh

在~/.ssh/目录下新建文件config

加入内容如下Java代码

Hostgerrit_short

Usergerrit_fisrt_username

Port29418

Hostname127.0.0.1

IdentityFile~/.ssh/id_rsa

以后执行Java代码

ssh-p29418gerrit_fisrt_username@127.0.0.1

这个命令就可以简单的写成Java代码

sshgerrit_short

再比如

ssh-p29418gerrit_fisrt_username@127.0.0.1gerritcreate-project-ntest_project

就可以简写为Java代码

sshgerrit_shortgerritcreate-project-ntest_project

这里的第2个参数gerrit是关键字6.检出项目通过上面的命令创建项目以后,除了在http:

//127.0.0.1:

8080/可以看见以外,通过ssh也可以查看。

Java代码

sshgerrit_shortgerritls-projects

将会输出2个项目名称

all_project

test_project

一个是内置的,一个是刚才建立的。

(使用管理员账户才能看到内置的all_project项目)下面客户机就可以检出项目了:

Java代码

gitclonessh:

//gerrit2@127.0.0.1:

29418/test_project.git

当前目录下就会多出一个test目录,此目录即是你重服务器上检出的项目。

同时shell中会见看到如下提示

Cloningintotest_project...

warning:

remoteHEADreferstononexistentref,unabletocheckout.

这是因为test项目本身就是个空项目,所以还不存在头指针。

git的版本控制方式就像c语言里面的链表模型。

每一次提交会产生一个新的节点,而这个新的节点同时还有个指向原来节点的链接。

每一个头指针代表一个分支。

头指针指向的是链表的最后一个节点。

具体的模型可在progit.pdf中找到。

扯远了,扯回来。

8.第一次提交。

在刚此检出的test目录下新建一个文件readme.txt

执行:

Java代码

gitaddreadme.txt

或者执行Java代码

gitstagereadme.txt

这两个命令此处的效果相銅,之所以说“此处”,是因为add命令是个多个功能命令,还有其他含义,而这里的gitstage相当于svnadd接下来将文件提交到本地仓库,先配置git的默认编辑器Java代码

vi~/.gitconfig

加入如下内容;Java代码

[user]

name=some_one_

email=xxx@

[core]

editor=vim

并保存,以后每次提交的信息中对会带上以上提交人的描述信息,并且设置了编辑器为vim,方便编写log

执行:

Java代码

gitcommitreadme.txt

在vim中加入log并保存推出,即完成一次提交,注意此次是提交到本地仓库,和服务器没有关系。

9.push到远程仓库

参考

执行Java代码

gitpushoriginmaster

origin和master可不是什么关键字,他们只是默认的名称而已。

是克隆的仓库的默认别名,通过gitclonessh:

//gerrit_fisrt_username@127.0.0.1:

29418/test_project.git克隆以后,就会产生这个默认名称,简单点说就是origin=ssh:

//gerrit_fisrt_username@127.0.0.1:

29418/test_project.git

而master是本地仓库的当前分支名称。

通过gitcheckoutbranchname可以切换当前工作分支,这个后面再说。

gitpushoriginmaster此命令即是将到当前分支同步到远程仓库中去。

不过此命令在gerrit中是会失败的。

后面再说。

结果却显示错误:

Java代码

...

Tossh:

//gerrit_fisrt_username@127.0.0.1:

29418/test_project.git

!

[remoterejected]master->master(prohibitedbyGerrit)

error:

failedtopushsomerefsto'ssh:

//gerrit_fisrt_username@127.0.0.1:

29418/test_project.git'原因是gerrit不允许直接将本地修改同步到远程仓库。

客户机必须先push到远程仓库的refs/for/*分支上,等待审核。

这也是为什么我们需要使用gerrit的原因。

gerrit本身就是个代码审核工具。

接下来更该push的地址:

Java代码

gitconfigremote.origin.pushrefs/heads/*:

refs/for/*

此命令实际是更改的是本地仓库test_project/.git/config文件。

再次puhJava代码

gitpushorigin

这次不要加master,

结果又出错Java代码

remote:

ERROR:

Youhavenotregisteredanyemailaddresses.

解决办法:

Java代码

$gitconfig--globaluser.name"yourname"

$gitconfig--globaluser.emailyourmail@

#进入gerirt的安装目录

cd/home/xx/gerrt_sites

#执行

$java-jarbin/gerrit.shstop

$java-jarbin/gerrit.wargsql

#在新的shell中执行(其实就是修改mysql数据库表的内容,添加邮件地址)

gerrit>select*fromaccount_external_ids;

gerrit>updateaccount_external_idssetemail_address='yourmail@'whereaccount_id=your_acc_id

#这里的your_acc_id就是select查询出来的gerrit_fisrt_username账户对应的account_id列中的值

$java-jarbin/gerrit.shstart

再次执行Java代码

gitpushorigin恭喜你,push成功。

10。

审核,验证、提交。

push成功以后,进入http:

//127.0.0.1/开打web界面

点击左上的all,再点open,

会看到所有带审核的commit

即你在本地push之前执行了多少此commit,这里就会列出多少个commitid首先需要为用户配置权限信息,在admin--》projects--》All-Projects--》access中点击

edit,然后设置权限,具体设置方法就不描述了,说来话长了。

出要是要为refs/heads/*添加

LabelCode-Review

LabelVerified

Submit

+1和+2权限,并为每个权限添加用户组。

权限配置好以后,

点击某个commitid,在点击review,然后点击pulish或者submit

顺序是先审核,再验证,再提交。

相信大家多琢磨琢磨就知道怎么操作了

提交以后,

刚才的gitpushorigin才算真正的提交到了远程仓库中。

11.下载。

其他客户机就可以通过gitcolne(重复上面的过程)或者gitfetch来下载远程仓库,下载下来的内容就包含了刚才push上去内容。

当然,前提是要为其他开发者创建账户并添加权限,这些就不说啦,可以参考git权威指南这本书,有介绍gerrit的内容

这样即完成了一次代码的共享过程

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 经管营销 > 销售营销

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1