1. 程式人生 > >記錄Gerrit2.8.4環境遷移、安裝、配置以及問題解決

記錄Gerrit2.8.4環境遷移、安裝、配置以及問題解決

前段時間,由於公司內部調整,需要將原gerrit系統中部分業務拆分遷移到新gerrit系統中,這裡我就將整個環境遷移、環境搭建、環境配置、版本選擇等做一下記錄,分享給大家。

說到gerrit,沒聽說的同學可能會感到比較陌生,那麼先來copy一段關於gerrit的說明:

Gerrit 是一個免費、開放原始碼的程式碼審查軟體,使用網頁介面。利用網頁瀏覽器,同一個團隊的軟體程式設計師,可以相互審閱彼此修改後的程式程式碼,決定是否能夠提交,退回或者繼續修改。

我在解釋一下,gerrit是使用 Git 作為底層版本控制系統,通過網頁介面,能方便的做程式碼稽核工作的一個輕量型框架,出自google團隊的開源專案。

好了,不多扯了,這裡我介紹下前期版本選擇,

1、剛開始本打算用最新版gerrit的docker映象2.13.x搭建環境,好處就是安裝配置簡單,容器化移植性好,但是經過實踐,發現gerrit版本的升級,資料庫mysql表結構會發生很大變化,如果直接拷貝原版本資料,發現啟動gerrit失敗,而且使用者也不希望在重新配置各種組許可權、ssh金鑰等,同時考慮到新版本用老版本資料庫表會存在相容性問題,後期擴充套件外掛問題,所以pass掉這種方案。

2、使用跟原系統gerrit版本一致,重新搭建新環境,做到資料環境一致平滑遷移(不要問我為啥不用docker映象搭建,因為原系統版本很老了,木有現成的docker映象了,自己在寫一個映象也是很麻煩的。。。)。

so,現在開始記錄遷移過程。

gerrit 2.8.4環境安裝及配置流程

一、安裝環境

  • jdk: java 1.7.0
  • apache: httpd-2.2.32.tar.gz
  • git: Git-1.8.3.1.tar.gz
  • gerrit: gerrit-2.8.4.war
  • gitweb: yum install gitweb
  • mysql: 5.1 +
說明:
    1、gerrit是由java程式碼編寫的,所以jdk環境必須。
    2、apache作為代理服務,代理gerrit服務。
    3、git作為gerrit底層版本控制系統。
    4、gitweb這個是git的一個視覺化操作的環境,介面操作,直觀。
    5、mysql我們這裡使用mysql作為gerrit的資料存貯。
    6、gerrit,跟原系統版本一致選擇2.8.4

二、安裝配置步驟

1、安裝jdk

    忽略安裝過程,Linux系統預設有安裝,若無則手動安裝,完成以後使用java -version檢視版本資訊

2、安裝git

    1# tar -xzf git-1.8.1.5.tar.gz 
    2# cd git-1.8.1.5
    3# make prefix=/usr/local all
    4# make prefix=/usr/local install
    5# git --version

3、安裝gitweb

    1# yum install gitweb
    2)修改git.conf
       # vi /etc/httpd/conf.d/git.conf"Alias /git /var/www/git" 改為 "Alias /gitweb /var/www/git"
    3)修改gitweb.conf
       # vi /etc/gitweb.conf
       將$projectroot = "/home/xxx" 設定為git程式碼庫所在的資料夾,這裡我們設定為gerrit配置的程式碼庫路徑/data1/gerrit2.8.4/git

4、安裝並配置apache

    下載:
        http://archive.apache.org/dist/httpd/
    安裝:
        1) # tar -xvzf httpd-2.2.32.tar.gz 
        2) # cd httpd-2.2.32
        3) # ./configure --prefix=/usr/soft/apache --enable-mods-shared='proxy proxy_ajp proxy_balancer proxy_connect proxy_ftp proxy_http proxy_rewrite'
        4) # make
        5) # make install

    配置:修改httpd.conf
        <VirtualHost *:80>
          ServerName GerritServer
          ProxyRequests Off
          ProxyVia Off
          ProxyPreserveHost On

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

          <Location /gerrit/login/>
            # AuthType Basic
            # AuthName "Gerrit Code Review"
            # Require valid-user
            # AuthUserFile /usr/soft/git/htpasswd
          </Location>

          AllowEncodedSlashes On
          RedirectMatch ^gerrit$ /gerrit/
          ProxyPass /gerrit/ http://xx.xx.xx.xx:9080/gerrit/ nocanon
          ProxyPassReverse /gerrit/ http://xx.xx.xx.xx:9080/gerrit/ nocanon
        </VirtualHost>
    注意:
        1、這裡apache監聽了80埠,通過代理/gerrit/請求轉發到gerrit服務上去,還需要配置 ServerName xx.xx.xx.xx:80  
        2、這裡Location下邊的配置是為了配置apache的簡單登陸驗證,若使用需要命令`htpasswd -cmb 目錄及檔名 使用者名稱 密碼` 生成,例如:htpasswd -cmb user abc 123456, 這個登陸我使用了gerrit的ldap配置登陸,所以不需要apache登陸驗證。
        3、這裡我使用了apache代理了gerrit服務。訪問http://xx.xx.xx.xx/gerrit/則將服務代理到gerrit服務:http://xx.xx.xx.xx:9080/gerrit/
        4、nocanon 這裡如果不設定,gerrit訪問時可能會出現404 access許可權問題。

    調優:修改httpd.conf、extra/httpd-mpm.conf
        壓測時,發現併發量大時,會出現訪問拒絕,所以需要調整Apache的最大併發數
        1、首先檢視當前apache的使用的MPM模組
        # httpd -l  或者 apachectl -l
        2、在httpd.conf檔案中放開引用該模組配置註釋
        # Include conf/extra/httpd-mpm.conf
        3、修改extra/httpd-mpm.conf,找到對應的當前apache使用模組對應部分,修改配置。  
        例如mpm_perfork模組:
        <IfModule mpm_prefork_module>
            ServerLimit         1000 #推薦設定:與MaxClients的值保持一致
            StartServers          10 #推薦設定:小=預設 中=20~50 大=50~100
            MinSpareServers       10 #推薦設定:與StartServers保持一致
            MaxSpareServers       20 #推薦設定:小=20 中=30~80 大=80~120 
            MaxClients          1000 #推薦設定:小=500 中=500~1500 大型=1500~3000
            MaxRequestsPerChild   0 #推薦設定:小=10000 中或大=10000~500000
        </IfModule>

5、安裝並配置gerrit

    下載:
        https://gerrit-releases.storage.googleapis.com/index.html
    安裝:
        1) # java -jar gerrit-2.8.4.war init -d /data1/gerrit2.8.4
        2) 根據安裝提示依次輸入資訊,輸入的資訊最終生成到{$review_site}/etc/gerrit.conf上去,可以在安裝完成後修改gerrt.conf配置檔案

    配置:修改gerrit.conf
        [gerrit]
            basePath = /data1/gerrit2.8.4/git
            canonicalWebUrl = http://xx.xx.xx.xx/gerrit
        [database]
            type = mysql
            hostname = xx.xx.xx.xx
            port = 3306
            database = reviewdb
            username = xxx
            password = ******
        [auth]
            type = LDAP
        [container]
            user = root
            javaHome = /usr/lib/jvm/java-1.7.0-openjdk-1.7.0.121-2.6.8.0.el7_3.x86_64/jre
        [sshd]
            listenAddress = *:29418
        [httpd]
            listenUrl = proxy-http://xx.xx.xx.xx:9080/gerrit
        [cache]
            directory = cache
        [sendemail]
            smtpServer = xx.xx.com.cn
            smtpServerPort = 587
            smtpEncryption = TLS
            enable = true
            smtpUser = [email protected].com.cn
            smtpPass = ******
            from = Code Review <[email protected].com.cn>
        [ldap]
            server = ldap://ip:port
            sslVerify = false
            username = CN=xx,OU=xx,OU=xx,DC=xx,DC=xx,DC=com,DC=cn
            password = ******
            referral = follow
            accountBase = OU=xx,DC=xx,DC=xx,DC=com,DC=cn
            groupBase = OU=xx,DC=xx,DC=xx,DC=com,DC=cn
        [gitweb]
            cgi = /var/www/git/gitweb.cgi
        [plugins]
            allowRemoteAdmin = true
        [theme]
            backgroundColor = FCFEEF
            textColor = 000000
            trimColor = D4E9A9
            selectionColor = FFFFCC
            topMenuColor = D4E9A9
            changeTableOutdatedColor = F08080
        [theme "signed-in"]
            backgroundColor = FFFFFF

    注意:
        1、這裡配置gerrit使用了mysql資料庫、認證方式為ladp、傳送郵件配置、以及gitweb。
        2、這裡倉庫目錄為:/data1/gerrit2.8.4/git 預設為gerrit安裝目錄的git目錄下。
        3、gitweb配置,如果已經安裝,那麼gerrit會自動獲取路徑配置,如果之後安裝,這裡可以手動配置下路徑。
        4、sshd預設埠為29418,httpd預設監聽埠為8080,這裡我修改了埠為90805、ldap配置比較這塊稍麻煩,需要多次嘗試,這裡的groupName若不配置,則預設是跟accountBase相同,如不同,可以另行配置。
        6、啟動gerrit,如果使用mysql作為資料庫儲存,那麼第一次啟動時,還需要將mysql資料庫驅動mysql-connector-java-5.1.21.jar拷貝到/data1/gerrit2.8.4/lib/目錄中去,否則報錯,預設為H2資料庫。
        7、這裡的mysql資料庫密碼、sendmail密碼、ladp密碼如果通過安裝步驟2中的方式填寫的,gerrit會自動將密碼儲存到磁碟指定路徑下/data1/gerrit2.8.4/etc/secure.config檔案中。
        8、plugins裡面設定allowRemoteAdmin = true預設false,這裡過載gerrit的replication的同步服務時,需要指定為true,否則可能會報錯fatal: remote plugin administration is disabled
        9、theme 主題設定,可以修改簡單修改當前gerrit系統的主題顏色。

6、啟動|停止apache和gerrit

啟動/停止apache:/usr/soft/apahe/bin/apachectl start|stop  
啟動/停止gerrit: /data1/gerrit2.8.6/bin/gerrit.sh start|stop

7、訪問gerrit頁面

8、注意事項

1)在初始化一個版本的gerrit時,它會自動建立專案All-project.git,以及兩個使用者組Administrators、Non-Interactive Users,如果遷移版本直接使用原版本資料庫的話,需要注意修改兩點:

1、修改schema_version表的version_nbr欄位,因為每個版本的這個欄位是固定的,需要修改為當前版本的對應的號,不然啟動報錯。例如:gerrit2.8.4的schema版本號是842、Administrators以及Non-Interactive Users組會重新建立新的group_uuid,這個跟資料庫account_groups表中對應的原組uuid不一致,會導致系統即使管理員也沒有讀寫許可權,需要將資料庫中的group_uuid以及owner_group_uuid修改為對應新生成的group_uuid,然後重啟gerrit。 

3、獲取新生成的Administrators、Non-Interactive Users的group_uuid方法:clone All-Projects到本地,找到groups檔案,裡面存放的就是GroupName - UUID。  

2)每個gerrit版本對應的資料庫表結構不一致,不能簡單的資料表拷貝以及git倉庫資料拷貝,可能會導致gerrit啟動失敗,以及後期擴充套件等問題。

基於docker搭建最新版gerrit 2.13.x步驟

1、拉取gerrit映象

從docker hub官網拉取openfrontier/gerrit映象
地址:https://hub.docker.com/r/openfrontier/gerrit/
命令:# docker pull openfrontier/gerrit

2、啟動gerrit容器

1)啟動最簡單預設配置
# docker run -d -p 8080:8080 -p 29418:29418 openfrontier/gerrit
2)啟動自定義引數
# docker run \
    --name gerrit \
    -p 8080:8080 \
    -p 29418:29418 \
    -e WEBURL=http://xx.xx.xx.xx:8080 \
    -e DATABASE_TYPE=mysql \
    -e DB_PORT_3306_TCP_ADDR=xx.xx.xx.xx \
    -e DB_PORT_3306_TCP_PORT=3306 \
    -e DB_ENV_MYSQL_DB=reviewdb \
    -e DB_ENV_MYSQL_USER=xxx \
    -e DB_ENV_MYSQL_PASSWORD=****** \
    -e SMTP_SERVER=xx.xx.com.cn \
    -e SMTP_USER=xxx@xxx.com.cn \
    -e SMTP_PASS=****** \
    -e SMTP_FROM='Code Review <[email protected]>' \
    -e AUTH_TYPE=LDAP \
    -e LDAP_SERVER=ldap://ip:port \
    -e LDAP_ACCOUNTBASE=OU=xx,DC=xx,DC=xx,DC=com,DC=cn \
    -e LDAP_USERNAME=CN=xx,OU=xx,OU=xx,DC=xx,DC=xx,DC=com,DC=cn \
    -e LDAP_PASSWORD=****** \
    -e LDAP_SSLVERIFY=false \
    -e LDAP_REFERRAL=follow \
    -e GERRIT_INIT_ARGS='--install-plugin=download-commands' \
    -v /data1/gerrit/review_site:/var/gerrit/review_site \
    openfrontier/gerrit
說明:
    1、這裡通過-e KEY=VALUE 形式指定配置gerrit的引數型別,這裡指定了資料庫儲存、郵件通知、認證型別及配置、外掛。
    2、這裡KEY跟gerrit.conf檔案中的key對映關係,可通過[github openfrontier/docker-gerrit](https://github.com/openfrontier/docker-gerrit) 檢視自定義指令碼對映關聯。

相關推薦

記錄Gerrit2.8.4環境遷移安裝配置以及問題解決

前段時間,由於公司內部調整,需要將原gerrit系統中部分業務拆分遷移到新gerrit系統中,這裡我就將整個環境遷移、環境搭建、環境配置、版本選擇等做一下記錄,分享給大家。 說到gerrit,沒聽說的同學可能會感到比較陌生,那麼先來copy一段關於gerrit

win7安裝兩個jdk,1.7和1.8,下載安裝配置環境變數,方便切換

之前用過1.6,後來換電腦後用的1.7,由於時代在發展,許多外掛、框架等新的功能需要jdk1.8才能使用,所以就想安裝1.8,不過1.7還不準備解除安裝,就考慮安裝多個jdk.先下載jdk1.8,建議去官網下載,需要oracle賬號,這個可以免費註冊我們選擇jdk1.8版本,

小白學習Red Hat Linux7.0系列五之jdk1.8.0的下載及安裝profile中jdk環境變數配置

Linux版本資訊檢視。 [[email protected] etc]# uname -a Linux localhost.localdomain 3.10.0-123.el7.x86_64 #1 SMP Mon May 5 11:16:57

ElasticSearch 5.5 離線環境的完整安裝配置詳情,附kibanaik插件配置安裝包下載路徑

href bin 技術 limits 127.0.0.1 .com 不同 配置文件 standard 此文針對局域網環境(非公網環境),提供ElasticSearch 5.5.2的完整安裝及配置教程,包括ES的kibana插件、IK中文分詞插件安裝及配置。 另外,文章最後提

Go語言入門(一)特性安裝環境搭建第一個程序等

以及 rec 推出 eas log tell run 線程 package Go語言是谷歌推出的一種全新的編程語言,可以在不損失應用程序性能的情況下降低代碼的復雜性。谷歌首席軟件工程師羅布派克(Rob Pike)說:我們之所以開發Go,是因為過去10多年間軟件開發的難度令人

JDK下載安裝環境變數配置圖解(教程)

一、JDK下載 http://www.oracle.com/technetwork/java/javase/downloads/index.html 二、JDK安裝 1、JDK安裝 2、JRE安裝 三、JDK環境變

java開發環境搭建--jdk安裝maven配置Idea

    安裝 JDK 下載安裝 首先開啟 Oracle 官網 JDK 1.8 下載頁面,根據下圖選擇下載各系統對應的版本,這裡以 Win10 64 位作業系統為例。 下載完成之後,雙擊滑鼠進行安裝,一直單擊“下一步”按鈕直至安裝完畢。 環境

PHP開發搭建環境二:開發工具PhpStorm安裝啟用以及配置 PHP開發環境搭建一:PHP整合環境XAMPP 的安裝配置

  關於php的開發工具很多,目前市面上最好用最強大的莫過於PhpStorm這款開發神器了,但是鑑於很多開發者朋友在網站上下載的PhpStorm開發工具不能用,或者使用起來很不方便,筆者把最好用的下載地址及免費啟用教程共享出來。 一、安裝並配置整合環境XAMPP 具體可以參考我的這篇部落格:P

PHP開發搭建環境,PhpStorm安裝免費啟用配置,XAMPP安裝配置

關於php的開發工具很多,目前市面上最好用最強大的莫過於PhpStorm這款開發神器了,但是鑑於很多開發者朋友在網站上下載的PhpStorm開發工具不能用,或者使用起來很不方便,筆者把最好用的下載地址及免費啟用教程共享出來。 一、安裝並配置PHP伺服器套件XAMPP整合環境,點選連結檢視

java概述安裝配置環境執行

Java概述 J2SE:基礎包 J2EE:企業版 J2ME:安卓   編譯型:編譯後生成*.exe檔案 解釋型:將程式碼放到伺服器上進行解釋執行。 Java檔案*.java先編譯成*.class的檔案,然後用Java虛擬機器(JVM)執行。   JRE(Java Runt

modelsim-win64-10.4-se 下載安裝破解(一次成功)

本教程包括軟體下載、破解檔案下載、安裝破解方法,助你一次成功。 軟體安裝好了卻不能用,想必大家都有過這樣的痛苦和無奈。這款軟體的破解花了我整整一個下午的時間,期間在網上找了各種方法嘗試均以失敗告終,差點讓我放棄破解而著手去換作業系統。網上的方法多存在著疏漏和差錯,所以這也是我寫次教程的初衷,希望能幫

Maven01 環境準備maven專案結構編譯/測試/打包/清除安裝

  0 前提準備   0.1 安裝java開發環境   0.2 安裝maven工具     1 maven專案基本結構   如圖所示,整個maven專案有業務檔案、測試檔案、POM依賴管理檔案;其實還有一個資原始檔resources;   程式碼檔案和測試檔案

Android Studio 下載安裝配置(開發環境搭建)

下載jdk8並安裝. 下載並安裝AndroidStudio。因為anroid.com無法訪問,可以從https://developer.android.google.cn/studio/獲取。 安裝AndroidStudio後,會自動下載Android SDK及其他

Linux環境下 Redis 安裝啟動連線主從複製哨兵機制

安裝步驟 Linux 版本號 CentOS-6.4-x86_64 Redis 版本號 redis-3.0.6.tar.gz 1、usr資料夾中,建立redis資料夾 2、解壓 redis-3.0.6.tar.gz 3、解壓後進入到資料夾 redis-3.0.6 4、編譯 ma

搭建持續整合環境之——jenkins部署安裝配置

一、部署準備 1.遠端伺服器一臺:要求已安裝linux作業系統、tomcat、jdk; 2.從網上下載的jenkins.war包,推薦下載地址:http://Jenkins-ci.org/,或http://mirrors.jenkins.io/war-stable/ 二

測試環境TiDB叢集安裝記憶體不足錯誤解決記錄

安裝tidb叢集,tidb的節點記憶體為16GB,但是安裝執行ansible-playbook bootstrap.yml命令最後報錯: fatal: [172.168.99.72]: FAILED! => {"changed": false, "msg": "This machine d

RabbitMQ3.7.8在win10中的安裝配置及使用

1、配套檔案 2、RabbitMQ服務端程式碼是使用併發式語言Erlang編寫的,安裝Rabbit MQ的前提是安裝Erlang,雙擊otp_win64_21.1.exe直接安裝,選擇預設配置即可,如果不安裝Erlang或安裝錯誤而直接安裝RabbitMQ會彈出

OpenCV基礎——OpenCV3和VS的下載安裝環境配置

作為最後一個更新的課,首先和大家說聲抱歉,其次,本次的課不會涉及到過多的C++程式碼,所以大家可以放心(其實這個看標題也能看出來……)第一部分 VS的下載安裝大家可以去官網下載,也可以百度一下壓縮包,我是百度裡找了個壓縮包下載的,因為官網我下載出現了問題,大家如果能在官網下我

Nginx 教程一:在windows環境下的安裝配置使用以及設定為windows服務自啟動

目前國內各大入口網站已經部署了Nginx,如新浪、網易、騰訊等;國內幾個重要的視訊分享網站也部署了Nginx,如六房間、酷6等。新近發現Nginx 技術在國內日趨火熱,越來越多的網站開始部署Nginx。     相比apeach、iis,nginx以輕量級、高效能、穩定

點滴記錄——CentOS 6.4中使用virtualenv安裝swift

     virtualenv就是這樣一個工具,它可以在指定位置建立一個擁有獨立安裝目錄的python環境,該隔離環境不會與其他virtualenv環境共享模組。它的具體用法可以參考https://virtualenv-chinese-docs.readthedocs.org/en/latest/,使用vir