2013-10-05 42 views
0

我在我的centos服務器上安裝了gerrit,但是我的身份驗證有問題。我想爲特定組中的centos用戶授予身份驗證權限。基本上,gerrit組中的每個用戶都應該有可能使用其密碼登錄。Gerrit在CentOS上的安裝不起作用

但是,當我訪問格里特鏈接,有一個重定向到格里特:

HTTP服務器沒有提供授權 頭球時的用戶名:當我收到以下消息8081 /登錄它將請求轉發給Gerrit Code Review。

如果HTTP服務器是Apache的HTTPD,檢查代理配置 包括與適當位置的授權指令,確保 它以「/」結尾:

你有任何提示爲什麼沒有按」工作?

配置/etc/httpd/conf/httpd.conf文件的虛擬主機部分看起來是這樣的:

<VirtualHost gerrit:8081> 
    ServerName gerrit 

    ProxyRequests Off 
    ProxyVia Off 
    ProxyPreserveHost On 

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

    <Location "/login/"> 
     AuthType Basic 
     AuthName "Gerrit Code Review" 
    AuthBasicProvider file 
     AuthUserFile /etc/passwd 
     Require valid-user 
    </Location> 


    AllowEncodedSlashes On 
     ProxyPass /r http://localhost:8081/r nocanon 
</VirtualHost> 

而且gerrit.config文件:

[gerrit] 
     basePath = /repos 
     canonicalWebUrl = http://freshattitude.eu:8081/ 
[database] 
     type = mysql 
     hostname = localhost 
     database = gerrit 
     username = gerrit 
[auth] 
     type = HTTP 
     emailFormat = {0}@example.com 
[sendemail] 
     smtpServer = localhost 
     smtpUser = root 
[container] 
     user = gerrit 
     javaHome = /usr/java/jdk1.7.0_25/jre 
[sshd] 
     listenAddress = *:29418 
[httpd] 
     listenUrl = http://*:8081/ 
[cache] 
     directory = cache 

回答

1

你犯了一些錯誤。在一方面,你有gerrit.config

httpd.listenUrl = proxy-http://127.0.0.1:8081/ 

設置使格里特知道在它前面的代理。此外,您的Apache vhost必須偵聽不同的端口(至少兩個服務在同一臺服務器上運行時)。事實上,我想知道你是如何同時啓動的;-)

因此,爲端口80設置apache虛擬主機,而不是端口8081.然後用戶將連接到http://freshattitude.eu/

最後,再次在gerrit.config,你必須解決您的canonicalWebUrl並刪除:8081,如因您使用的是代理,你這是怎麼告訴格里特什麼其對外界的網址是。

我想你應該通過Gerrit docs on reverse proxy config一次。

然後,您將最終與Gerrit只收聽本地端口8081和Apache偵聽端口80(當然,您可能想要使用SSL,然後使用proxy-https變種gerrit.config)。

0

據我所知,當使用HTTP認證時,Gerrit需要在請求頭中提供認證細節。所以,當使用這個匿名訪問是不可能的。 因此,我將Location "/login/"更改爲Location "/",然後在轉至Gerrit之前始終進行身份驗證。它可以工作,我可以忍受它。

這實際上可能是一些迴歸bug,它在某處發生,但我如何使它工作。