記錄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,這裡我修改了埠為9080。
5、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版本號是84。
2、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 離線環境的完整安裝及配置詳情,附kibana、ik插件配置及安裝包下載路徑
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