日期:2014-05-17  浏览次数:21103 次

apache2 + git + gerrit + mysql 配置、简单git操作

经过一晚的折腾,终于在linux mint12下将apache2,git,gerrit配置成功。

参考资料:
http://m.oschina.net/blog/33017
http://www.lifeyun.com/code-review-tools-installation-gerrit.html
http://unethicalblogger.com/2009/12/07/code-review-with-gerrit-a-mostly-visual-guide.html
http://gerrit.googlecode.com/svn/documentation/2.1.7/config-reverseproxy.html
http://www.lifeyun.com/code-review-tools-installation-gerrit.html
http://www.infoq.com/cn/articles/Gerrit-jenkins-hudson

?

?

1.模块作用介绍。
??? git是分布式版本控制工具。
??? gerrit是代码审核工具,当然也包括了一套权限系统(google发明的?),git向远程仓库的refs/for/*分支提交代码时会先经过gerrit,审核通过后才会提交到ref/head/*分支。
??? mysql为gerrit提供数据库支持。
??? apache2在这里的主要是为了配合gerrit的账户认证,提供反向代理功能。

2.准备工作。
??? 安装git,安装apache2,安装mysql,下载gerrit包。(没有jdk的话也需要先安装和配置,网上资料很多)
??? apt-get install git
??? apt-get install apache2
??? 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/apache2 start
???????? 停止apache2:/etc/init.d/apache2 stop
???????? 启动mysql:/etc/init.d/mysql start
???????? 停在mysql:/etc/init.d/mysql stop
???????? mysql安装好以后是默认开机启动的。

3.配置过程。
???? 1首先配置数据库。数据库类型是可选的,h2,postgre也是可以的
???? 执行mysql -uroot -p启动mysql控制台,执行如下脚本

  CREATE USER 'git'@'localhost' IDENTIFIED BY 'git';
  CREATE DATABASE reviewdb;
  ALTER DATABASE reviewdb charset=latin1;
  GRANT ALL ON reviewdb.* TO 'git'@'localhost';
  FLUSH PRIVILEGES;


这里的数据库用户git和数据库名称reviewdb可以随便取,后面会用到他们。关键是要设置charset=latin1,不要改成utf8了,本人一开始就是自做聪明该改成utf8,导致gerrit安装异常。

???? 2 安装gerrit。通过执行命令

java -jar /home/xx/gerrit-2.2.1.war init -d /home/xx/gerrt_sites


进行安装。安装过程中会提示输入各种信息,包括数据库信息等,这些可以参考上面的链接。大部分都可以使用默认配置,关键是在选择认证的时候

?
*** User Authentication  
***   
  
Authentication method          [OPENID/?]: http


请选择http方式,不要使用openid方式,选择http方式后可以配置apache进行认证,选择openid方式后认证需要外网链 接,而且貌似有bug,在[url] http://stackoverflow.com/questions/3705656/openid-with-gerrit-not- working[/url]网站上有介绍。
安装完成以后通过执行/home/xx/gerrt_sites/bin/gerrit.sh start 启动gerrit。
接下来通过浏览器访问http://127.0.0.1:8080/会进入错误提示页面,提示http请求未带授权头。你也许会奇怪这里的http服务器是哪里来的。这个其实就是打包在gerrit.war文件里的jetty服务器。

接下来配置好apache2就行了。测试apahce2安装成功可以通过浏览器访问http://127.0.0.1/显示it works 就是按好了。apahce2的默认端口是80.

首先要激活代理模块

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本来就是个空文件)

???
<VirtualHost *>
  ServerName localhost
  ProxyRequests Off
  ProxyVia Off
  ProxyPreserveHost On

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