1. 程式人生 > >gerrit安裝配置及過程中遇到的問題

gerrit安裝配置及過程中遇到的問題

(文章來源: http://blog.csdn.net/ljchlx/article/details/22277311)

小注解:

本文所使用的關於apache的配置設定是基於apache2.2的,因此部分設定與apache 2.3/2.4稍有不同.

例如:

          Order deny,allow
          Allow from all
就應該改為

          Require all granted

 進一步詳細的請檢視apache說明文件。

系統配置環境
Gerrit 是一個基於 Web 的程式碼評審和專案管理的工具,面向基於 Git 版本控制系統的專案。因此需要Apache、Mysql、GIT等相關軟體的支援
系統配置:
新裝的UBANTU LINUX系統請先更新自己的系統軟體包
$sudo apt-get dist-upgrade
$sudo adduser project
以新使用者身份操作
$sudo su - project
$sudo apt-get install  git-core apache2.2-bin apache2.2-common apache2-utils apache2-mpm-worker

安裝Gerrit


1.建立一個以專案名稱命名的新使用者,以project為例(如以建立可省)
$sudo adduser project

以新使用者身份操作

$sudo su - project
2.建立安裝目錄,以專案名命令。(建議直接拷貝使用其它專案的gerrit安裝目錄)
$mkdir -p gerrit_reviewsite

3.下載gerrit

4.安裝並配置初始化gerrit
 java -jar gerrit-2.6.1.war init -d ~/gerrit_reviewsite/

reate '/home/gerrit2/review-site' [Y/n]?

*** Git Repositories
***

Location of Git repositories [git]:

*** SQL Database
***

Database server type [H2/?]:   //改成MYSQL或者使用H2

*** User Authentication
***

Authentication method [OPENID/?]: HTTP 
//注意這個不要按回車跳過去了,否則不是HTTP認證,是需要用google的OPENID Get username from custom HTTP header [y/N]? : SSO logout URL : *** Email Delivery *** SMTP server hostname [localhost]: smtp.126.com //自己改成自己的郵箱smtp SMTP server port [(default)]: 25 SMTP encryption [NONE/?]: SMTP username [?]: [email protected] //自己改成自己的郵箱
[email protected]'s password : xxxxxxx
confirm password : xxxxxxx

*** Container Process
***

Run as [project]:
Java runtime [/usr/lib/jvm/java-6-sun-1.6.0.24/jre]:
Copy gerrit.war to /home/gerrit2/review-site/bin/gerrit.war [Y/n]?
Copying gerrit.war to /home/gerrit2/review-site/bin/gerrit.war

*** SSH Daemon
***

Listen on address [*]:
Listen on port [29418]:       //如果同一個使用者下建多個gerrit,請不用都公用29418這個埠號 如39418 49418

Gerrit Code Review is not shipped with Bouncy Castle Crypto v144
  If available, Gerrit can take advantage of features
  in the library, but will also function without it.
Download and install it now [Y/n]?     
//這裡如果選擇了y,則gerrit伺服器上的fingerprint會有兩個,否則則只有一個
Downloading http://www.bouncycastle.org/download/bcprov-jdk16-144.jar ... OKChecksum bcprov-jdk16-144.jar OKGenerating SSH host key ... rsa... dsa... done*** HTTP Daemon*** Behind reverse proxy [y/N]? y
//使用反向代理的話必須選擇y來配置,預設是N
Proxy uses SSL (https://) [y/N]? n
Subdirectory on proxy server   [/]: /project/     //可以選擇直接跳過,那樣你的gerrit最後的URL是http://192.168.11.73:80
Listen on address              [*]: 
Listen on port                 [8081]:          //切記,此埠號一定不要和apache2佔用相同的埠號,多個gerrit可以8082 8083 8084                                                //否則就會Starting Gerrit Code Review:Failed
Canonical URL                  [http://*/]:http://192.168.11.73/project/    //上一步Subdirectory on proxy server 跳過不填則是http://192.168.11.73:80  (80為你將要在apache 給gerrit設定的埠)
Initialized /home/gerrit2/review-siteExecuting 
/home/gerrit2/review-site/bin/gerrit.sh start
Starting Gerrit Code Review: OK
=========================================QA=======================================================================================
Q:Configuration ErrorCheck the HTTP server's authentication settings.The HTTP server did not provide the username in the Authorizationheader when it forwarded the request to Gerrit Code Review.If the HTTP server is Apache HTTPd, check the proxy configurationincludes an authorization directive with the proper location, ensuringit ends with '/':
In error_log:ERROR com.google.gerrit.httpd.auth.container.HttpLoginServlet : Unableto authenticate user by Authorization request header.  Check containeror server configuration.
A:You cannot run these on the same port. Your Apache NameVirtualHostshould be on a different port than the internal Jetty web sever thatGerrit is using.
即gerrit和apache2佔用相同的埠號
例如:

cat review_site_project/etc/gerrit.config:

cat /etc/apache2/apache2.conf :

NameVirtualHost x.x.x.x:8081

<VirtualHost x.x.x.x:8081>

apache2和gerrit都使用了8081,肯定有一個啟動不來的,一般是gerrit
5. 啟動gerrit時失敗,檢視gerrit_reviewsite/log/error_log中的錯誤資訊如下:
[2016-07-29 02:56:56,387] [main] WARN  com.google.gerrit.sshd.SshDaemon : Disabling cipher aes192-cbc: Illegal key size; try installing unlimited cryptography extension
[2016-07-29 02:56:56,388] [main] WARN  com.google.gerrit.sshd.SshDaemon : Disabling cipher aes256-cbc: Illegal key size; try installing unlimited cryptography extension
[2016-07-29 02:56:56,390] [main] WARN  com.google.gerrit.sshd.SshDaemon : Disabling cipher aes256-ctr: Illegal key size; try installing unlimited cryptography extension
[2016-07-29 02:56:56,393] [main] WARN  com.google.gerrit.sshd.SshDaemon : Disabling cipher arcfour256: Illegal key size or default parameters; try installing unlimited cryptography extension
[2016-07-29 02:56:56,425] [main] WARN  com.google.gerrit.server.config.GitwebCgiConfig : gitweb not installed (no /usr/lib/cgi-bin/gitweb.cgi found)
[2016-07-29 02:56:56,882] [main] INFO  org.eclipse.jetty.util.log : Logging initialized @14808ms
[2016-07-29 02:56:56,950] [main] INFO  com.google.gerrit.server.git.LocalDiskRepositoryManager : Defaulting core.streamFileThreshold to 45m
[2016-07-29 02:56:56,999] [main] ERROR com.google.gerrit.pgm.Daemon : Unable to start daemon
com.google.inject.ProvisionException: Unable to provision, see the following errors:

1) Schema not yet initialized.  Run init to initialize the schema:
$ java -jar gerrit.war init -d /home/watasianata/gerrit_review

1 error
        at com.google.gerrit.server.schema.SchemaVersionCheck.start(SchemaVersionCheck.java:56)
        at com.google.gerrit.lifecycle.LifecycleManager.start(LifecycleManager.java:74)
        at com.google.gerrit.pgm.Daemon.start(Daemon.java:302)
        at com.google.gerrit.pgm.Daemon.run(Daemon.java:203)
        at com.google.gerrit.pgm.util.AbstractProgram.main(AbstractProgram.java:64)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:606)
        at com.google.gerrit.launcher.GerritLauncher.invokeProgram(GerritLauncher.java:159)
        at com.google.gerrit.launcher.GerritLauncher.mainImpl(GerritLauncher.java:100)
        at com.google.gerrit.launcher.GerritLauncher.main(GerritLauncher.java:56)
        at Main.main(Main.java:25)
1)原因1,google搜素到有如下可能,就是我們在新的gerrit的gerrit.config中增加了如下索引的配置
 [index]
        type = LUCENE

而我們的系統中,並未安裝Lucene,因此參照網上的例子安裝下Lucene(http://keping.me/ubuntu%E4%B8%8Blucene%E7%8E%AF%E5%A2%83%E6%90%AD%E9%85%8D/)。

2)Lucene安裝完畢了,試一下,發現仍然報上述錯誤。

萬般無奈之下,只能按照提示重新跑了一遍

java -jar gerrit.war init -d /home/watasianata/gerrit_review

逐個引數檢查,終於發現原來是在安裝Lucene時,將原本jkd1.7的環境改為了jdk1.8,而gerrit卻仍然採用了jdk1.7的配置,能不出錯嗎?

趕緊將
        user = watasianata
        javaHome = /usr/local/devtools/jdk1.8.0_45/jre

改好。

再次試,這次仍然出錯:

[2016-07-29 03:24:10,152] [main] INFO  com.google.gerrit.server.plugins.PluginLoader : Loaded plugin reviewnotes, version v2.12.3
[2016-07-29 03:24:10,214] [main] INFO  com.google.gerrit.server.plugins.PluginLoader : Loaded plugin singleusergroup, version v2.12.3
[2016-07-29 03:24:10,216] [main] ERROR com.google.gerrit.pgm.Daemon : Unable to start daemon
com.google.inject.ProvisionException: Unable to provision, see the following errors:

1) No index versions ready; run Reindex

1 error
        at com.google.gerrit.lucene.LuceneVersionManager.start(LuceneVersionManager.java:124)
        at com.google.gerrit.lifecycle.LifecycleManager.start(LifecycleManager.java:74)
        at com.google.gerrit.pgm.Daemon.start(Daemon.java:302)
        at com.google.gerrit.pgm.Daemon.run(Daemon.java:203)
        at com.google.gerrit.pgm.util.AbstractProgram.main(AbstractProgram.java:64)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:497)
        at com.google.gerrit.launcher.GerritLauncher.invokeProgram(GerritLauncher.java:159)
        at com.google.gerrit.launcher.GerritLauncher.mainImpl(GerritLauncher.java:100)
        at com.google.gerrit.launcher.GerritLauncher.main(GerritLauncher.java:56)
        at Main.main(Main.java:25)

這次的資訊明確多了,直接重新reindex一次,

java -jar ~/tool/gerrit-2.12.3.war reindex

好啦!

5.按下面內容修改gerrit_reviewsite/etc/gerrit.conf 及GERRIT的配置檔案

[gerrit]
        basePath = git  //指定被gerrit管理的所有git庫存放位置,即review_site_project/git/
        canonicalWebUrl = http://42.62.42.75:8090/project    

//指定web訪問gerrit的網址//填自己的ip和埠號,勿完全抄

[database]
        type = h2          //指定gerrit所預設資料庫型別,可以選用mysql
        database = db/ReviewDB    
[auth]
        type = HTTP    //指定瀏覽器登入gerrit時的認證方式
[sendemail]
        enable = true
        smtpServer = smtp.126.com
        smtpServerPort = 25
        smtpUser = [email protected]
        smtpPass = xxxxxxxx
        sslVerify = false
        from = CodeReview<[email protected]>

[container]
        user = gerritserver            //指定gerrit所在機器的使用者身份與上文建立的使用者對應一致
        javaHome = /usr/lib/jvm/jdk7/jre           //系統本身自帶
[sshd]
        listenAddress = *:29418          //指定sshd服務監聽的埠號
[httpd]
        listenUrl = http://*:8081/project            //指定http代理地址
[cache]
        directory = cache      //快取位置

配置Apache

$sudo apt-get install  apache2.2-bin apache2.2-common apache2-utils apache2-mpm-worker

1.建立編輯apache配置檔案,新增如下內容(下面以Ubuntu系統為例請注意不同作業系統apache配置檔案的區別)也可配置 apache2.conf httpd.conf,我們這裡配置的是/etc/apache2/sites-available/gerrit

$sudo vi /etc/apache2/sites-available/defalt   

<VirtualHost 192.168.134.59:8090>
    ServerName 192.168.134.59

    ProxyRequests Off
    ProxyVia Off
    ProxyPreserveHost On

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

    <Location "/project/login/">
      AuthType Basic
      AuthName "Gerrit Code Review"
      AuthBasicProvider file
      AuthUserFile ../../../etc/apache2/passwords

//指定http登入認證的的paassword檔案所在位置,放哪都行,根據後來 sudo htpasswd -cb  /etc/apache2/passwords admin pwxxx 來定。

      Require valid-user
    </Location>


    AllowEncodedSlashes On
    RedirectMatch  ^/project$                /project/
    ProxyPass /project/ http://127.0.0.1:8081/project/
    ProxyPassReverse /project/ http://127.0.0.1:8081/project/
</VirtualHost>
儲存退出
$cd /etc/apache2/sites-enabled/
$sudo ln ../sites-available/gerrit .

2.建立passwd檔案,新增gerrit登入使用者,-c引數為建立,僅限第一次新增使用者時使用
$sudo htpasswd -cb  /etc/apache2/passwords admin passwordxxx

第二次新增其他使用者時,不要加-c了:
$sudo htpasswd -b  /etc/apache2/passwords test test


3繼續配置apache2
$sudo vi /etc/apache2/http.conf //在檔案中加入以下內容
ServerName localhost
$cd /etc/apache2/mods-enabled
$sudo ln -s /etc/apache2/mods-available/proxy.conf proxy.conf 
$sudo ln -s /etc/apache2/mods-available/proxy.load proxy.load 
$sudo ln -s /etc/apache2/mods-available/proxy_http.load proxy_http.load
配置apache2的監聽埠:
/etc/apache2$sudo vi ports.conf 
NameVirtualHost *:80
Listen 80
Listen 8080    //不要給gerrit!
Listen 8000    //不要給gerrit!
新增apache2的tcp埠號,切記不要把gerrit的,即
Listen on port                 [8081]: 不要輸入上面配置給apache2的埠號,切記!!!
可以用sudo netstat -lnp | grep 80   檢視相關80的所有埠使用情況
否則gerrit 起不來的
搭建多個gerrit 時Listen on port                 [8081]:可以用8082 8083 8084 等

Apache2 配置安裝 FQA:

Q:啟動apache報錯

Syntax error on line 300 of /etc/apache2/apache2.conf:Invalid command 'ProxyPass', perhaps misspelled or defined by a module not included in the server configuration   ...fail!
A:配置了反向代理,但是沒有開啟module,執行下面操作
cd /etc/apache2/mods-enabled
ln -s /etc/apache2/mods-available/proxy.conf proxy.conf 
ln -s /etc/apache2/mods-available/proxy.load proxy.load 
 ln -s /etc/apache2/mods-available/proxy_http.load proxy_http.load
Q:啟動Apache報錯
No apache MPM package installed
A:安裝apache2-mpm-worker軟體包
$sudo apt-get install apache2-mpm-worker
Q:啟動Apache報錯
 apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1 for ServerName
A:修改/etc/apache2/http.conf檔案,在檔案中加入以下內容
ServerName localhost

啟動服務

1.啟動apache
sudo /etc/init.d/apache2 restart 
2.啟動gerrit服務
$review_site_project/bin/gerrit.sh start 

登入gerrit

在瀏覽器位址列中輸入

192.168.11.73/project/    

注:Subdirectory on proxy server [/]:選擇直接跳過  則192.168.11.73:80

在顯示的登入框中輸入使用者名稱/密碼,

即之前配置passwords 

$sudo htpasswd -cb  /etc/apache2/passwords admin passwordxx
admin
passwordxx

Note: 請注意第一個登入的使用者,Gerrit會自動將其定義為管理員

3. 接入企業內部域賬號
    <Location "/project/login">
      AuthType Basic
      AuthName "Gerrit Code Review"
      AuthBasicProvider ldap
      AuthzLDAPAuthoritative off
      AuthLDAPURL "ldap://192.168.xx.x:xxx/OU=xxxxx,OU=_BJKS(xxx),DC=xxxxx,DC=cn?sAMAccountName?sub?(objectClass=user)"
      AuthLDAPBindDN [email protected]
      AuthLDAPBindPassword xxxx
      Require valid-user
    </Location>



相關推薦

gerrit安裝配置過程遇到的問題

(文章來源: http://blog.csdn.net/ljchlx/article/details/22277311) 小注解: 本文所使用的關於apache的配置設定是基於apache2.2的,因此部分設定與apache 2.3/2.4稍有不同. 例如:       

Zabbix3.2.1安裝配置過程遇到的問題說明

Zabbix是一款開源得監控軟體,我們可以根據自己的需要下載原始碼並對其二次開發以達到我們想要的功能。 下面說一下zabbix的原始碼安裝的步驟和安裝過程中遇到的問題以及解決辦法。 zabbix安裝完成後中文支援的配置,fping的支援,以及一些其他外掛

配置BGP 過程最容易出現的問題。解決方案!

解決方法 在配置過程中最容易出現的問題! 往往是很簡單、很容易的問題,我們大家常常會忽略, 在配置過程中容易把配置中 peer 192.168.34.4 as-number 64513 配置成65413。 解決方案:在R3或R4中開啟debugging

ubuntu16.04.5windows10MySQL的安裝配置管理

ubuntu中安裝 sudo apt-get install mysql-server 中間提示設定密碼為6 sudo apt-get isntall mysql-client sudo apt-get install libmysqlclient-dev 檢視是否安裝成功 sudo

ubuntu16.04python開發環境的整體安裝配置使用

1.安裝Pyenv pyenv 這個工具用來 管理我們的Python版本 virtualenv 管理不同的環境 pyenv 如果以前已經安裝了 python2.7 3.5 pyenv 管理不了 需要管理的話我們得刪除原來的版本 重新用pyenv 來安裝 如果沒有安裝vim&nbs

配置solr過程遇到的問題解決方案

1.由於缺少solr原始檔報錯 解決方法是把solr原始檔包裡面的資料夾contrib和dist複製到solrhome裡的core的conf目錄下就行了。 我的命令:  進入solr軟體的根目錄  (這個solr目錄不是tomcat裡的solr目錄,我的目錄為 /h

Day01---計算機語言發展史與環境安裝配置Java語言的識別符號、關鍵字

【每日一句:不積跬步無以至千里,不積小流無以成江海】 【1】Java語言的特性: 1.跨平臺:藉助虛擬機器,程式不經修改即可在不同硬體或者軟體平臺上執行 2.以物件為基本單位,使得程式開發變得簡單易用,拓展更方便 3.Java是一門強型別的語言,摒棄了指標,擁有

[eclipse]安裝配置Tomcat過程(解決server environment 沒有Tomcat選項的問題)

  為了寫一個JSP程式,用eclipse搭配tomcat外掛完成:   寫在前面的一個出現的問題,在server runtime environment 中可能出現沒有tomcat選項,這種情況,是因為java ee外掛不完整,在安裝新軟體設定中,下載 JST Serve

新手Git for Windows 的安裝配置 GitHub專案下載

一、Git安裝 1. 下載最新版本雙擊執行 2.  安裝過程   在這裡選擇 Use Git from Git Bash only (最安全的選項,表示僅能在git bash裡面使用git命令,

linuxsublime Text安裝配置搭建c/c++編譯系統

1. Sublime Text 3的下載安裝    到官方網站上http://www.sublimetext.com/3下載64位(系統位64位)的.deb安裝包(http://c758482.r82.cf2.rackcdn.com/sublime-text_build-3

老牛知點所以然-Linux(Ubuntu)配置安卓開發環境過程常見問題解決

[TOC] 題記: 這篇部落格基本上是半年多實踐過程中積累到筆記中的。在第二次配置完開發環境後,我就有意識的把大概的配置過程形成了一個筆記,這半年多將近一年的時間裡,陸續發現了一些不足和謬誤,還有以前踩過的坑沒有及時記下來,最近又踩過的,逐漸補充了過來,算是

VS2015配置git過程更新bin/debug資料夾斷點失效的解決

Bin/debug資料夾中的檔案需要被Git管理問題:VS預設的.gitIgnore檔案是預設不同步bin/debug資料夾的,但是也許我們會在bin/debug資料夾裡面放置一些需要啟動的其他exe或者配置屬性檔案,就需要把這些檔案也進行團隊管理。辦法:修改儲存庫設定裡面的

Gerrit+apache+H2資料庫簡單安裝配置建庫流程

Gerrit上程式碼提交的三種狀態 程式碼提交至Gerrit之後,有三種狀態,分別是:Open、Merged、Abandoned。 Open 狀態的程式碼需要經過Review,Verify,Submit操作後才會真正入庫,即成為Merged狀態 Merged 狀態的程式碼已經入庫,不能再Abandoned,

Webpack安裝配置打包詳細過程

引言 前端經過漫長的發展,湧現出了很多實踐方法來處理複雜的工作流程,讓開發變得更加簡便,其中,模組化可以使複雜的程式細化成為各個小的檔案,而webpack並不強制你使用某種模組化方案,而是通過相容所有模組化方案讓你無痛接入專案,本文詳細介紹webpack安裝配置及打包的詳細過程。 Webpack簡單介紹

< python音訊庫:Windows下pydub安裝配置過程出現的問題常用API >

< python音訊庫:Windows下pydub安裝配置、過程出現的問題及常用API > 背景 剛從B站上看過倒放挑戰之後也想體驗下,心血來潮一個晚上完成了基本的實現。其中倒放與播放部分使用了pydub這個音訊庫,十分快捷方便,但是它完整一套的配置讓我還是踩了幾個坑。特將其配置過程記錄於此,方

Python之路58-Django安裝配置一些基礎知識點

python目錄一、安裝Django二、創建工程三、創建app四、靜態文件五、模板路徑六、設置settings七、定義路由八、定義視圖九、渲染模板十、運行Django是一款Python的web框架一、安裝Djangopip3 install django安裝完成後C:\Python35\Script下面會生成

RHEL6安裝調試過程遇到的問題集

替代 連接 任務 rep words server 下劃線 x11轉發 tro /*** **問題集 2014/6/9 20:55:52** **Autor: Weigong Xu ** ***/ 1、 Linux中開啟22port: 22port是ss

JSPWiki安裝配置FCKEditor的集成

後來 manual tor edi lin fck base jsp .org 版本:JSPWiki-2.8.2 FCKeditor_2.6.3 安裝方法我參照:http://doc.jspwiki.org/2.4/wiki/Ins

解決VMware安裝Ubuntu的過程窗口過小無法看到按鈕的問題

round png eight idt wid ~~ vmware images 多人   最近在用VMware安裝Ubuntu的時候,發現竟然只能看到部分界面,鼠標拖拽也沒有用,就是看不到完整的界面,那要我怎麽按下一步啊~(真是哭笑不得%>_<%),或者按TA

安裝軟件過程遇到錯誤1500

其他 結束 toc 兩個 重裝 計算 找到 cajviewe auto 最近重裝完系統,需要安幾個小軟件。Cajviewer和Autocad,這兩個軟件原來特別好安,直接點下一步就可以了,可是這幾次安裝總是出現問題,不是提示“計算需要空間”就是說其他軟件正在安裝,反正總是有