现在的位置: 首页 > 综合 > 正文

git,gerrit,apache2配置

2014年01月07日 ⁄ 综合 ⁄ 共 5057字 ⁄ 字号 评论关闭


在linux 下将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

http://blog.csdn.net/harvey2008/article/details/8925422


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

2.环境准备
    2.1 安装git、apache2、mysql
          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安装好以后是默认开机启动的。

    2.2 下载gerrit包。

         可有通过google网站下载gerrit至本地。

3.环境配置。
     1 数据库配置。gerrit可以使用多类数据库,如h2,postgre,但通常我们使用mysql(比较熟悉,个人爱好哈)
        执行mysql -uroot -p启动mysql控制台,执行如下脚本

Java代码  收藏代码
  1. CREATE USER 'git'@'localhost' IDENTIFIED BY 'git';  
  2. CREATE DATABASE reviewdb;  
  3. ALTER DATABASE reviewdb charset=latin1;  
  4. GRANT ALL ON reviewdb.* TO 'git'@'localhost';  
  5. 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进行安装。

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

Java代码  收藏代码
  1. *** User Authentication    
  2. ***     
  3.     
  4. 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.

首先要激活代理模块

Java代码  收藏代码
  1. ln -s /etc/apache2/mods-available/proxy.conf /etc/apache2/mods-enable/proxy.conf  
  2.   
  3. ln -s /etc/apache2/mods-available/proxy.load /etc/apache2/mods-enable/proxy.load  
  4.   
  5. 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代码  收藏代码
  1. <VirtualHost *>  
  2.   ServerName localhost  
  3.   ProxyRequests Off  
  4.   ProxyVia Off  
  5.   ProxyPreserveHost On  
  6.   
  7.   <Proxy *>  
  8.         Order deny,allow  
  9.         Allow from all  
  10.   </Proxy>  
  11.    
  12.   <Location /login/>  
  13.      AuthType Basic  
  14.      AuthName "Gerrit Code Review"  
  15.      AuthBasicProvider file  
  16.      AuthUserFile /home/xx/gerrt_sites/etc/passwords  
  17.      Require valid-user  
  18.   </Location>  
  19.   
  20.   ProxyPass / http://127.0.0.1:8080/  
  21. </VirtualHost>  



这里需要注意的是2个地方,一是AuthUserFile /home/xx/gerrt_sites/etc/passwords,这个路是指向的是个密码文件。此文件通过命令生成

Java代码  收藏代码
  1. 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代码  收藏代码
  1. [httpd]  
  2.         listenUrl = proxy-http://127.0.0.1:8080/  


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

Java代码  收藏代码
  1. [gerrit]  
  2.         basePath = git  
  3.         canonicalWebUrl = http://127.0.0.1:8080/  
  4. [database]  
  5.         type = MYSQL  
  6.         hostname = localhost  
  7.         database = reviewdb  
  8.         username = git  
  9. [auth]  
  10.         type = HTTP  
  11. [sendemail]  
  12.         smtpServer = localhost  
  13. [container]  
  14.         user = gerrit2  
  15.         javaHome = /usr/lib/jvm/java-6-openjdk/jre  
  16. [sshd]  
  17.         listenAddress = *:29418  
  18. [httpd]  
  19.         listenUrl = proxy-http://127.0.0.1:8080/  
  20. [cache]  
  21.         directory = cache  



这些都配置好以后重启apache2,通过浏览器访问http://127.0.0.1/,会提示输入用户名密码,输入gerrit_fisrt_username和密码登录,就会自动跳转到http://127.0.0.1:8080/,在此页面的右上方点击settings,然后在左侧栏点击profile,可以看到当前登录的用户名为gerrit_fisrt_username,然后点击Contact
Information,在fullname中随便输入名字保存即可。第一个登入的账户默认是管理员账户


正常情况下,在页面admin--》project下应该能在列表项中看到一个All-Projects项。
点击All-Projects可以设置各种权限。如果你看不到All-Projects就说明你的gerrit安装又异常,多半是我上面提到的数据库字符集导致的。


4.gerrit公钥配置
  在shell中执行命令

Java代码  收藏代码
  1. ssh -p 29418 gerrit_fisrt_username@127.0.0.1  


提示Permission denied (publickey).
缺少公钥配置。
参考http://www.lifeyun.com/code-review-tools-installation-gerrit.html
执行:

Java代码  收藏代码
  1. ssh-keygen -t rsa  


生成公钥,
查看:

Java代码  收藏代码
  1. cat ~/.ssh/id_rsa.pub  


将个公钥添加到gerrit中。
进入http://127.0.0.1:8080/,点击右上角setting,点左侧栏SSH Public Keys
再点击又边的add key,将公钥复制到里面,点击add提交。
这里需要注意的是需要复制的字符串是包括cat ~/.ssh/id_rsa.pub命令打印出来的所有内容,即开头的ssh-sha和结尾的xx@xxx也要一起复制

再次执行

Java代码  收藏代码
  1. ssh -p 29418 gerrit_fisrt_username@127.0.0.1  


恭喜你,看到welcome就表示你已经配置完成

如果链接异常的话,可以删除~/.ssh/knows_host重试

执行

Java代码  收藏代码

抱歉!评论已关闭.