CentOS上的Gerrit安装不起作用

时间:2013-10-05 14:14:03

标签: linux git centos gerrit

我在centos服务器上安装了gerrit,但是我的身份验证有问题。我想为给定组中的centos用户提供身份验证权限。基本上,gerrit组中的每个用户都应该可以使用其密码登录。

但是,当我访问gerrit链接时,有一个重定向到gerrit:8081 / login当我收到以下消息时:

  

HTTP服务器未在授权中提供用户名   将请求转发给Gerrit Code Review时的标题。

     

如果HTTP服务器是Apache HTTPd,请检查代理配置   包括具有适当位置的授权指令,确保   它以'/'结尾:

你有任何提示,为什么这不起作用?

/etc/httpd/conf/httpd.conf文件的VirtualHost部分如下所示:

<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

3 个答案:

答案 0 :(得分:1)

你犯了一些错误。一方面,您必须设置gerrit.config

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

让Gerrit知道前面的代理。

此外,您的Apache vhost必须侦听不同的端口(至少当两个服务在同一服务器上运行时)。事实上,我想知道你是如何在同一时间开始的; - )

因此,为端口80设置apache vhost,而不是端口8081.然后用户将连接到http://freshattitude.eu/

最后,再次在gerrit.config中,您必须修复canonicalWebUrl并删除:8081,因为您正在使用代理,这就是您告诉Gerrit什么的它对外界的URL是。

我认为你应该经历一次Gerrit docs on reverse proxy config

之后,您将最终只使用本地主机端口8081上的Gerrit和侦听端口80的apache(当然,您可能希望使用SSL,然后使用proxy-https中的gerrit.config变体。)< / p>

答案 1 :(得分:0)

这是运行并帮助您https://groups.google.com/forum/?hl=en#!topic/repo-discuss/qwQxy_izXzo

的配置

谢谢&amp;问候,
Alok Thaker

答案 2 :(得分:0)

据我所知,Gerrit要求在使用HTTP身份验证时在请求标头中提供身份验证详细信息。因此,使用此匿名访问时是不可能的。 因此,我将Location "/login/"更改为Location "/",然后在转到Gerrit之前始终进行身份验证。它有效,我可以忍受它。

这实际上可能是一些在某个地方悄悄爬行的回归错误,但是我的工作方式如何。