Wie installiere ich Gerrit Under Tomcat mit LDAP?

11

Ich versuche, gute Anweisungen für die Installation von Gerrit unter Tomcat mit LDAP-Unterstützung zu finden. Ich muss dies vorzugsweise auf einem Windows 2008 Server installieren. Ich kann mich jedoch für Linux entscheiden, wenn dies nicht möglich ist.

Die Gerrit-Anweisungen gelten nur für die Installation unter dem Steg:

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

Es gibt nicht viel zu tun, wenn ich dies unter verschiedenen Umgebungen einrichten möchte.

Ich habe ein paar nützliche Links gefunden, aber nichts, was das Setup zusammenbringt.

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

Ich kann dies immer durch Ausprobieren einrichten, aber ich würde es vorziehen, Zeit zu sparen, wenn jemand die Probleme bereits gelöst hat.

Jason Huntley
quelle

Antworten:

21

Ich habe beschlossen, eine Antwort darauf zu geben, da dies für die Gerrit-Community notwendig ist. Derzeit gibt es nicht viele Tutorials zu fortgeschrittenen Setups für Gerrit. Ich hoffe, dies wird anderen helfen, XP / Agile-Praktiken zu erkunden und Gerrit zum Laufen zu bringen. Es ist ein großartiges Tool, wenn Sie alle subtilen Herausforderungen und Details des Setups überwunden haben.

Dieses Installations-Tutorial ist insofern ziemlich einzigartig, als es der spezifischen Umgebung dient:

  • Windows 2008 Server
  • PostgreSql
  • Kater
  • LDAP über Active Directory
  • Gerrit
  • msysgit

Bevor Sie beginnen, stellen Sie sicher, dass git auf Ihrem System installiert ist. Laden Sie das neueste msysgit-Befehlszeilentool für Windows von http://code.google.com/p/msysgit/downloads/list herunter

Stellen Sie sicher, dass Sie das "Vollinstallationsprogramm für offizielles Git für Windows" erhalten.

  • Installieren Sie MSysGit
  • Verwenden Sie die Standardeinstellungen, wenn Sie dazu aufgefordert werden
  • Git konfigurieren

Wenn Sie beabsichtigen, die GitWeb-Version in msysgit zu verwenden, werden Sie einige Probleme mit CGI.pm bemerken. Ich möchte einen Fix erwähnen, um dieses Problem zu beheben.

Das in der msysgit-Distribution ab 1.7.8 enthaltene Perl ist defekt ( http://groups.google.com/group/msysgit/browse_thread/thread/ba3501f1f0ed95af) . Der Unicore-Ordner fehlt zusammen mit utf8_heavy.pl und CGI.pm. Sie können dies überprüfen, indem Sie nach Perl-Modulen suchen:

perl -mCGI -mEncode -mFcntl -mFile :: Find -mFile :: Basename -e "" Sie werden wahrscheinlich auf die folgende Ausnahme stoßen:

$ perl -mCGI -mEncode -mFcntl -mFile :: Find -mFile :: Basename -e "" CGI.pm kann in @INC nicht gefunden werden (@INC enthält: /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.). BEGIN fehlgeschlagen - Kompilierung abgebrochen.

Wenn Sie CGI.pm vermissen, müssen Sie das Modul in der msys-Umgebung bereitstellen: Sie müssen sie aus der 5.8.8-Distribution abrufen:

http://strawberryperl.com/releases.html

Datei: Erdbeer-Perl-5.8.8.3.zip

Inhalt: bin / lib / site /

Kopieren Sie den Inhalt von lib in msysgit / lib / perl5 / 5.8.8 und überschreiben Sie vorhandene Dateien.

Wenn Sie Kommandozeilen-Git verwenden, fügen Sie Ihre globalen Konfigurationseinstellungen zu Git hinzu:

git config --global user.name "Your Name"
git config --global user.email [email protected]
git config --global core.autocrlf false

Stellen Sie sicher, dass die hier verwendeten Anmeldeinformationen mit den Anmeldeinformationen in gerrit übereinstimmen. Andernfalls lehnt gerrit Ihre Anfrage ab.

Die Anweisungen zum Installieren und Konfigurieren von Gerrit lauten wie folgt:

  • Melden Sie sich zunächst beim Server an, auf dem Postgres gehostet wird, und erstellen Sie einen Benutzer und eine Datenbank für Gerrit
  • createuser --username = postgres -A -D -P -E gerrit2
  • createdb --username = postgres -E UTF-8 -O gerrit2 reviewdb
  • Wechseln Sie jetzt für Gerrit zum Host zurück, falls dies anders ist, und erstellen Sie drei Verzeichnisse für die Bereitstellung von Gerrit
  • Erstellen Sie ein Basisinstallationsverzeichnis für gerrit, vorzugsweise ein versioniertes Verzeichnis für den Inhalt der Kriegsbereitstellung
  • Erstellen Sie ein Unterverzeichnis für Tomcat
  • Erstellen Sie ein Konfigurationsverzeichnis für die Bereitstellung des Schemas und der Konfiguration
  • Der Inhalt sollte folgendermaßen aussehen:
  • gerrit
    • Kater
    • config
    • gerrit-XX
  • Laden Sie tomcat von http://tomcat.apache.org/download-60.cgi herunter
  • Hinweis: Bei den meisten Linux-Distributionen ist dies bei ihren Update-Managern verfügbar. Beispiel: Verwenden Sie Synaptic unter Ubuntu
  • Stellen Sie Ihre Tomcat-Installation im Tomcat-Verzeichnis bereit
  • Laden Sie die neueste Version von gerrit.war von http://code.google.com/p/gerrit/downloads/list herunter .
  • Kopieren Sie die Datei in das Basis-Gerrit-Verzeichnis
  • Extrahieren Sie die Kriegsdatei in das Unterverzeichnis gerrit-XX
  • CD in das Gerrit-Basisverzeichnis und ausführen java -jar gerrit-2.4-rc0.war init -d config
    • Diese Konfiguration enthält Extras für LDAP und wird hinter einem Proxy ausgeführt. Konfigurieren Sie diese Optionen nicht, wenn sie nicht benötigt werden.

Ausführen:

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]: [email protected]
[email protected]'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.
  • Machen Sie sich keine Sorgen, ob Sie Gerrit als Server einrichten, wir werden das später konfigurieren
  • Bearbeiten Sie config \ etc \ gerrit.config
  • Fügen Sie im Abschnitt gerrit eine Einstellung für conicalWebUrl = http://review.corporation.com/ hinzu.
  • Wenn Ihre Projekte nicht dem herkömmlichen project.git-Format entsprechen, fügen Sie den folgenden Abschnitt hinzu:
  • Fügen Sie den Dateispeicherort und die URL zusammen mit den zugehörigen Eigenschaften zu Ihrem Gitweb-Server hinzu

gerrit.config Update:

[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}
  • Wenn Sie http / https zum Bereitstellen verwenden, fügen Sie Folgendes hinzu:

gerrit.config Update:

[download]
scheme = http
  • Wenn Sie LDAP mit Active Directory verwenden, müssen Sie Ihre Einstellungen anpassen und zusätzliche Einstellungen hinzufügen, um AD zu unterstützen:

gerrit.config Update:

[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>
  • Sie benötigen den AJP-Connector nur, wenn Sie beabsichtigen, mit Apache HTTP Server zu proxen. Ich verwende es, um die SSL-Verschlüsselung auszulagern und Zertifikate zu verwalten. Entfernen Sie es einfach, wenn es nicht benötigt wird. Stellen Sie sicher, dass Sie Ihren HTTP-Connector-Port auf 80 ändern, wenn Sie Standalone ausführen möchten.

  • Die obige Konfiguration ist für die Verwendung mit Postgres vorgesehen. Wenn Sie MySQL verwenden, müssen Sie die Ressource für MySQL durch Folgendes ersetzen:

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

Jetzt können Sie Gerrit als Service konfigurieren und das Überprüfungssystem online schalten.

  • Passen Sie zunächst die Tomcat-Einstellungen für die Ausführung von Gerrit as a Service an
  • Gehen Sie zu tomcat / bin und bearbeiten Sie service.bat

Die JVM-Optionen werden für den nt-Dienst separat festgelegt. Sie müssen Ihre Datei service.bat ändern, bevor Sie den Dienst nt installieren. Diese Datei befindet sich im Verzeichnis tomcat / bin mit den anderen Skripten startup.bat und shutdown. Scrollen Sie zum folgenden Abschnitt:

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

Ändern Sie diese Zeile wie folgt:

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

Der anfängliche Speicher, jvmMs, sollte auf jeden Fall auf 512 MB für Gerrit eingestellt und JvmMx auf 1024 MB erweitert werden.

Jetzt können Sie Gerrit als Dienst unter Windows bereitstellen. Führen Sie einfach Folgendes aus:

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>

Gehen Sie zu Ihrem Server-Manager und öffnen Sie den Knoten Dienste. Öffnen Sie die Eigenschaften für Gerrit und stellen Sie sicher, dass Sie den Starttyp auf Automatisch setzen:

Dienstleistungen

Dialogfeld "Anwenden" und "Schließen".

OK ... Sind wir schon fertig? Leider nein, nur noch ein paar Schritte. Halte durch.

Jetzt können Sie den Dienst starten. Markieren Sie einfach den Gerrit-Dienst und klicken Sie links auf die Option Start.

Überprüfen Sie die Protokolle im Verzeichnis tomcat / log. Stellen Sie sicher, dass keine Fehler ausstehen. Wenn Sie Probleme haben, können Sie hier oder auf der Gerrit-Mailingliste Fragen stellen: http://groups.google.com/group/repo-discuss

Sie sollten in der Lage sein, zu Ihrem Browser zu gelangen und die URL Ihres Servers einzugeben, um Gerrit jetzt anzuzeigen: http://review.corporation.com:8080

Sie werden aufgefordert, Ihren öffentlichen ssh-Schlüssel einzugeben. Dies ist nur erforderlich, wenn Sie Git / Gerrit über ssh anstelle von HTTP verwenden möchten. Ich habe es eingerichtet, weil es eine gute Option ist.

Konfigurieren Sie SSH

Generieren Sie einen SSH-Schlüssel für den Zugriff:

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

Registrieren Sie ein neues Konto in Gerrit über die Weboberfläche mit der E-Mail-Adresse Ihrer Wahl. Der erste Benutzer, der sich anmeldet und ein Konto registriert, wird automatisch in die Gruppe der vollständig privilegierten Administratoren aufgenommen, sodass die Serververwaltung über das Web und über SSH möglich ist. Nachfolgende Benutzer werden automatisch als nicht privilegierte Benutzer registriert.

Sobald Sie als Benutzer angemeldet sind, finden Sie einen kleinen Assistenten, mit dem Sie loslegen können. Der Assistent hilft Ihnen beim Ausfüllen:

  • Richtiger Name (sichtbarer Name in Gerrit)
  • Registrieren Sie Ihre E-Mail (muss später bestätigt werden)
  • Wählen Sie einen Benutzernamen aus, mit dem Sie über ssh + git mit Gerrit kommunizieren möchten
  • Der Server fragt Sie nach einem öffentlichen RSA-Schlüssel. Das ist der Schlüssel, den wir oben generiert haben, und es ist Zeit sicherzustellen, dass Gerrit über unseren neuen Schlüssel Bescheid weiß und uns daran identifizieren kann.

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

Konfigurieren Sie den HTTP-Zugriff nur für registrierte Benutzer, es sei denn, Ihr Projekt ist öffentlich zugänglich:

Geben Sie hier die Bildbeschreibung ein

Generieren Sie ein HTTP-Passwort

Obwohl Sie Ihr eigenes Login konfiguriert haben, müssen Sie dennoch ein Passwort für gerrit to server über http / https generieren. Gehen Sie zu Ihren Einstellungen-> HTTP-Passwortkonfiguration und klicken Sie auf 'Passwort generieren'. Verwenden Sie dieses Passwort für alle Git-Operationen über http (s).

Jetzt können wir Gerrit über HTTP testen. Sie sollten in der Lage sein, alle Projekte zu klonen, die in dem Repository vorhanden sind, auf das Sie in der Gerrit-Konfiguration verwiesen haben.

Test mit Klonbetrieb

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

Testen Sie Ihr SSH-Konto

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://[email protected]:29418/REPOSITORY_NAME.g
it

Connection to localhost closed.

Klonen Sie ein Projekt von Gerrit über SSH:

Administrator@SERVER~/test
$ git clone ssh://[email protected]: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.

Wenn Sie bis jetzt noch nicht aufgegeben haben, können Sie sich entspannen. Sie sollten sich mit einem funktionierenden Gerrit Code Review-System befinden, das von einem Windows 2008-Server gehostet wird :) Es ist nicht so häufig wie ein Setup und garantiert, wie Sie sehen, all das Extra Schritte. Einige von uns verfügen jedoch nur über begrenzte Ressourcen und können nur das verwenden, was bereitgestellt wird. Ich hoffe, dieses Tutorial hilft denjenigen, die Gerrit in einer ähnlichen Umgebung ausführen möchten. Sie sollten jetzt bereit sein, Gerrit zu verwenden! Genießen!

Weitere Informationen zur Verwendung von Gerrit finden Sie in der Bedienungsanleitung des Gerrit-Projekts:

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

Vielen Dank an Shawn Pierce für die Hilfe im IRC!

Zum späteren Nachschlagen

Das Tutorial wurde in die Dokumentation für das Gerrit-Projekt konvertiert. Für Interessierte und brauchen eine gute Referenz. Bitte beachten Sie die Patch-Anfrage hier:

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

Jason Huntley
quelle
sehr nette und vollständige Informationen. <p> Standard "Git für Windows" von msysgit enthält keine CGI.pm. Wie schaffen Sie es, für gitweb zu arbeiten?
Larrycai
Das habe ich auch vor einiger Zeit gelöst. Ich habe Hinweise zur Behebung dieses Problems. Ich werde sehen, ob ich hier in Kürze ein Update bereitstellen kann.
Jason Huntley
Hey Larry, ich habe das Tutorial aktualisiert und das Update für das GIT.pm-Problem hinzugefügt. Bitte stimmen Sie der Antwort zu, wenn Sie diesen Beitrag nützlich finden. Vielen Dank!
Jason Huntley
Kann das Gitweb so funktionieren, wie Sie es als CGI beschreiben? Ich habe gitweb.bat erstellt, um es ohne Apache zu verpacken. <P> Für CGI.pm laden Sie einfach CGI.tar.gz herunter und laden Sie es in / usr / lib / perl5 / site_perl hoch. <P> Das Tutorial ist sehr vollständig, aber es ist etwas schwierig für einen Anfänger zu folgen
;-)
@larrycai, ja, ich habe dieses Tutorial vor einiger Zeit geschrieben und es wurde tatsächlich verbessert und hat zu Gerrits Projektdokumentation beigetragen. Es wird noch geprüft, aber wenn es genehmigt ist, werde ich diese Frage aktualisieren. Danke für die Rückmeldung. Oh und ja, Gitweb wird definitiv als CGI über Apache ausgeführt.
Jason Huntley