【Git】Ubuntu18.04搭建gerrit+gitweb+apache2服务器

Ubuntu18.04搭建gerrit+gitweb+apache2服务器

  • 前言
    • 1. 安装java环境
    • 2. 创建gerrit用户
    • 3. 安装git环境
    • 4. 配置apache2代理
    • 5. 配置gerrit环境
    • 6. 访问H2数据库
    • 7. 安装plugins插件
    • 8. 配置gitweb超链接
    • 9. 重启apache2服务
    • 10. 访问gitweb界面
    • 11. 配置Git Bash
    • 12. 配置TortoiseGit
  • 总结


前言

简介:Gerrit是一个基于Web的代码审查工具,它与Git集成并创建在Git版本控制系统之上。当完成代码审查后,它可以将更改合并到Git仓库。Gerrit由Google 的Shawn Pearce开发,它是用Java,Servlet,GWT(Google Web Toolkit)编写的,于2016年3月11日发布,授权为Apache许可证v2。


1. 安装java环境

在ubuntu服务器上安装java,选择openjdk-8-jre-headless版本,以超级管理员身份安装:

$ java –version
$ sudo apt-get install openjdk-8-jre-headless

【Git】Ubuntu18.04搭建gerrit+gitweb+apache2服务器_第1张图片
【Git】Ubuntu18.04搭建gerrit+gitweb+apache2服务器_第2张图片

2. 创建gerrit用户

1)新建一个专用 gerrit用户:

$ sudo adduser gerrit

【Git】Ubuntu18.04搭建gerrit+gitweb+apache2服务器_第3张图片

2)增加sudo权限(可选):

$ sudo usermod -a -G sudo gerrit

3. 安装git环境

在ubuntu系统上以超级用户身份执行安装:

$ sudo apt-get install git

4. 配置apache2代理

1)安装apache2:在ubuntu系统上以超级用户安装apache2代理服务器。

$ sudo apt-get install apache2

2)配置apache2反向代理:进入apache2的安装目录/etc/apache2/sites_available/,修改配置文件000_default.conf文件。

$ sudo vi /etc/apache2/ sites_available/000_default.conf

添加文件内容如下:

<VirtualHost *:80>
     
    ServerName 192.168.11.111
 
    ProxyRequests Off
    ProxyVia Off
    ProxyPreserveHost On
 
    <Proxy *>
          Order deny,allow
          Allow from all
    </Proxy>
 
    <Location "/login/">
        AuthType Basic
        AuthName "Gerrit Code Review"
        Require valid-user
        AuthBasicProvider file
        AuthUserFile /home/gerrit/review_site/gerrit.passwd
    </Location>
 
    AllowEncodedSlashes On
    
    ProxyPass / http://192.168.11.111:8081/ 
 
</VirtualHost>

3)开启SSL、Proxy、Rewrite模块:进入apache2的安装目录/etc/apache2/mods-enabled/,开启功能模块。

$ cd /etc/apache2/mods-enabled/

依次执行以下命令:

sudo ln -s ../mods-available/proxy.load
sudo ln -s ../mods-available/proxy.conf
sudo ln -s ../mods-available/proxy_http.load
sudo ln -s ../mods-available/proxy_balancer.conf
sudo ln -s ../mods-available/proxy_balancer.load
sudo ln -s ../mods-available/rewrite.load
sudo ln -s ../mods-available/ssl.conf
sudo ln -s ../mods-available/ssl.load
sudo ln -s ../mods-available/slotmem_shm.load
sudo ln -s ../mods-available/socache_shmcb.load

5. 配置gerrit环境

1)下载gerrit-2.15.war安装包:

$ sudo wget http://gerrit-releases.storage.googleapis.com/gerrit-2.15.war

【Git】Ubuntu18.04搭建gerrit+gitweb+apache2服务器_第4张图片

2)安装gerrit软件:在ubuntu服务器上以超级用户身份安装gerrit软件,如果gerrit用户已经授予了root权限,也可以以gerrit用户安装,均安装在gerrit目录下。安装过程中,数据库默认选择H2数据库,认证方式选择HTTP,其均选择默认即可。若需修改配置,安装完成后可修改/home/git/gerritSever/etc/gerrit.config。

$ sudo java -jar gerrit-2.15.war init -d ~/review_site

3)修改gerrit配置文件:

$ sudo vi ~/review_site/etc/gerrit.config

配置文件中的sshd端口默认为29418,根据实际情况进行修改,此处选择39418。具体内容配置如下:

[gerrit]
        basePath = git
        serverId = 02481fa0-9b63-4b6a-9869-8b4e2a4364ee
        canonicalWebUrl = http://192.168.11.111:8081/
[database]
        type = h2
        database = /home/gerrit/review_site/db/ReviewDB
[auth]
        type = HTTP
[receive]
        enableSignedPush = false
[sendemail]
        smtpServer = smtp.163.com
        smtpServerPort = 25
        smtpEncryption = ssl 
        smtpUser = [email protected]
        smtpPass = ******
        sslVerify = false 
        from = Code Review < [email protected] >
[container]
        user = gerrit
        javaHome = /usr/lib/jvm/java-7-openjdk-amd64/jre
[sshd]
        listenAddress = *:39418
[httpd]
        listenUrl = proxy-http://*:8081/
[cache]
        directory = cache

注:此处httpd中的IP地址端口号必须和配置apache2反向代理过程中/etc/apache2/review_site/000_default.conf文件中ProxyPass / http://192.168.11.111:8081/中的IP地址一致。

4)配置gerrit用户:进入到gerrit安装目录~/gerrit/review_site/etc/,创建一个用来配置用户名和密码的gerrit.passwd文件。

$ sudo touch ~/review_site/ gerrit.passwd
$ sudo htpasswd -b ~/review_site/gerrit.passwd admin 123456

在这里插入图片描述
【Git】Ubuntu18.04搭建gerrit+gitweb+apache2服务器_第5张图片

注:此处设置的第一个用户admin,即为首次登入WEB UI的管理员账号,具有超级用户的权限。

6. 访问H2数据库

1)进入H2数据库:在服务器端执行命令调用gerrit.war,此处必须在review_site/根目录下访问。

$ sudo java -jar bin/gerrit.war gsql

在这里插入图片描述

2)查看数据库表结构:使用SQL数据库操作命令进行数据表查询,“\h”为帮助指令,“\d”为显示数据表指令。

【Git】Ubuntu18.04搭建gerrit+gitweb+apache2服务器_第6张图片

注:如果在启动gerrit服务后,需要操作H2数据库,则必须先停止gerrit服务,再通过上述指令访问数据库。

7. 安装plugins插件

1)下载插件:进入gerritForge官网的Jenkins下载界面,找到对应gerrit版本所需下载的插件:https://gerrit-ci.gerritforge.com/。

【Git】Ubuntu18.04搭建gerrit+gitweb+apache2服务器_第7张图片

此处以安装项目删除插件为例:服务器安装的gerrit版本为2.15,搜索Project plugin-delete-project-bazel-stable-2.15,进入下载界面后,选择delete-project.jar进行下载。

【Git】Ubuntu18.04搭建gerrit+gitweb+apache2服务器_第8张图片

2)安装插件:将下载的delete-project.jar文件复制到服务器端安装gerrit的目录:~/review_site/plugins/。

【Git】Ubuntu18.04搭建gerrit+gitweb+apache2服务器_第9张图片

8. 配置gitweb超链接

1)安装gitweb软件:在ubuntu系统上以超级用户身份安装gitweb软件。

$ sudo apt-get install gitweb

【Git】Ubuntu18.04搭建gerrit+gitweb+apache2服务器_第10张图片

2)查看gitweb.cgi安装路径:

$ dpkg -L gitweb

【Git】Ubuntu18.04搭建gerrit+gitweb+apache2服务器_第11张图片

3)配置gitweb:打开~/gerrit/review_site/etc/gerrit.config文件,在最后添加gitweb配置项:

[gitweb]
		type = gitweb
   		cgi = /usr/lib/cgi-bin/gitweb.cgi

4)配置gitweb-theme主题:在gerrit服务器上将这个开源项目克隆下来,存放在git目录下:

$ sudo git clone https://github.com/kogakure/gitweb-theme

在这里插入图片描述

5)进入gitweb-theme/目录下,执行安装命令:

$ sudo ./setup -vi --install

在这里插入图片描述

注:这条指令会操作/usr/share/gitweb/static目录中的内容,它会在原目录中将原文件备份(分别为:git-favicon.png、git-logo.png、gitweb.css)

6)再次执行命令:

$ sudo a2enmod cgi

在这里插入图片描述

9. 重启apache2服务

进入gerrit的安装目录~/gerrit/review_site/bin和apache2的服务目录/etc/init.d/,重启gerrit.sh服务和apache2服务。

$ sudo ~/review_site/bin/gerrit.sh restart

在这里插入图片描述

$ sudo /etc/init.d/apache2 restart

在这里插入图片描述

10. 访问gitweb界面

1)登入WEB UI:在windows客户端打开浏览器,输入IP访问地址:http://192.168.11.111/,以第一个用户名admin和相应密码登入WEB界面。

【Git】Ubuntu18.04搭建gerrit+gitweb+apache2服务器_第12张图片

2)查看项目:点击Projects可查看默认有两个项目All-Projects和All-User,这两个版本并非实际存在的版本库,只是用来用户创建版本库时分享权限。

【Git】Ubuntu18.04搭建gerrit+gitweb+apache2服务器_第13张图片
3)查看gitweb超连接:在Projects的页面Repository Browser项中,可进入对应版本库gitweb界面,查看版本库详细信息和提交记录。

【Git】Ubuntu18.04搭建gerrit+gitweb+apache2服务器_第14张图片

注:gitweb集成gerrit后,默认只有管理员用户才能查看gitweb超链接,普通用打开链接后页面显示Not Found。如果想给普通的用户查看gitweb超链接的权限,则必须对项目设置refs/meta/config 的read权限。而这个权限在All-Projects的ACL里只对Administrators用户和Project Owners开放。

11. 配置Git Bash

1)设置用户信息:admin登入WEB UI后,首次登入界面的用户默认为超级管理员,用户的Acount ID默认1000000,后续登入的用户ID值依次加1。进入setting界面如下,可完善用户相关信息。

【Git】Ubuntu18.04搭建gerrit+gitweb+apache2服务器_第15张图片

2)产生公钥:在本地打开Git Bash命令窗口,产生密钥对。过程中提示设置密钥文件保存路径、密钥密码,此处可全部选择默认。默认密钥文件存放目录:C:\Users\Administrator.ssh。

$ ssh-keygen

【Git】Ubuntu18.04搭建gerrit+gitweb+apache2服务器_第16张图片

3)复制公钥:在本地以记事本打开C:\Users\Administrator\id_rsa.pub公钥文件,复制文件中的全部内容。

【Git】Ubuntu18.04搭建gerrit+gitweb+apache2服务器_第17张图片

4)添加公钥到WEB:在setting界面下,点击SSH Public Keys。将复制的公钥粘贴到公钥框内,并点击“add”。

【Git】Ubuntu18.04搭建gerrit+gitweb+apache2服务器_第18张图片

添加公钥后,用户即可在客户端通过Git Bash访问gerrit服务。

5)Git Bash测试连接:

方式1:打开Git Bash命令行,通过IP进行服务器测试连接。

$ ssh -p 39418 -i ~/.ssh/id_rsa 192.168.11.111 -l admin
或
$ ssh -p 39418 [email protected]

连接方式2:通过主机别名在本地~/.ssh/目录下新建配置主机别名文件config后,可以直接通过主机别名的方式连接服务器,省去每次输入IP地址。

ssh userhostname

12. 配置TortoiseGit

1)admin加载Git Bash私钥:打开密钥生成应用程序PuTTy Key Generator,初始状态显示“No key”。

【Git】Ubuntu18.04搭建gerrit+gitweb+apache2服务器_第19张图片

点击Load进行加载密钥,选择加载id_rsa.ppk私钥文件,在弹出的对话框中选择“确定”即可。

【Git】Ubuntu18.04搭建gerrit+gitweb+apache2服务器_第20张图片

注:在产生TortoiseGit密钥时,必须使用上述配置Git Bash过程所保存的私钥文件,通过使用PuTTYgen加载其私钥文件, 此步骤非常关键,这里不能选择“Generate”直接产生密钥。

2)保存TortoiseGit密钥对:加载私钥文件后,在“Key comment:”中输入密钥的标识信息,此处可默认;密码可根据用户需求自行设置或不填;“Parameters:”中选择RSA和2048。设置完成后,依次选择 和 ,将密钥文件对保存在~/.shh/目录中。此处将公钥文件保存为gerrit_id_rsa…pub,私钥文件保存为gerrit_id_rsa.ppk。

【Git】Ubuntu18.04搭建gerrit+gitweb+apache2服务器_第21张图片

3)添加TortoiseGit私钥:打开 应用程序,打开后初始状态为空白。点击add,添加TortoiseGit的私钥文件gerrit_id_rsa,添加完成关闭即可。

【Git】Ubuntu18.04搭建gerrit+gitweb+apache2服务器_第22张图片

以上,即可通过Git 或 TortoiseGit访问gerrit服务。


Gerrit参考指南: http://vue5.com/gerrit/gerrit.html

总结

Gerrit代码审核服务器的核心是在apache2代理服务器上给托管的Git仓库提供一系列的权限控制,以及通过Web前端页面来做代码审核和权限管理,通常适用于大型软件项目,并且要求软件配置、开发、测试、审核等角色完整的软件开发团队。

你可能感兴趣的:(Git,git,apache,web,ubuntu,linux)