Как установить Gerrit под Tomcat с LDAP?

11

Я пытаюсь найти хорошие инструкции для установки Gerrit под Tomcat с поддержкой LDAP. Мне нужно, чтобы это было установлено на Windows 2008 Server, желательно. Тем не менее, я могу выбрать Linux, если это невозможно.

Инструкция Gerrit распространяется только на установку под причалом:

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

Там не так много, чтобы работать, если я хочу настроить это в разных средах.

Я нашел несколько полезных ссылок, но ничего не объединяло все настройки.

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

Я всегда могу настроить это методом проб и ошибок, но я бы предпочел сэкономить время, если кто-то уже поработал над проблемами.

Джейсон Хантли
источник

Ответы:

21

Я решил пойти дальше и ответить на этот вопрос, так как он необходим сообществу Геррит. В настоящее время не так много учебных пособий по расширенным настройкам для Gerrit. Я надеюсь, что это поможет другим изучить XP / Agile практики и запустить Gerrit. Это отличный инструмент, когда вы преодолеете все тонкие задачи и детали настройки.

Этот учебник по установке довольно уникален тем, что он обслуживает определенную среду:

  • Windows 2008 Server
  • PostgreSql
  • Кот
  • LDAP через Active Directory
  • Геррит
  • msysgit

Прежде чем начать, убедитесь, что в вашей системе установлен git. Загрузите последний инструмент командной строки msysgit для Windows с http://code.google.com/p/msysgit/downloads/list

Убедитесь, что вы получили «Полный установщик для официального Git для Windows».

  • Установите MSysGit
  • Используйте значения по умолчанию при запросе
  • Настроить Git

Если вы собираетесь использовать версию GitWeb в msysgit, вы заметите некоторые проблемы с CGI.pm. Я хотел бы упомянуть исправление, чтобы решить эту проблему.

Perl, включенный в дистрибутив msysgit, начиная с 1.7.8, не работает, http://groups.google.com/group/msysgit/browse_thread/thread/ba3501f1f0ed95af . Папка unicore отсутствует вместе с utf8_heavy.pl и CGI.pm. Вы можете проверить, проверив наличие модулей Perl:

perl -mCGI -mEncode -mFcntl -mFile :: Find -mFile :: Basename -e "" Вероятно, вы столкнетесь со следующим исключением:

$ perl -mCGI -mEncode -mFcntl -mFile :: Find -mFile :: Basename -e "" Не удается найти CGI.pm в @INC (@INC содержит: /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.). НАЧАЛО сбой - компиляция прервана.

Если вам не хватает CGI.pm, вам придется развернуть модуль в среде msys: вам нужно будет извлечь их из дистрибутива 5.8.8 в:

http://strawberryperl.com/releases.html

Файл: strawberry-perl-5.8.8.3.zip

содержимое: bin / lib / site /

скопируйте содержимое lib в msysgit / lib / perl5 / 5.8.8 и перезапишите существующие файлы.

Если вы используете командную строку git, добавьте свои глобальные параметры конфигурации в git:

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

Убедитесь, что используемые здесь учетные данные соответствуют учетным данным в gerrit. В противном случае Gerrit отклонит ваш запрос.

Инструкции по установке и настройке Gerrit следующие:

  • Сначала войдите на сервер хостинга postgres и создайте пользователя и базу данных для Gerrit.
  • createuser --username = postgres -A -D -P -E gerrit2
  • createb --username = postgres -E UTF-8 -O gerrit2 reviewdb
  • Теперь переключитесь обратно на хост, если он отличается, для Gerrit и создайте 3 каталога для развертывания Gerrit.
  • Создайте базовый каталог установки для gerrit, предпочтительно версионный каталог для содержимого развертывания war
  • Создать подкаталог для tomcat
  • Создайте каталог конфигурации для развертывания схемы и конфигурации
  • Содержимое должно выглядеть так:
  • Геррит
    • Кот
    • конфиг
    • Геррит-XX
  • Загрузите tomcat с http://tomcat.apache.org/download-60.cgi
  • Примечание. Большинство дистрибутивов Linux будут иметь это в своих менеджерах обновлений. Пример: использование Synaptic в Ubuntu
  • Разверните свою установку Tomcat в каталог Tomcat
  • Загрузите последнюю версию gerrit.war с http://code.google.com/p/gerrit/downloads/list .
  • скопировать файл в базовый каталог gerrit
  • распаковать файл войны в подкаталог gerrit-XX
  • CD в ​​каталог Gerrit Base и запустите java -jar gerrit-2.4-rc0.war init -d config
    • Эта конфигурация включает в себя дополнительные функции для LDAP и запуска за прокси-сервером, не настраивайте эти параметры, если они не нужны.

Выполнение:

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.
  • Не беспокойтесь о настройке Gerrit в качестве серверов, мы настроим это позже
  • Изменить конфигурацию \ etc \ gerrit.config
  • в разделе gerrit добавьте параметр для conicalWebUrl = http://review.corporation.com/
  • Если ваши проекты не соответствуют традиционному формату project.git, добавьте следующий раздел:
  • добавьте местоположение файла и URL на ваш сервер gitweb вместе со связанными свойствами

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}
  • Если вы используете http / https для обслуживания, добавьте следующее:

Gerrit.config Обновление:

[download]
scheme = http
  • Если вы используете LDAP с активным каталогом, вам нужно изменить настройки и добавить дополнительные настройки для поддержки AD:

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>
  • Вам не нужен коннектор AJP, если вы не собираетесь проксировать с Apache HTTP Server. Я использую его для разгрузки SSL-шифрования и управления сертификатами. Просто удалите его, если не нужно. Обязательно измените порт HTTP-соединителя на 80, если вы собираетесь работать в автономном режиме.

  • Приведенная выше конфигурация предназначена для использования с postgres. Если вы используете MySQL, вам придется заменить ресурс следующим для 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"
/>

Теперь вы готовы к настройке Gerrit как службы и включите систему проверки в режиме онлайн.

  • Сначала настройте параметры Tomcat для запуска Gerrit как службы.
  • Перейти к Tomcat / bin и редактировать service.bat

Параметры jvm устанавливаются отдельно для службы nt. Вы должны изменить файл service.bat перед установкой службы nt. Этот файл находится в каталоге tomcat / bin с другими сценариями startup.bat и shutdown. Прокрутите вниз до следующего раздела:

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

Измените эту строку, чтобы она соответствовала следующему:

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

Начальная память, jvmMs, определенно должна быть установлена ​​на 512Mb для gerrit и расширена, JvmMx, до 1024Mb.

Теперь вы готовы развернуть Gerrit как сервис под Windows. Просто выполните следующее:

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>

Перейдите в диспетчер серверов и откройте узел «Службы». Откройте свойства для Gerrit и убедитесь, что вы установили тип запуска на Автоматический:

Сервисы

Применить и закрыть диалог.

ОК ... Мы уже закончили? К сожалению, нет, осталось всего несколько шагов. Повесить там.

Теперь вы готовы начать обслуживание. Просто выделите сервис Gerrit и нажмите опцию «Пуск» слева.

Просмотрите журналы в каталоге tomcat / log. Убедитесь, что нет ошибок. Если у вас есть проблемы, вы можете задать вопросы здесь или в списке рассылки gerrit: http://groups.google.com/group/repo-discuss

Вы должны иметь возможность перейти в свой браузер и ввести URL-адрес своего сервера, чтобы просмотреть Gerrit сейчас: http://review.corporation.com:8080

Вам будет предложено ввести ваш открытый ключ ssh. Это необходимо, только если вы собираетесь использовать Git / Gerrit через ssh вместо HTTP. Я пошел вперед и настроил его, потому что это хороший вариант.

Настроить SSH

Сгенерируйте ключ ssh для доступа:

Администратор @ SERVER ~ / test $ ssh-keygen -t rsa

Зарегистрируйте новую учетную запись в Gerrit через веб-интерфейс с адресом электронной почты на ваш выбор. Первый пользователь, который войдет в систему и зарегистрирует учетную запись, будет автоматически помещен в полностью привилегированную группу администраторов, что позволит управлять сервером через Интернет и через SSH. Последующие пользователи будут автоматически зарегистрированы как непривилегированные пользователи.

После того, как вы вошли в систему как пользователь, вы найдете небольшого мастера для начала работы. Мастер поможет вам заполнить:

  • Настоящее имя (видимое имя в Геррите)
  • Зарегистрируйте вашу электронную почту (это должно быть подтверждено позже)
  • Выберите имя пользователя для связи с Gerrit через ssh + git
  • Сервер запросит у вас открытый ключ RSA. Это ключ, который мы сгенерировали выше, и пришло время убедиться, что Геррит знает о нашем новом ключе и может идентифицировать нас по нему.

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

Настройте HTTP-доступ только для зарегистрированных пользователей, если ваш проект не открыт для общественности:

введите описание изображения здесь

Создать HTTP-пароль

Несмотря на то, что вы настроили свой собственный логин, вам все равно нужно сгенерировать пароль для gerrit на сервер через http / https. Перейдите в раздел «Настройки» -> «Настройка пароля HTTP» и нажмите «Создать пароль». Используйте этот пароль для всех операций git через http (s).

Теперь мы можем проверить Геррит через HTTP. Вы должны иметь возможность клонировать любые проекты, существующие в репозитории, на который вы ссылаетесь в конфигурации Gerrit.

Тест с операцией клона

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

Протестируйте свой аккаунт 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.

Клонировать проект от Gerrit через 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.

Если вы еще не сдавались, вы можете расслабиться, вам следует воспользоваться работающей системой Gerrit Code Review, размещенной на Windows 2008 Server :) Это не так часто, как установка, и, как вы можете сказать, гарантирует все дополнительные шаги. Однако некоторые из нас имеют ограниченные ресурсы и могут использовать только то, что предоставлено. Я надеюсь, что это руководство поможет тем, кто хочет запустить Gerrit в аналогичной среде. Вы должны быть готовы сейчас начать использовать Gerrit! Наслаждайтесь!

Для получения дополнительной информации об использовании Gerrit, пожалуйста, обратитесь к руководству пользователя проекта Gerrit:

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

Спасибо Шон Пирс за помощь в IRC!

Для дальнейшего использования

Учебник был преобразован в документацию по проекту Gerrit. Для тех, кому интересно и нужна хорошая справка. Пожалуйста, посмотрите запрос патча здесь:

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

Джейсон Хантли
источник
Очень хорошая и полная информация. <p> По умолчанию "Git for windows" из msysgit не включает CGI.pm. Как вам удается работать с gitweb?
Ларричай
Я решил это слишком давно. У меня есть заметки, как решить эту проблему. Я посмотрю, смогу ли я предоставить обновление здесь в ближайшее время.
Джейсон Хантли
Привет, Ларри, я обновил учебник и включил исправление для проблемы GIT.pm. Пожалуйста, подтвердите ответ, если вы считаете этот пост полезным. Благодарность!
Джейсон Хантли
GitWeb может работать так, как вы описываете как CGI? Я создал gitweb.bat, чтобы обернуть его без apache <p>. Для CGI.pm просто скачайте CGI.tar.gz и загрузите в / usr / lib / perl5 / site_perl. Это достаточно хорошо. <P> учебник очень полный, но за новичком трудно следовать ;-)
larrycai
@larrycai, да, я написал это руководство некоторое время назад, и оно действительно было улучшено и внесено в проектную документацию Геррита. Он еще рассматривается, но когда он будет одобрен, я обновлю этот вопрос. Спасибо за отзыв. Да, да, gitweb определенно будет работать как CGI через Apache.
Джейсон Хантли