Назад | Перейти на главную страницу

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

Я пытаюсь найти хорошие инструкции по установке 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

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

Я решил ответить на этот вопрос, так как он нужен сообществу Gerrit. В настоящее время не так много руководств по расширенным настройкам 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.). Ошибка BEGIN - компиляция прервана.

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

http://strawberryperl.com/releases.html

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

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

скопируйте содержимое библиотеки в 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
  • createdb --username = postgres -E UTF-8 -O gerrit2 reviewdb
  • Теперь вернитесь к хосту, если он другой, для Gerrit и создайте 3 каталога для развертывания Gerrit.
  • Создайте базовый каталог установки для gerrit, предпочтительно каталог с версией для содержимого развертывания войны.
  • Создайте подкаталог для tomcat
  • Создайте каталог конфигурации для развертывания схемы и конфигурации
  • Содержимое должно выглядеть так:
  • геррит
    • Кот
    • config
    • gerrit-X.X
  • Скачать 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-X.X
  • CD в ​​базовый каталог gerrit и запустите 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 в качестве серверов, мы настроим это позже.
  • Отредактируйте config \ 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 не нужен, если вы не собираетесь проксировать с помощью HTTP-сервера Apache. Я использую его для разгрузки 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. Перед установкой службы NT необходимо изменить файл service.bat. Этот файл находится в каталоге tomcat / bin вместе с другими сценариями startup.bat и завершения работы. Прокрутите вниз до следующего раздела:

"%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, определенно должна быть установлена ​​на 512 МБ для gerrit и расширена, JvmMx, на 1024 МБ.

Теперь вы готовы развернуть 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>

Перейдите к диспетчеру серверов и откройте узел Services. Откройте свойства 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-ключ для доступа:

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

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

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

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

    пользователь @ хост: ~ $ cat .ssh / id_rsa.pub

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

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

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

Теперь мы можем протестировать Gerrit через 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