/ 中存储网

在window7系统中安装配置Gerrit code review与GitWeb图文教程

2013-10-01 14:16:01 来源:IT技术网

写本文的目的是为了方便在windows环境下能够布署上Gerrit代码评审环境和GitWeb实现代码管理,并总结本人在安装中所遇到的问题,以使后来者少走弯路,如果是在linux环境下配置就可以略过了。  

 工欲善其事必先利其器,先准备好要用的软件     

Git的下载地址:http://code.google.com/p/msysgit/downloads/list  Git-1.8.4-preview20130916.exe

gerrit 的下载地址:http://code.google.com/p/gerrit/     gerrit-2.8.war

Apache的下载地址:http://httpd.apache.org/download.cgi  httpd-2.2.25-win32-x86-openssl-0.9.8y.msi

Mysql的下载地址:http://www.mysql.com/downloads/   mysql-5.5.34-win32.msi

tomcat7的下载地址:http://tomcat.apache.org/download-70.cgi   apache-tomcat-7.0.47.zip

下载jdk jdk-6u35-windows-i586.exe

以上是所需要用到的软件,下面开始安装了,安装目录的安排如下:(根据自己需要)

E:GitServer 

E:GitServerApache

E:GitServergerrit

E:GitServerGit

E:GitServerTomcat7

1、首先安装Git,我在安装时的选择

在Git中没有CGI模块,因此不能正确启动GitWeb脚本,因此要先下载CGI模块 http://search.cpan.org/~markstos/CGI/,下一个CGI3.59版本,把里面的lib文件夹里的文件拷到E:GitServerGitlibperl55.8.8目录下。

在E:GitServerGitsharegitweb目录下找到gitweb.cgi用UE打开修改

our $GIT = "E:/GitServer/Git/bin/git";

our $projectroot = "/E/XXXXXX/XXXXXXX"; 这个是Git代码的项目目录

2、Apache、MySQL、JDK的安装,直接安照向导安装就可以了,这里就不贴图了。

3、Gerrit的安装,首先在mysql中建好reviewdb数据库

CREATE USER 'gerrit'@'localhost' IDENTIFIED BY 'gerrit';

CREATE DATABASE reviewdb;

ALTER DATABASE reviewdb charset=latin1;

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

FLUSH PRIVILEGES;

脚本的意思是建一个reviewdb的数据库并给它gerrit用户名和密码来管理

打开命令行cmd,将gerrit-2.8.war放在E:GitServer下,java -jar gerrit-2.8.war init -d E:/GitServer/gerrit/review_site

后面就提示安装完成,然后不能在win32下运行,这个提示不要紧,我们的gerrit不是用它自带的jetty服务器而是tomcat和apache,下面是我的gerrit配置文件,在review_siteetc下找到gerrit.config文件,就可以编辑它,根据需要把一些配置改过来

[gerrit]

 basePath = E:/GitStack/repositories 这个是git仓库的位置

 canonicalWebUrl = http://192.168.1.100:8080/gerrit/ 这是gerrit的起始链接

[gitweb]

  url = http://192.168.1.100:81/gitweb   这是gitweb查看的链接

[database]            mysql的一些信息

 type = mysql

 hostname = localhost

 port = 3306

 database = reviewdb

 username = gerrit

[auth]

 type = HTTP   

 logoutUrl = http://admin:[email protected]:8080/

[sendemail]    注册发确认邮件配置

 smtpServer = smtp.qq.com

  smtpServerPort = 465

  smtpEncryption = SSL

  smtpUser = [email protected]

  smtpPass = xxxxxxxxx

  from = Code Review <[email protected]>

[container]

 user = admin

 javaHome = C:jdk1.6jre

[sshd]

 listenAddress = *:29418

[httpd]

 listenUrl = proxy-http://192.168.1.100:8080/   监听的链接用于apache反向连接

[cache]

 directory = cache

把gerrit-2.8.war改为gerrit-2.8.zip,并解压到E:GitServergerritgerrit-2.8里面,这是tomcat来作为服务器运行这个web

4、将tomcat7解压到E:GitServerTomcat7下, 然后在tomcat7confCatalinalocalhost下建一个文件gerrit.xml内容是

<?xml version="1.0" encoding="utf-8"?>

<Context path="/gerrit" docBase="E:/GitServer/gerrit/gerrit-2.8" reloadable="true"/>

接着修改tomcat7conf下context.xml,在<context>中加入如下代码

<Resource

name="jdbc/ReviewDb"

type="javax.sql.DataSource"

driverClassName="com.mysql.jdbc.Driver"

username="gerrit"

password="gerrit"

maxIdle="30"

maxWait="10000"

maxActive="100"

url="jdbc:mysql://localhost:3306/ReviewDB?autoReconnect=true"

auth="Container"

/>

5、配置Apache:将ApacheApache2confhttp.conf里如下地方前面的#号去掉表示启用功能

LoadModule proxy_module modules/mod_proxy.so

LoadModule proxy_connect_module modules/mod_proxy_connect.so

LoadModule proxy_http_module modules/mod_proxy_http.so

LoadModule proxy_ftp_module modules/mod_proxy_ftp.so

LoadModule negotiation_module modules/mod_negotiation.so

在最后面加上

Include conf/extra/httpd-git.conf

Include conf/extra/httpd-gerrit.conf

在Listen 80后加上Listen 81,这个81用来访问gitweb

在conf/extra目录下新建如上两个配置文件内容如下

http-git.conf    GIT_PROJECT_ROOT 的路径和E:GitServerGitsharegitwebgitweb.cgi 里的 our $projectroot = "/E/XXXXXX/XXXXXXX";一致

AuthUserFile "E:/GitServer/Git/htpassword" 这个文件通过Aapchebinhtpasswd.exe 创建,如:htpasswd -c E:GitServerGithtpassword admin

<VirtualHost *:81>

SetEnv GIT_PROJECT_ROOT "E:/XXXXXXXXX/XXXXXXXX"

SetEnv GIT_HTTP_EXPORT_ALL 1

ScriptAlias /repos "E:/GitServer/Git/libexec/git-core/git-http-backend.exe/"

<Directory "E:/GitServer/Git/libexec/git-core/">

Allow From All

</Directory>

<Location "/repos">

Order Allow,Deny

Allow from all

AuthType Basic

AuthName "GIT Repository"

AuthUserFile "E:/GitServer/Git/htpassword"

Require valid-user

</Location>

Alias /gitweb "E:/GitServer/Git/share/gitweb"

<Directory "E:/GitServer/Git/share/gitweb">

AddHandler cgi-script .cgi

<Files ~ ".cgi$">

Options +ExecCGI

</Files>

AllowOverride None

Order allow,deny

Allow from all

DirectoryIndex gitweb.cgi

</Directory>

ErrorLog "E:/GitServer/Apache/Apache2/logs/gitweb_error.log"

  CustomLog "E:/GitServer/Apache/Apache2/logs/gitweb_access.log" common

</VirtualHost>

httpd-gerrit.conf

<VirtualHost *:80>

   ServerName 填你的域名/IP

   ProxyRequests Off

   ProxyVia Off

   ProxyPreserveHost On

ErrorLog E:/GitServer/Apache/Apache2/logs/gerrit_error.log

  <Proxy *>

Order deny,allow

Allow from all

  </Proxy>

  <Location /gerrit/login/>

AuthType Basic

AuthName "Gerrit Android Code Review"

AuthBasicProvider file

Require valid-user

AuthUserFile E:/GitServer/Git/htpassword

  </Location>

AllowEncodedSlashes On

  ProxyPass / http://192.168.1.100:8080/ nocanon

  ProxyPassReverse / http://192.168.1.100:8080/ nocanon

  SetEnv force-proxy-request-1.0 1

  SetEnv proxy-nokeepalive 1

</VirtualHost>

有以上的配置步骤然后启动tomcat和apcahe基本上gerrit和gitweb就已经可以运行起来了,通过http://localhost/gerrit/login/ 就可以来登录了,由于这里gerrit是用的htttp认证方式,用户帐号都是在htpassword里的,要添加用户就在htpassword里面加,第一个登录gerrit的帐号自动成为管理员,因此在登录进后最好马上修改用户名和验证邮箱,不然再次登录的时候就没有管理员的权限,不能创建项目和管理组了,如果出现这个情况就只有直接去mysql里修改数据库了如下图:

还有一个问题大家会遇到就是有多层目录的时候,浏览时会报Error Bad Request,这是因为tomcat对"/"的解析有问题,此时要在tomcat/bin/catalina.bat里要加上-Dorg.apache.tomcat.util.buf.Udecoder.ALLOW_ENCODED_SLASH=true,还有如果库的代码很大的话,在浏览时会报500的错误,这是java的虚拟内存不够用,解决办法还是修改catalina.bat加上-Xmx800m,因此总的解决办法就来了,在它里面加上set JAVA_OPTS=-server -Xms800m -Xmx800m -XX:MaxNewSize=256m -Dorg.apache.tomcat.util.buf.Udecoder.ALLOW_ENCODED_SLASH=true,同时解决这两个问题。

以上就是我在安装Gerrit时的经验