Jak zainstalować Gerrit pod Tomcat z LDAP?

11

Próbuję znaleźć dobre instrukcje dotyczące instalowania Gerrit pod Tomcat z obsługą LDAP. Najlepiej, jeśli potrzebuję tego zainstalowanego na Windows 2008 Server. Mogę jednak wybrać system Linux, jeśli nie jest to możliwe.

Instrukcje Gerrit dotyczą tylko instalacji pod pomostem:

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

Nie ma wiele do stracenia, jeśli chcę skonfigurować to w różnych środowiskach.

Znalazłem kilka przydatnych linków, ale nic nie łączyło konfiguracji.

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

Zawsze mogę skonfigurować metodę prób i błędów, ale wolę oszczędzać czas, jeśli ktoś już przeszedł przez problemy.

Jason Huntley
źródło

Odpowiedzi:

21

Postanowiłem odpowiedzieć na to pytanie, ponieważ jest to trochę potrzebne społeczności Gerrit. Obecnie nie ma zbyt wielu samouczków obejmujących zaawansowane ustawienia Gerrit. Mam nadzieję, że to pomoże innym odkryć praktyki XP / Agile i uruchomić Gerrit. To świetne narzędzie, gdy miniesz wszystkie subtelne wyzwania i szczegóły konfiguracji.

Ten samouczek instalacji jest raczej wyjątkowy, ponieważ służy do określonego środowiska:

  • Windows 2008 Server
  • PostgreSql
  • Kocur
  • LDAP przez Active Directory
  • Gerrit
  • msysgit

Zanim zaczniesz, upewnij się, że masz zainstalowany git w systemie. Pobierz najnowsze narzędzie wiersza polecenia msysgit dla systemu Windows z http://code.google.com/p/msysgit/downloads/list

Upewnij się, że masz „Pełny instalator oficjalnego Git dla Windows”.

  • Zainstaluj MSysGit
  • Po wyświetleniu monitu użyj ustawień domyślnych
  • Skonfiguruj Git

Jeśli zamierzasz używać wersji GitWeb w msysgit, zauważysz pewne problemy związane z CGI.pm. Chciałbym wspomnieć o rozwiązaniu problemu.

Perl dołączony do dystrybucji msysgit od 1.7.8 jest uszkodzony, http://groups.google.com/group/msysgit/browse_thread/thread/ba3501f1f0ed95af . Brakuje folderu Unicore wraz z utf8_heavy.pl i CGI.pm. Możesz to sprawdzić, sprawdzając moduły perla:

perl -mCGI -mEncode -mFcntl -mFile :: Znajdź -mFile :: Basename -e "" Prawdopodobnie wystąpi następujący wyjątek:

$ perl -mCGI -mEncode -mFcntl -mFile :: Znajdź -mFile :: Basename -e "" Nie można znaleźć CGI.pm w @INC (@INC zawiera: /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 nie powiodło się - kompilacja przerwana.

Jeśli brakuje Ci CGI.pm, musisz wdrożyć moduł w środowisku msys: Musisz pobrać je z dystrybucji 5.8.8:

http://strawberryperl.com/releases.html

Plik: strawberry-perl-5.8.8.3.zip

zawartość: bin / lib / site /

skopiuj zawartość lib do msysgit / lib / perl5 / 5.8.8 i zastąp istniejące pliki.

Jeśli używasz git z wiersza poleceń, dodaj swoje globalne ustawienia konfiguracji do git:

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

Upewnij się, że używane tutaj poświadczenia są zgodne z poświadczeniami w gerrit. W przeciwnym razie gerrit odrzuci twoją prośbę.

Instrukcje dotyczące instalowania i konfigurowania Gerrit są następujące:

  • Najpierw zaloguj się na serwerze obsługującym Postgres i utwórz użytkownika i bazę danych dla Gerrit
  • createuser --username = postgres -A -D -P -E gerrit2
  • utworzonyb - nazwa_użytkownika = postgres -E UTF-8 -O gerrit2 reviewdb
  • Teraz przełącz się z powrotem na hosta, jeśli jest inny, dla Gerrit i utwórz 3 katalogi do wdrożenia Gerrit
  • Utwórz podstawowy katalog instalacyjny dla gerrit, najlepiej katalog z wersją dla zawartości związanej z wdrażaniem wojny
  • Utwórz podkatalog dla tomcat
  • Utwórz katalog konfiguracji do wdrożenia schematu i konfiguracji
  • Treść powinna wyglądać następująco:
  • gerrit
    • kocur
    • config
    • gerrit-XX
  • Pobierz tomcat ze strony http://tomcat.apache.org/download-60.cgi
  • Uwaga: większość dystrybucji Linuksa będzie dostępna w swoich menedżerach aktualizacji. Przykład: Użyj Synaptic na Ubuntu
  • Wdróż instalację tomcat w katalogu tomcat
  • Pobierz najnowszą wersję gerrit.war ze strony http://code.google.com/p/gerrit/downloads/list .
  • skopiuj plik do podstawowego katalogu gerrit
  • rozpakuj plik wojny do podkatalogu gerrit-XX
  • CD do katalogu podstawowego gerrit i uruchom java -jar gerrit-2.4-rc0.war init -d config
    • Ta konfiguracja obejmuje dodatki do LDAP i działa za proxy, nie konfiguruj tych opcji, jeśli nie są potrzebne.

Wykonać:

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.
  • Nie martw się o skonfigurowanie Gerrit jako serwera, skonfigurujemy to później
  • Edytuj config \ etc \ gerrit.config
  • w sekcji gerrit dodaj ustawienie dla conicalWebUrl = http://review.corporation.com/
  • Jeśli twoje projekty nie są zgodne z tradycyjnym formatem project.git, dodaj następującą sekcję:
  • dodaj lokalizację pliku i adres URL do serwera gitweb wraz z powiązanymi właściwościami

Aktualizacja 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}
  • Jeśli używasz http / https do wyświetlenia, dodaj następujące:

Aktualizacja gerrit.config:

[download]
scheme = http
  • Jeśli korzystasz z LDAP z Active Directory, musisz dostosować swoje ustawienia, dodać dodatkowe ustawienia do obsługi AD:

Aktualizacja 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>
  • Nie potrzebujesz konektora AJP, chyba że zamierzasz korzystać z serwera proxy Apache HTTP Server. Używam go do odciążania szyfrowania SSL i zarządzania certyfikatami. Wystarczy go usunąć, jeśli nie jest potrzebny. Pamiętaj, aby zmienić port konektora HTTP na 80, jeśli zamierzasz działać autonomicznie.

  • Powyższa konfiguracja jest przeznaczona do użytku z Postgres. Jeśli używasz MySQL, będziesz musiał zastąpić zasób następującym kodem 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"
/>

W tym momencie możesz teraz skonfigurować Gerrit jako usługę i przełączyć system recenzji w tryb online.

  • Najpierw popraw ustawienia Tomcat pod kątem uruchamiania Gerrit jako usługi
  • Przejdź do tomcat / bin i edytuj service.bat

Opcje jvm są ustawiane osobno dla usługi nt. Musisz zmodyfikować plik service.bat przed zainstalowaniem usługi nt. Ten plik znajduje się w katalogu tomcat / bin wraz z innymi skryptami startup.bat i zamykania systemu. Przewiń w dół do następującej sekcji:

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

Zmodyfikuj ten wiersz, aby dopasować do następujących:

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

Początkowa pamięć, jvmM, powinna zdecydowanie być ustawiona na 512 Mb dla gerrit i rozszerzona, JvmMx, na 1024 Mb.

Teraz możesz wdrożyć gerrit jako usługę w systemie Windows. Po prostu wykonaj następujące czynności:

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>

Przejdź do menedżera serwera i otwórz węzeł Usługi. Otwórz właściwości Gerrit i upewnij się, że ustawiłeś typ uruchamiania na Automatyczny:

Usługi

Zastosuj i zamknij okno dialogowe.

OK ... Czy już skończyliśmy? Niestety nie, zostało jeszcze tylko kilka kroków. Powieś tam.

Teraz możesz rozpocząć usługę. Po prostu podświetl usługę Gerrit i kliknij opcję Start po lewej stronie.

Przejrzyj dzienniki w katalogu tomcat / log. Upewnij się, że nie ma zaległych błędów. Jeśli masz problemy, możesz zadawać pytania tutaj lub na liście mailingowej gerrit: http://groups.google.com/group/repo-discuss

Powinieneś mieć możliwość przejścia do przeglądarki i wprowadzenia adresu URL serwera, aby wyświetlić teraz Gerrit: http://review.corporation.com:8080

Zostaniesz poproszony o podanie klucza publicznego ssh. Jest to konieczne tylko, jeśli zamierzasz używać Git / Gerrit przez ssh zamiast HTTP. Poszedłem i ustawiłem to, ponieważ jest to dobra opcja.

Skonfiguruj SSH

Wygeneruj klucz ssh dla dostępu:

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

Zarejestruj nowe konto w Gerrit za pośrednictwem interfejsu internetowego z wybranym adresem e-mail. Pierwszy użytkownik, który zaloguje się i zarejestruje konto, zostanie automatycznie umieszczony w pełni uprzywilejowanej grupie Administratorzy, umożliwiając zarządzanie serwerami przez Internet i SSH. Kolejni użytkownicy zostaną automatycznie zarejestrowani jako użytkownicy nieuprzywilejowani.

Po zalogowaniu się jako użytkownik znajdziesz małego kreatora, aby zacząć. Kreator pomaga wypełnić:

  • Prawdziwe imię (widoczna nazwa w Gerrit)
  • Zarejestruj swój adres e-mail (należy to potwierdzić później)
  • Wybierz nazwę użytkownika, z którą chcesz się komunikować z Gerrit przez ssh + git
  • Serwer poprosi o klucz publiczny RSA. To klucz, który wygenerowaliśmy powyżej i nadszedł czas, aby upewnić się, że Gerrit wie o naszym nowym kluczu i może nas zidentyfikować.

    użytkownik @ host: ~ $ cat .ssh / id_rsa.pub

Skonfiguruj dostęp HTTP tylko dla zarejestrowanych użytkowników, chyba że Twój projekt jest otwarty dla publiczności:

wprowadź opis zdjęcia tutaj

Wygeneruj hasło HTTP

Pomimo skonfigurowania własnego loginu, nadal musisz wygenerować hasło do gerrit na serwer za pośrednictwem http / https. Przejdź do Ustawień-> Konfiguracja hasła HTTP i kliknij „Wygeneruj hasło”. Użyj tego hasła do wszystkich operacji git na http (s).

Teraz możemy przetestować Gerrit przez HTTP. Powinieneś być w stanie klonować wszelkie projekty istniejące w repozytorium, do którego odwołujesz się w konfiguracji Gerrit.

Testuj za pomocą operacji klonowania

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

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

Connection to localhost closed.

Sklonuj projekt z Gerrit za pośrednictwem 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.

Jeśli do tej pory się nie poddałeś, możesz się zrelaksować, powinieneś znaleźć działający system Gerrit Code Review obsługiwany przez system Windows 2008 Server :) Nie jest tak powszechny jak konfiguracja i jak możesz powiedzieć, gwarantuje wszystkie dodatkowe kroki. Jednak niektórzy z nas mają ograniczone zasoby i mogą korzystać tylko z tego, co zostało dostarczone. Mam nadzieję, że ten samouczek pomoże tym, którzy chcą uruchomić Gerrit w podobnym środowisku. Powinieneś być teraz gotowy, aby zacząć korzystać z Gerrit! Cieszyć się!

Aby uzyskać dodatkowe informacje dotyczące korzystania z Gerrit, zapoznaj się z instrukcją obsługi projektu Gerrit:

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

Dziękujemy Shawn Pierce za pomoc w IRC!

Dla przyszłego odniesienia

Samouczek został przekonwertowany na dokumentację projektu Gerrit. Dla zainteresowanych i potrzebujących dobrej referencji. Zobacz prośbę o łatkę tutaj:

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

Jason Huntley
źródło
bardzo ładne i pełne informacje. <p> domyślnie „Git dla Windows” z msysgit nie zawiera CGI.pm, jak radzisz sobie z gitweb?
larrycai
Rozwiązałem to też jakiś czas temu. Mam notatki, jak rozwiązać ten problem. Zobaczę, czy niedługo mogę dostarczyć tutaj aktualizację.
Jason Huntley
Cześć Larry, zaktualizowałem samouczek i załączyłem poprawkę dotyczącą problemu GIT.pm. Proszę oceń odpowiedź, jeśli uznasz ten post za przydatny. Dzięki!
Jason Huntley
czy gitweb może działać tak, jak to określasz jako CGI? Stworzyłem gitweb.bat, aby otoczył go bez apache <p> W przypadku CGI.pm wystarczy pobrać CGI.tar.gz i przesłać do katalogu / usr / lib / perl5 / site_perl. <p> samouczek jest bardzo kompletny, ale dla początkującego jest nieco trudny do naśladowania ;-)
larrycai
@larrycai, tak, napisałem ten samouczek jakiś czas temu i faktycznie został on ulepszony i przyczynił się do dokumentacji projektu Gerrit. Nadal jest sprawdzane, ale po zatwierdzeniu zaktualizuję to pytanie. Dziękuję za opinię. No i tak, gitweb na pewno będzie działał jako CGI przez Apache.
Jason Huntley,