¿Cómo instalo Gerrit bajo Tomcat con LDAP?

11

Estoy tratando de encontrar buenas instrucciones para instalar Gerrit bajo Tomcat con soporte LDAP. Necesito esto instalado en un servidor de Windows 2008, preferiblemente. Sin embargo, puedo optar por Linux si no es posible.

Las instrucciones de Gerrit solo cubren la instalación debajo del muelle:

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

No hay mucho de qué trabajar si deseo configurar esto en diferentes entornos.

Encontré algunos enlaces útiles, pero nada que uniera la configuración.

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

Siempre puedo configurar esto como prueba y error, pero preferiría ahorrar tiempo si alguien ya ha solucionado los problemas.

Jason Huntley
fuente

Respuestas:

21

Decidí seguir adelante con una respuesta, ya que es algo necesario para la comunidad de Gerrit. Actualmente, no hay muchos tutoriales que cubran configuraciones avanzadas para Gerrit. Espero que esto ayude a otros a explorar las prácticas de XP / Agile y poner a Gerrit en funcionamiento. Es una gran herramienta una vez que superas todos los desafíos y detalles de configuración sutiles.

Este tutorial de instalación es bastante único, ya que sirve el entorno específico:

  • Windows 2008 Server
  • PostgreSql
  • Gato
  • LDAP a través de Active Directory
  • Gerrit
  • msysgit

Antes de comenzar, asegúrese de tener instalado git en su sistema. Descargue la última herramienta de línea de comandos de msysgit para Windows desde http://code.google.com/p/msysgit/downloads/list

Asegúrese de obtener el "Instalador completo para Git oficial para Windows".

  • Instalar MSysGit
  • Utilice los valores predeterminados cuando se le solicite
  • Configurar Git

Si tiene la intención de utilizar la versión de GitWeb en msysgit, notará algunos problemas relacionados con CGI.pm. Me gustaría mencionar una solución para resolver este problema.

El perl incluido con la distribución msysgit, a partir de 1.7.8, está roto, http://groups.google.com/group/msysgit/browse_thread/thread/ba3501f1f0ed95af . Falta la carpeta unicore junto con utf8_heavy.pl y CGI.pm. Puedes verificarlo buscando módulos perl:

perl -mCGI -mEncode -mFcntl -mFile :: Find -mFile :: Basename -e "" Probablemente encontrará la siguiente excepción:

$ perl -mCGI -mEncode -mFcntl -mFile :: Find -mFile :: Basename -e "" No se puede encontrar CGI.pm en @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.). BEGIN falló - la compilación fue abortada.

Si falta CGI.pm, deberá implementar el módulo en el entorno msys: deberá recuperarlos de la distribución 5.8.8 en:

http://strawberryperl.com/releases.html

Archivo: strawberry-perl-5.8.8.3.zip

contenido: bin / lib / site /

copie el contenido de lib en msysgit / lib / perl5 / 5.8.8 y sobrescriba los archivos existentes.

Si usa la línea de comandos git, agregue su configuración global a git:

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

Asegúrese de que las credenciales utilizadas aquí coincidan con las credenciales en gerrit. De lo contrario, gerrit rechazará su solicitud.

Las instrucciones para instalar y configurar Gerrit son las siguientes:

  • Primero, inicie sesión en el servidor que aloja postgres y cree un usuario y una base de datos para Gerrit
  • createuser --username = postgres -A -D -P -E gerrit2
  • createdb --username = postgres -E UTF-8 -O gerrit2 reviewdb
  • Ahora, vuelva al host, si es diferente, para Gerrit y cree 3 directorios para implementar Gerrit
  • Cree un directorio de instalación base para gerrit, preferiblemente un directorio versionado para los contenidos de despliegue de guerra
  • Crear un subdirectorio para tomcat
  • Cree un directorio de configuración para implementar el esquema y la configuración
  • El contenido debería verse así:
  • gerrit
    • gato
    • config
    • gerrit-XX
  • Descargue tomcat de http://tomcat.apache.org/download-60.cgi
  • Nota: La mayoría de las distribuciones de Linux lo tendrán disponible de sus administradores de actualizaciones. Ejemplo: usar Synaptic en Ubuntu
  • Implemente su instalación de tomcat en el directorio de tomcat
  • Descargue la última versión de gerrit.war de http://code.google.com/p/gerrit/downloads/list .
  • copiar el archivo al directorio base de gerrit
  • extraer el archivo war al subdirectorio gerrit-XX
  • CD al directorio base de gerrit y ejecutar java -jar gerrit-2.4-rc0.war init -d config
    • Esta configuración incluye extras para LDAP y se ejecuta detrás de un proxy, no configure estas opciones si no es necesario.

Ejecutar:

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.
  • No se preocupe por configurar Gerrit como servidores, lo configuraremos más tarde
  • Editar config \ etc \ gerrit.config
  • En la sección Gerrit, agregue una configuración para conicalWebUrl = http://review.corporation.com/
  • Si sus proyectos no siguen el formato tradicional project.git, agregue la siguiente sección:
  • agregue la ubicación del archivo y la url a su servidor gitweb junto con las propiedades asociadas

Actualización de 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}
  • Si está utilizando http / https para servir, agregue lo siguiente:

Actualización de gerrit.config:

[download]
scheme = http
  • Si está utilizando LDAP con el directorio activo, deberá ajustar su configuración y agregar configuraciones adicionales para admitir AD:

Actualización de 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>
  • No necesita el conector AJP a menos que tenga la intención de proxy con el servidor Apache HTTP. Lo uso para descargar el cifrado SSL y administrar certificados. Simplemente quítelo si no es necesario. Asegúrese de cambiar el puerto del conector HTTP a 80 si tiene la intención de ejecutarlo de manera independiente.

  • La configuración anterior es para uso con postgres. Si está utilizando MySQL, deberá reemplazar el recurso con lo siguiente para 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"
/>

En este punto, ahora está listo para configurar Gerrit como un servicio y poner el sistema de revisión en línea.

  • Primero, modifique la configuración de Tomcat para ejecutar Gerrit como servicio
  • Ir a tomcat / bin y editar service.bat

Las opciones de jvm se configuran por separado para el servicio nt. Debe modificar su archivo service.bat antes de instalar el servicio nt. Este archivo reside en el directorio tomcat / bin con los otros scripts startup.bat y shutdown. Desplácese hacia abajo a la siguiente sección:

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

Modifique esta línea para que coincida con lo siguiente:

"%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 inicial, jvmMs, definitivamente debe establecerse en 512Mb para gerrit y extendida, JvmMx, a 1024Mb.

Ahora está listo para implementar gerrit como un servicio en Windows. Simplemente ejecute lo siguiente:

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>

Vaya a su administrador de servidor y abra el nodo Servicios. Abra las propiedades de Gerrit y asegúrese de establecer el tipo de inicio en Automático:

Servicios

Aplicar y cerrar el diálogo.

OK ... ¿Ya hemos terminado? Lamentablemente no, solo quedan unos pocos pasos más. Cuelga ahí.

Ahora estás listo para comenzar el servicio. Simplemente resalte el servicio Gerrit y haga clic en la opción Inicio a la izquierda.

Revise los registros en el directorio tomcat / log. Asegúrese de que no haya errores pendientes. Si tiene problemas, puede hacer preguntas aquí o en la lista de correo de gerrit: http://groups.google.com/group/repo-discuss

Debería poder ir a su navegador e ingresar la URL de su servidor para ver Gerrit ahora: http://review.corporation.com:8080

Se le pedirá que ingrese su clave pública ssh. Esto solo es necesario si tiene la intención de usar Git / Gerrit a través de ssh en lugar de HTTP. Seguí adelante y lo configuré porque es una buena opción.

Configurar SSH

Genere una clave ssh para acceder:

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

Registre una nueva cuenta en Gerrit a través de la interfaz web con la dirección de correo electrónico que elija. El primer usuario que inicie sesión y registre una cuenta se colocará automáticamente en el grupo de Administradores con todos los privilegios, lo que permitirá la administración del servidor a través de la web y SSH. Los usuarios posteriores se registrarán automáticamente como usuarios sin privilegios.

Una vez que haya iniciado sesión como usuario, encontrará un pequeño asistente para comenzar. El asistente te ayuda a completar:

  • Nombre real (nombre visible en Gerrit)
  • Registre su correo electrónico (debe confirmarse más tarde)
  • Seleccione un nombre de usuario con el que comunicarse con Gerrit a través de ssh + git
  • El servidor le pedirá una clave pública RSA. Esa es la clave que generamos anteriormente, y es hora de asegurarnos de que Gerrit conozca nuestra nueva clave y pueda identificarnos con ella.

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

Configure el acceso HTTP solo para usuarios registrados, a menos que su proyecto esté abierto al público:

ingrese la descripción de la imagen aquí

Generar una contraseña HTTP

A pesar de haber configurado su propio inicio de sesión, aún debe generar una contraseña para gerrit al servidor a través de http / https. Vaya a Configuración -> Configuración de contraseña HTTP y haga clic en 'Generar contraseña'. Use esta contraseña para todas las operaciones de git en http (s).

Ahora podemos probar Gerrit a través de HTTP. Debería poder clonar cualquier proyecto existente en el repositorio al que haya hecho referencia en la configuración de Gerrit.

Prueba con operación de clonación

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

Pon a prueba tu cuenta 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.

Clonar un proyecto de Gerrit a través de 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.

Si aún no se ha rendido, puede relajarse, debería encontrarse con un sistema de revisión de código Gerrit en funcionamiento alojado por un servidor de Windows 2008 :) No es tan común como una configuración y, como puede ver, garantiza todo el extra pasos. Sin embargo, algunos de nosotros tenemos recursos limitados y solo podemos usar lo que se proporciona. Espero que este tutorial ayude a aquellos que buscan ejecutar Gerrit en un entorno similar. ¡Ahora debería estar listo para comenzar a usar Gerrit! ¡Disfrutar!

Para obtener más información sobre el uso de Gerrit, consulte la guía del usuario del proyecto Gerrit:

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

¡Gracias Shawn Pierce por la ayuda en IRC!

Para futura referencia

El tutorial se ha convertido en documentación para el proyecto Gerrit. Para aquellos interesados ​​y que necesitan una buena referencia. Consulte la solicitud de parche aquí:

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

Jason Huntley
fuente
información muy agradable y completa. <p> predeterminado "Git for windows" de msysgit no incluye CGI.pm, ¿cómo se las arregla para trabajar para gitweb?
larrycai
Lo resolví también hace un tiempo. Tengo notas sobre cómo resolver ese problema. Veré si puedo proporcionar una actualización aquí en breve.
Jason Huntley
Hola Larry, actualicé el tutorial e incluí la solución para el problema GIT.pm. Vota la respuesta si encuentras útil esta publicación. ¡Gracias!
Jason Huntley
Cómo funciona el gitweb como usted describe como CGI? Creé gitweb.bat para envolverlo sin apache <p> Para CGI.pm, simplemente descargue CGI.tar.gz y cárguelo en / usr / lib / perl5 / site_perl es lo suficientemente bueno. <p> el tutorial es muy completo, pero es un poco difícil de seguir para un principiante ;-)
larrycai
@larrycai, sí, escribí este tutorial hace un tiempo y en realidad se ha mejorado y contribuido a la documentación del proyecto de Gerrit. Todavía está bajo revisión, pero cuando se apruebe, actualizaré esta pregunta. Gracias por la respuesta. Ah, sí, gitweb definitivamente se ejecutará como CGI a través de Apache.
Jason Huntley