Linux Gerrit在CentOS上的安装没有';行不通

Linux Gerrit在CentOS上的安装没有';行不通,linux,git,centos,gerrit,Linux,Git,Centos,Gerrit,我已经在centos服务器上安装了gerrit,但身份验证有问题。我想为给定组中的centos用户授予身份验证权限。基本上,gerrit组中的每个用户都应该可以使用其密码登录 但是,当我访问gerrit链接时,当我收到以下消息时,会重定向到gerrit:8081/login: HTTP服务器未在授权中提供用户名 将请求转发给Gerrit Code Review时的标头 如果HTTP服务器是ApacheHTTPD,请检查代理配置 包括具有正确位置的授权指令,确保 它以“/”结尾: 你有什么提示为什

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

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

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

如果HTTP服务器是ApacheHTTPD,请检查代理配置 包括具有正确位置的授权指令,确保 它以“/”结尾:

你有什么提示为什么这不起作用吗

/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

httpd.listenUrl = proxy-http://127.0.0.1:8081/
这样Gerrit就知道前面的代理了

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

因此,为端口80设置apache vhost,而不是为端口8081设置。然后用户将连接到

最后,再次在
gerrit.config
中,您必须修复
canonicalWebUrl
并删除
:8081
,因为您使用的是代理,这就是您告诉gerrit其外部世界的URL的方式

我想你应该经历一次


之后,Gerrit将只在本地主机端口8081上侦听,apache将侦听端口80(当然,您可能希望使用SSL,然后使用
Gerrit.config
中的
proxy https
变量).

据我所知,Gerrit在使用HTTP身份验证时要求在请求头中提供身份验证详细信息。因此,当使用这种匿名访问时是不可能的。 因此,我将
Location”/login/“
更改为
Location/”
,然后在前往Gerrit之前始终完成身份验证。它能起作用,我能接受它


这实际上可能是某个地方潜入的回归错误,但这正是我的工作方式。

请注意,此配置对于Gerrit 2.6+不再有效,因为需要“AllowEncodeDSLASHON”和“ProxyPass…nocanon”!否则,在打开更改屏幕时,将出现404错误。
httpd.listenUrl = proxy-http://127.0.0.1:8081/