Come installo Gerrit in Tomcat con LDAP?


11

Sto cercando di trovare buone istruzioni per l'installazione di Gerrit sotto Tomcat con supporto LDAP. Ho bisogno di questo installato su un server Windows 2008, preferibilmente. Tuttavia, posso optare per Linux se non è possibile.

Le istruzioni di Gerrit riguardano solo l'installazione sotto il molo:

http://gerrit.googlecode.com/svn/documentation/2.1.3/install-j2ee.html#installation

Non c'è molto da evitare se desidero installarlo in ambienti diversi.

Ho trovato alcuni link utili ma niente che ha messo insieme il setup.

http://codeslife.com/2011/06/08/install-gerrit-locally-under-windows/ http://gerrit.googlecode.com/svn/documentation/2.1.7/config-gerrit.html#_a_id_ldap_a_section_ldap http :? //code.google.com/p/gerrit/issues/detail id = 292

Posso sempre impostare questo errore, ma preferirei risparmiare tempo se qualcuno avesse già risolto i problemi.

Risposte:


21

Ho deciso di andare avanti con una risposta in quanto è necessario per la comunità Gerrit. Attualmente, non ci sono molti tutorial che coprono configurazioni avanzate per Gerrit. Spero che questo possa aiutare gli altri a esplorare le pratiche XP / Agile e far funzionare Gerrit. È un ottimo strumento una volta superate tutte le sottili sfide e dettagli della configurazione.

Questo tutorial di installazione è piuttosto unico in quanto serve l'ambiente specifico:

  • Windows 2008 Server
  • PostgreSql
  • micio
  • LDAP tramite Active Directory
  • Gerrit
  • msysgit

Prima di iniziare, assicurati di aver installato git sul tuo sistema. Scarica l'ultimo strumento da riga di comando msysgit per Windows da http://code.google.com/p/msysgit/downloads/list

Assicurati di ottenere il "programma di installazione completo per Git ufficiale per Windows".

  • Installa MSysGit
  • Usa i valori predefiniti quando richiesto
  • Configura Git

Se hai intenzione di utilizzare la versione GitWeb in msysgit, noterai alcuni problemi con CGI.pm. Vorrei menzionare una correzione per risolvere questo problema.

Il perl incluso nella distribuzione msysgit, a partire dall'1.7.8, è rotto, http://groups.google.com/group/msysgit/browse_thread/thread/ba3501f1f0ed95af . Manca la cartella unicore insieme a utf8_heavy.pl e CGI.pm. Puoi verificare controllando i moduli perl:

perl -mCGI -mEncode -mFcntl -mFile :: Find -mFile :: Basename -e "" Probabilmente riscontrerai la seguente eccezione:

$ perl -mCGI -mEncode -mFcntl -mFile :: Find -mFile :: Basename -e "" Impossibile trovare CGI.pm in @INC (@INC contiene: /usr/lib/perl5/5.8.8/msys / usr / lib / p erl5 / 5.8.8 /usr/lib/perl5/site_perl/5.8.8/msys /usr/lib/perl5/site_perl/5.8.8 / u sr / lib / perl5 / site_perl.). INIZIO fallito - compilazione interrotta.

Se ti manca CGI.pm, dovrai distribuire il modulo nell'ambiente msys: dovrai recuperarli dalla distribuzione 5.8.8 su:

http://strawberryperl.com/releases.html

File: fragola-perl-5.8.8.3.zip

contenuto: bin / lib / site /

copia il contenuto di lib in msysgit / lib / perl5 / 5.8.8 e sovrascrivi i file esistenti.

Se usi git da riga di comando, aggiungi le tue impostazioni di configurazione globale a git:

git config --global user.name "Your Name"
git config --global user.email you@corporation.com
git config --global core.autocrlf false

Assicurati che le credenziali utilizzate qui corrispondano alle credenziali in gerrit. Altrimenti, gerrit rifiuterà la tua richiesta.

Le istruzioni per l'installazione e la configurazione di Gerrit sono le seguenti:

  • Per prima cosa, accedi al server che ospita Postgres e crea un utente e un database per Gerrit
  • createuser --username = postgres -A -D -P -E gerrit2
  • createb --username = postgres -E UTF-8 -O recensione gerrit2db
  • Ora, torna all'host, se diverso, per Gerrit e crea 3 directory per distribuire Gerrit
  • Creare una directory di installazione di base per gerrit, preferibilmente una directory con versione per i contenuti della distribuzione di guerra
  • Creare una sottodirectory per Tomcat
  • Creare una directory di configurazione per distribuire lo schema e la configurazione
  • I contenuti dovrebbero apparire così:
  • Gerrit
    • micio
    • config
    • Gerrit-XX
  • Scarica tomcat da http://tomcat.apache.org/download-60.cgi
  • Nota: la maggior parte delle distribuzioni Linux avrà questo a disposizione dai loro gestori degli aggiornamenti. Esempio: utilizzare Synaptic su Ubuntu
  • Distribuire l'installazione di Tomcat nella directory Tomcat
  • Scarica l'ultima gerrit.war da http://code.google.com/p/gerrit/downloads/list .
  • copia il file nella directory di base di gerrit
  • estrarre il file di guerra nella sottodirectory gerrit-XX
  • CD nella directory di base di gerrit ed esecuzione java -jar gerrit-2.4-rc0.war init -d config
    • Questa configurazione include extra per LDAP e l'esecuzione dietro un proxy, non configurare queste opzioni se non necessarie.

Eseguire:

C:\your_path\gerrit>java -jar gerrit-2.4-rc0.war init -d config
*** Gerrit Code Review 2.4-rc0
***
Create 'C:\your_path\gitserver\gerrit\config' [Y/n]? Y
*** Git Repositories
***
Location of Git repositories   [git]: C:\your_path\gitserver\repository\ha
*** SQL Database
***
Database server type           [H2/?]: postgresql
Server hostname                [localhost]: database.corp.local
Server port                    [(POSTGRESQL default)]:
Database name                  [reviewdb]:
Database username              [Administrator]: gerrit2
gerrit2's password             :
              confirm password :
*** User Authentication
***
Authentication method          [OPENID/?]: LDAP
LDAP server                    [ldap://localhost]: ldaps://ldap.corp.local:
636
LDAP username                  : CN=Administrator,CN=Users,DC=corp,DC=local
CN=Administrator,CN=Users,DC=corp,DC=local's password :
              confirm password :
Account BaseDN                 [DC=corp,DC=local:636]: CN=Users,DC=corp,DC=l
ocal
Group BaseDN                   [CN=Users,DC=corp,DC=local]:
*** Email Delivery
***
SMTP server hostname           [localhost]: smtp.corporation.com
SMTP server port               [(default)]: 465
SMTP encryption                [NONE/?]: SSL
SMTP username                  [Administrator]: build@corporation.com
build@corporation.com's password :
              confirm password :
*** Container Process
***
Run as                         [Administrator]:
Java runtime                   [C:\Program Files\Java\jre6]:
Copy gerrit.war to C:\your_path\gitserver\gerrit\config\bin\gerrit.war [Y/n]?
Copying gerrit.war to C:\your_path\gitserver\gerrit\config\bin\gerrit.war
*** SSH Daemon
***
Listen on address              [*]:
Listen on port                 [29418]:
Gerrit Code Review is not shipped with Bouncy Castle Crypto v144
  If available, Gerrit can take advantage of features
  in the library, but will also function without it.
Download and install it now [Y/n]? n
Generating SSH host key ... rsa(simple)... done
*** HTTP Daemon
***
Behind reverse proxy           [y/N]?
Use SSL (https://)             [y/N]?
Listen on address              [*]:
Listen on port                 [8080]:
Initialized C:\your_path\gitserver\gerrit\config
Automatic startup not supported on Win32.
  • Non preoccuparti di configurare Gerrit come server, lo configureremo in seguito
  • Modifica config \ etc \ gerrit.config
  • nella sezione gerrit, aggiungi un'impostazione per conicalWebUrl = http://review.corporation.com/
  • Se i tuoi progetti non seguono il tradizionale formato project.git, aggiungi la seguente sezione:
  • aggiungi il file locaiton e l'URL al tuo server gitweb insieme alle proprietà associate

Aggiornamento gerrit.config:

[gitweb]
        cgi = C:\\path to msysgit\\Git\\share\\gitweb\\gitweb.cgi
        url = https://gitweb.corporation.com
        type = custom
        project = ?p=${project};a=summary 
        revision = ?p=${project};a=commit;h=${commit}
        branch = ?p=${project};a=shortlog;h=${branch}
        filehistory = ?p=${project};a=history;hb=${branch};f=${file}
  • Se stai utilizzando http / https per pubblicare, aggiungi quanto segue:

Aggiornamento gerrit.config:

[download]
scheme = http
  • Se stai usando LDAP con active directory, dovrai modificare le tue impostazioni e aggiungere ulteriori impostazioni per supportare AD:

Aggiornamento gerrit.config:

[ldap]
sslVerify = true
server = ldaps://ldap.corp.local:636
username = CN=Administrator,CN=Users,DC=corp,DC=local
accountBase = CN=Users,DC=corp,DC=local
accountPattern = (&(objectClass=person)(sAMAccountName=${username})) 
accountFullName = displayName 
accountEmailAddress = mail 
accountSshUserName = sAMAccountName 
groupBase = CN=Users,DC=corp,DC=local
groupMemberPattern = (sAMAccountName=${username}) 
groupName = cn

server.xml:

<Server port="8006" shutdown="SHUTDOWN">
<Service name="Catalina">
 <Engine name="Catalina" defaultHost="localhost">
  <Host name="localhost"  appBase="webapps" unpackWARs="true">
    <Context path="" docBase="C:\your_path\gitserver\gerrit\gerrit-2.4" debug="0" reloadable="false">
        <Resource
           name="jdbc/ReviewDb"
           type="javax.sql.DataSource"
           username="gerrit2"
           driverClassName="org.postgresql.Driver"
           password="secret"
           url="dbc:postgresql://yourPsqlServer:5432/reviewdb"
        />
    </Context>
  </Host>
</Engine>
<Connector port="8080" protocol="HTTP/1.1"
               connectionTimeout="20000"/>
<Connector port="8011" protocol="AJP/1.3" maxHttpHeaderSize="8192"
           maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
           disableUploadTimeout="true" enableLookups="false"
           acceptCount="100" URIEncoding="UTF-8" />
</Service>
</Server>
  • Non è necessario il connettore AJP a meno che non si intenda eseguire il proxy con Apache HTTP Server. Lo uso per scaricare la crittografia SSL e gestire i certificati. Basta rimuoverlo se non necessario. Assicurarsi di cambiare la porta del connettore HTTP su 80 se si intende eseguire autonomamente.

  • La configurazione sopra è per l'uso con postgres. Se stai usando MySQL, dovrai sostituire la risorsa con quanto segue per MySQL:

server.xml:

<Resource
name="jdbc/ReviewDb"
type="javax.sql.DataSource"
username="gerrit2"
driverClassName="org.gjt.mm.mysql.Driver"
password="secret"
url="jdbc:mysql://yourMsqlServer/reviewdb?autoReconnect=true"
/>

A questo punto, ora sei pronto per configurare Gerrit come servizio e portare il sistema di revisione online.

  • Innanzitutto, modifica le impostazioni Tomcat per l'esecuzione di Gerrit come servizio
  • Vai a tomcat / bin e modifica service.bat

Le opzioni jvm sono impostate separatamente per il servizio nt. È necessario modificare il file service.bat prima di installare il servizio nt. Questo file risiede nella directory tomcat / bin con gli altri script startup.bat e shutdown. Scorri verso il basso fino alla seguente sezione:

"%EXECUTABLE%"  //US//%SERVICE_NAME% \++JvmOptions  "-Djava.io.tmpdir=%CATALINA_BASE%\temp;-Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager;-Djava.util.logging.config.file=%CATALINA_BASE%\conf\logging.properties"  \--JvmMs 128 \--JvmMx 256

Modifica questa riga in modo che corrisponda a quanto segue:

"%EXECUTABLE%" //US//%SERVICE_NAME%  \++JvmOptions  "-Djava.io.tmpdir=%CATALINA_BASE%\temp;-Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager;-Djava.util.logging.config.file=%CATALINA_BASE%\conf\logging.properties"  \++JvmOptions="-XX:MaxPermSize=256m"  \++JvmOptions="-XX:+CMSClassUnloadingEnabled"  \++JvmOptions="-XX:+CMSPermGenSweepingEnabled" \--JvmMs 512 \--JvmMx 1024

La memoria iniziale, jvmMs, dovrebbe sicuramente essere impostata su 512 Mb per gerrit ed estesa, JvmMx, a 1024 Mb.

Ora sei pronto per distribuire gerrit come servizio in Windows. Esegui solo quanto segue:

C:\your_path\gitserver\gerrit\tomcat\bin>service install gerrit
Installing the service 'gerrit' ...
Using CATALINA_HOME: "C:\your_path\gitserver\gerrit\tomcat"
Using CATALINA_BASE: "C:\your_path\gitserver\gerrit\tomcat"
Using JAVA_HOME: "C:\Program Files\Java\jdk1.6.0_31"
Using JVM: "C:\Program Files\Java\jdk1.6.0_31\jre\bin\server\jvm.dl
l"
The service 'gerrit' has been installed.

C:\your_path\gitserver\gerrit\tomcat\bin>

Vai al gestore del server e apri il nodo Servizi. Apri le proprietà di Gerrit e assicurati di impostare il tipo di avvio su Automatico:

Servizi

Finestra di dialogo Applica e chiudi.

OK ... Abbiamo ancora finito? Sfortunatamente no, bastano pochi altri passaggi. Tenere duro.

Ora sei pronto per iniziare il servizio. Basta evidenziare il servizio Gerrit e fare clic sull'opzione Avvia a sinistra.

Rivedere i registri nella directory tomcat / log. Assicurarsi che non vi siano errori in sospeso. In caso di problemi, è possibile porre domande qui o nella mailing list gerrit: http://groups.google.com/group/repo-discuss

Dovresti essere in grado di accedere al tuo browser e inserire l'URL del tuo server per visualizzare Gerrit ora: http://review.corporation.com:8080

Ti verrà richiesto di inserire la tua chiave pubblica ssh. Ciò è necessario solo se si intende utilizzare Git / Gerrit tramite ssh anziché HTTP. Sono andato avanti e l'ho impostato perché è una buona opzione da avere.

Configura SSH

Genera una chiave ssh per l'accesso:

Amministratore @ SERVER ~ / test $ ssh-keygen -t rsa

Registra un nuovo account in Gerrit attraverso l'interfaccia web con l'indirizzo email che preferisci. Il primo utente che accede e registra un account verrà automaticamente inserito nel gruppo di amministratori con privilegi completi, consentendo la gestione del server sul Web e su SSH. Gli utenti successivi verranno automaticamente registrati come utenti non privilegiati.

Una volta effettuato l'accesso come utente, troverai una piccola procedura guidata per iniziare. La procedura guidata ti aiuta a compilare:

  • Nome reale (nome visibile in Gerrit)
  • Registra la tua email (deve essere confermata in seguito)
  • Seleziona un nome utente con cui comunicare con Gerrit tramite ssh + git
  • Il server ti chiederà una chiave pubblica RSA. Questa è la chiave che abbiamo generato sopra, ed è tempo di assicurarsi che Gerrit sia a conoscenza della nostra nuova chiave e possa identificarci con essa.

    user @ host: ~ $ cat .ssh / id_rsa.pub

Configurare l'accesso HTTP solo per gli utenti registrati, a meno che il progetto non sia aperto al pubblico:

inserisci qui la descrizione dell'immagine

Genera una password HTTP

Nonostante abbia configurato il tuo login, devi comunque generare una password per gerrit sul server tramite http / https. Vai su Impostazioni-> Configurazione password HTTP e fai clic su "Genera password". Usa questa password per tutte le operazioni git su http (s).

Ora possiamo testare Gerrit tramite HTTP. Dovresti essere in grado di clonare qualsiasi progetto esistente nel repository a cui hai fatto riferimento nella configurazione di Gerrit.

Test con clone

Administrator@SERVER ~/test
$ git clone https://review.corporation.com/sandbox

Prova il tuo account ssh

Administrator@SERVER~/test
$ ssh jhuntley@localhost -p 29418

**** Welcome to Gerrit Code Review ****

Hi Jason Huntley, you have successfully connected over SSH.

Unfortunately, interactive shells are disabled.
To clone a hosted Git repository, use:

git clone ssh://jhuntley@review.corporation.com:29418/REPOSITORY_NAME.g
it

Connection to localhost closed.

Clonare un progetto da Gerrit tramite SSH:

Administrator@SERVER~/test
$ git clone ssh://jhuntley@127.0.0.1:29418/sandbox
Cloning into 'sandbox'...
remote: Counting objects: 183, done
remote: Finding sources: 100% (183/183)
remote: Total 183 (delta 0), reused 0 (delta 0)Receiving objects: 50% (92/183)
Receiving objects: 52% (96/183)
Receiving objects: 100% (183/183), 23.76 KiB, done.

Se ormai non ti sei arreso, puoi rilassarti, dovresti trovarti con un sistema funzionante di revisione del codice Gerrit ospitato da un server Windows 2008 :) Non è così comune come un'installazione e come puoi dire, garantisce tutto il extra passi. Tuttavia, alcuni di noi hanno risorse limitate e possono utilizzare solo ciò che viene fornito. Spero che questo tutorial aiuti chi cerca di eseguire Gerrit in un ambiente simile. Ora dovresti essere pronto per iniziare a usare Gerrit! Godere!

Per ulteriori informazioni sull'utilizzo di Gerrit, consultare la guida per l'utente del progetto Gerrit:

http://gerrit-documentation.googlecode.com/svn/Documentation/2.3/index.html

Grazie Shawn Pierce per l'aiuto su IRC!

Per riferimento futuro

Il tutorial è stato convertito in documentazione per il progetto Gerrit. Per chi è interessato e necessita di un buon riferimento. Si prega di consultare la richiesta di patch qui:

https://gerrit-review.googlesource.com/#/c/37072


informazioni molto belle e complete. <p> predefinito "Git per Windows" da msysgit non include CGI.pm, come riesci a lavorare con gitweb?
larrycai,

Ho risolto anche questo un po 'di tempo fa. Ho delle note su come risolvere quel problema. Vedrò se posso fornire un aggiornamento qui a breve.
Jason Huntley

Ehi Larry, ho aggiornato il tutorial e incluso la correzione per il problema GIT.pm. Per favore vota la risposta se ritieni utile questo post. Grazie!
Jason Huntley

gitweb può funzionare come tu descrivi come CGI? Ho creato gitweb.bat per racchiuderlo senza apache <p> Per CGI.pm, basta scaricare CGI.tar.gz e caricarlo in / usr / lib / perl5 / site_perl è abbastanza buono. <p> il tutorial è molto completo, ma è un po 'difficile da seguire per un principiante ;-)
larrycai

@larrycai, sì, ho scritto questo tutorial qualche tempo fa e in realtà è stato migliorato e ha contribuito alla documentazione del progetto Gerrit. È ancora in fase di revisione, ma una volta approvato, aggiornerò questa domanda. Grazie per il feedback. Oh e sì, gitweb funzionerà sicuramente come CGI tramite Apache.
Jason Huntley il
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.