2013-08-12 12 views
6

Sto provando a configurare Gerrit con l'autenticazione HTTP baisc, il mio httpd config èistituito Gerrit con l'autenticazione HTTP

<VirtualHost *:8081> 
    ServerName localhost 

    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 /usr/local/apache/passwd/passwords 
Require valid-user 
</Location> 
ProxyPass/http://localhost:8081/ 
</VirtualHost> 

e il mio gerrit.config è

[gerrit] 
     basePath = git 
     canonicalWebUrl = http://localhost:8081/ 
[database] 
     type = mysql 
     hostname = localhost 
     database = reviewdb 
     username = gerrit 
[auth] 
     type = HTTP 
[sendemail] 
     smtpServer = localhost 
     smtpUser = gerrit 
[container] 
     user = gerrit 
     javaHome = /usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0.x86_64/jre 
[sshd] 
     listenAddress = *:29418 
[httpd] 
     listenUrl = proxy-http://*:8081/ 
[cache] 
     directory = cache 

non sono sicuro dove mi i andando male, ma il accedendo http://x.x.x.x:8081 dice

The HTTP server did not provide the username in the Authorization header when it forwarded the request to Gerrit Code Review. 

If the HTTP server is Apache HTTPd, check the proxy configuration includes an authorization directive with the proper location, ensuring it ends with '/': 

mia Gerrit corre sulle coun molo inbuild Tainer e il mio sistema operativo è centos 6.4

dove sto andando storto?

risposta

5

ok, In realtà stavo creando un host virtuale sulla porta 8081 e la mia pontile (che viene insieme a Gerrit) è stato anche l'ascolto della stessa porta, la mia configurazione è rimasto quasi lo stesso, ma questi sono i passaggi aggiuntivi: -

  • aggiungere una nuova porta alla tua SELinux (che ha alcuni porti di base definite inizialmente) o si può disabilitarlo se la sicurezza non è un problema.
  • tell httpd per ascoltare questa porta (nel mio caso ho aggiunto 8082), in modo da aggiungere la riga listen <port-no> nel file http conf
  • Modifica l'host virtuale al numero di porta adesso la tua virtualhost è impostato sulla porta 8082

    <VirtualHost *:8082> 
        ServerName localhost 
    
        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 /usr/local/apache/passwd/passwords 
    Require valid-user 
    </Location> 
    ProxyPass/http://localhost:8081/ 
    

  • modificare l'URL canonica alla porta 8082 (in modo che reindirizza alla stessa porta)

  • riavvia infine apache e gerrit (accedi al tuo host: 8082).

divertiti. !!

+0

Grazie alla configurazione ha funzionato per me il più a lungo il checkout va Tuttavia non sono ancora in grado di generare errori del tipo "Autenticazione fallita per ..." –

+0

Se si passa a HTTP da OpenId, Gerrit non creerà il [account_external_ids] (https://review.openstack.org/Documentation /config-sso.html#_database_schema_2) automaticamente se il nome utente da HTTP corrisponde a quello che è stato utilizzato con OpenID. Visualizzerà un breve messaggio "Proibito" dopo l'autenticazione. Per risolvere questo problema, inserisci una riga che corrisponda al tuo utente nella tabella 'account_external_ids' con' external_id' uguale a 'gerrit: username'. – fracz

3

Gerrit prevede l'autenticazione da fornire. Non consente l'accesso anonimo quando si utilizza l'autenticazione HTTP.

Per far funzionare tutto questo è necessario autenticarsi alla radice e il tuo blocco posizione dovrebbe assomigliare a questo:

<Location "/"> 
    AuthType Basic 
    AuthName "Gerrit Code Review" 
    AuthBasicProvider file 
    AuthUserFile /usr/local/apache/passwd/passwords 
    Require valid-user 
</Location> 
1

Ci sono alcuni problemi con la configurazione:

  1. Apache e cercare di ascoltare sulla stessa porta 8081, questo non è possibile
  2. È ProxyPass non è il migliore, creerà alcuni piccoli problemi .Questi problemi sono:
    1. Impossibile per creare nomi di progetti con una barra in esso, come: principale/secondaria
    2. Quando si rivedono i file il segno di spunta non appare accanto al file di mostrarlo come rivisto, ancora una volta questo è collegato per la barra non essere adeguatamente trattati
  3. e 'più comune l'uso di una sottocartella e non la radice, immagino che funziona meglio con il proxy inverso

Questa è la mia configurazione consigliata per voi:

<VirtualHost *:80> 
     ServerName localhost 

     ProxyRequests Off 
     ProxyVia Off 
     ProxyPreserveHost On 

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

     <Location "/"> 
      AuthType Basic 
      AuthName "Gerrit Code Review" 
      AuthBasicProvider file 
      AuthUserFile /usr/local/apache/passwd/passwords 
      Require valid-user 
     </Location> 

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

Ovviamente, non dimenticare di modificare gerrit.config, il canonicoWebUrl è ciò che digiti nella barra degli indirizzi, non quello che apache usa per trovare gerrit.

[gerrit] 
    basePath = git 
    canonicalWebUrl = http://localhost:8082/r 

Per evitare che la pagina di default di Apache da mostrare aggiungere un index.php nella cartella principale che reindirizza il browser per il percorso sub:

<?php 
    header('Location: http://localhost:8082/r/'); 
?> 
+0

ho configurato in base a quanto sopra, ma devo impostarlo solo sulla porta 8082, perché ho qualche altro servizio ospitato sulla porta 80, qualsiasi come quando sto andando su localhost: 8082 sta mostrando la pagina di test di Apache, dove sono sto sbagliando? – shubham

+0

Hai usato una sottocartella? C'è una differenza tra http: // localhost: 8082/r e http: // localhost: 8082/r /, il secondo inoltrerà, il primo non credo. Nel mio caso ho effettivamente aggiunto un file index.php nella radice (/var/www/index.php) che reindirizza al percorso secondario, l'ho aggiunto sopra. – uncletall

+0

perché stiamo usando "/ r /" Voglio dire, nella mia configurazione originale ho usato/login/perché gerrit richiede l'autorizzazione headder su http: // mygerrit: 8081/login/comunque cambiarlo in/r/non ha risolto il problema. – shubham