La installation de Gerrit en CentOS no funciona

He instalado gerrit en mi server centos, pero tengo un problema con la authentication. Me gustaría otorgar privilegios de authentication para los usuarios de centos en un grupo determinado. Básicamente, todos los usuarios del grupo gerrit deberían tener la posibilidad de iniciar session con su contraseña.

Pero, cuando accedo al enlace gerrit, hay un redirect a gerrit: 8081 / login cuando recibo el siguiente post:

El server HTTP no proporcionó el nombre de usuario en el encabezado Authorization cuando reenvió la request a Gerrit Code Review.

Si el server HTTP es Apache HTTPd, verifique que la configuration del proxy incluya una directiva de autorización con la location adecuada, asegurándose de que termine con '/':

¿Tiene alguna pista de por qué esto no funciona?

La parte VirtualHost del file /etc/httpd/conf/httpd.conf se ve así:

<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> 

Y el file 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 

Cometiste algunos errores. Por un lado, tienes que establecer en gerrit.config

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

para que Gerrit sepa sobre el proxy que está frente a él.

Además, su vhost de Apache tiene que escuchar un puerto diferente (al less cuando ambos services se ejecutan en el mismo server). De hecho, me pregunto cómo has podido comenzar ambos al mismo time 😉

Configure un apache vhost para el puerto 80, no para el puerto 8081. Luego, los usuarios se conectarán a http://freshattitude.eu/ .

Finalmente, de nuevo en gerrit.config , tienes que arreglar tu canonicalWebUrl y eliminar el :8081 , ya que estás usando un proxy, así es como le dices a Gerrit cuál es su URL hacia el mundo exterior.

Creo que deberías revisar los documentos de Gerrit en la configuration de proxy inverso una vez.

Después terminará con Gerrit escuchando solo en el puerto localhost 8081 y apache escuchando el puerto 80 (seguro, puede usar SSL, luego use la variante proxy-https en gerrit.config ).

Esta es la configuration que se ejecuta y te ayuda https://groups.google.com/forum/?hl=en#!topic/repo-discuss/qwQxy_izXzo

Gracias y Saludos,
Alok Thaker

Por lo que sé, Gerrit requiere que se proporcionen los detalles de authentication en el encabezado de request cuando se utiliza la authentication HTTP. Por lo tanto, al usar este acceso anónimo no es posible. Debido a esto, cambié la Location "/login/" a la Location "/" , luego la authentication siempre se hace antes de ir a Gerrit. Eso funciona y puedo vivir con eso.

Esto en realidad podría ser algún error de regresión que se arrastró en algún lugar, pero eso es como lo tengo funcionando.