Як встановити Gerrit Under Tomcat за допомогою LDAP?


11

Я намагаюся знайти хороші інструкції щодо встановлення Gerrit під Tomcat з підтримкою LDAP. Мені потрібно це встановити на сервері Windows 2008, бажано. Однак я можу вибрати для 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/isissue/detail? id = 292

Я завжди можу налаштувати цю пробну помилку, але я вважаю за краще заощадити час, якщо хтось уже вирішив проблеми.

Відповіді:


21

Я вирішив продовжити відповідь на це, оскільки це потрібне громаді Герріт. Наразі не так багато навчальних посібників, що висвітлюють розширені налаштування для Герріта. Я сподіваюся, що це допоможе іншим вивчити практику XP / Agile та змусити Герріта працювати. Це прекрасний інструмент, коли ви пройдете всі найтонші проблеми та налаштування.

Цей підручник із встановлення досить унікальний тим, що обслуговує конкретне середовище:

  • 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. Я хотів би зазначити виправлення для вирішення цього питання.

Перл, що входить до дистрибутива 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 :: Знайти -mFile :: Базова назва -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

Файл: полуниця-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 такі:

  • По-перше, увійдіть на сервер, на якому розміщуються поштові адреси, і створіть користувача та базу даних для Герріта
  • createuser --username = postgres -A -D -P -E gerrit2
  • createdb --username = postgres -E UTF-8 -O gerrit2 reviewdb
  • Тепер поверніться до хоста, якщо він різний, для Gerrit і створіть 3 каталоги для розгортання Gerrit
  • Створіть базовий каталог встановлення для герріту, бажано узагальненого каталогу для вмісту військової дислокації
  • Створіть підкаталог для tomcat
  • Створіть конфігураційний каталог для розгортання схеми та конфігурації
  • Вміст повинен виглядати приблизно так:
  • герріт
    • 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-XX
  • CD до базового каталогу герріта та запустіть 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, якщо ви не маєте наміру на з'єднання з 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 для запуску Герріта як сервісу
  • Goto 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 для герта, а розширена, 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>

Перейдіть до свого менеджера сервера та відкрийте вузол Services. Відкрийте властивості для Gerrit і переконайтеся, що ви встановили тип запуску на Автоматичне:

Послуги

Застосувати та закрити діалог.

Гаразд ... Ми вже закінчили? На жаль, ні, ще лише кілька кроків. Тримайся там.

Тепер ви готові розпочати послугу. Просто виділіть сервіс Gerrit і натисніть на кнопку "Пуск" зліва.

Перегляньте журнали в каталозі tomcat / log. Переконайтесь, що немає невирішених помилок. Якщо у вас є проблеми, можете задати питання тут або в списку розсилки герріт: http://groups.google.com/group/repo-discuss

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

Вам буде запропоновано ввести відкритий ключ ssh. Це необхідно лише в тому випадку, якщо ви плануєте використовувати Git / Gerrit через ssh замість HTTP. Я пішов вперед і налаштував це, тому що це хороший варіант.

Налаштування SSH

Створіть ключ ssh для доступу:

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

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

Після входу в систему як свого користувача ви знайдете невеликого майстра для початку роботи. Майстер допомагає заповнити:

  • Справжнє ім’я (видиме ім’я в Герріт)
  • Зареєструйте свій електронний лист (його потрібно підтвердити пізніше)
  • Виберіть ім'я користувача, з яким слід спілкуватися з Геррітом через ssh + git
  • Сервер запитає вас про відкритий ключ RSA. Це ключ, який ми створили вище, і настав час переконатися, що Джерріт знає про наш новий ключ і зможе визначити нас ним.

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

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

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

Створіть пароль HTTP

Незважаючи на те, що ви налаштували свій власний логін, вам все одно доведеться генерувати пароль для герріта до сервера через http / https. Перейдіть у свої Налаштування-> Конфігурація пароля HTTP та натисніть «Створити пароль». Використовуйте цей пароль для всіх git операцій над http (ими).

Тепер ми можемо протестувати Герріта через 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.

Клоніруйте проект від Герріта через 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, розміщеною на сервері Windows 2008 :) Це не так часто, як налаштування, і, як ви можете сказати, гарантує все додаткове кроки. Однак деякі з нас мають обмежені ресурси і можуть використовувати лише те, що передбачено. Я сподіваюся, що цей підручник допомагає тим, хто прагне запустити Герріта в подібному середовищі. Ви повинні бути готові зараз почати використовувати Герріт! Насолоджуйтесь!

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

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

Дякую Шаун Пірс за допомогу на IRC!

Для подальшого ознайомлення

Підручник було перетворено в документацію для проекту Герріт. Для тих, хто цікавиться, і потрібна хороша довідка. Будь ласка, дивіться запит на виправлення тут:

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


дуже приємна і повна інформація. <p> за замовчуванням "Git для windows" від msysgit не включає CGI.pm, як вам вдається працювати для gitweb?
larrycai

Я вирішив це теж надовго назад. У мене є нотатки, як вирішити цю проблему. Я побачу, чи зможу найближчим часом надати оновлення.
Джейсон Хантлі

Ей, Ларрі, я оновив підручник і включив виправлення випуску GIT.pm. Будь ласка, підкажіть відповідь, якщо Ви вважаєте, що ця публікація є корисною. Спасибі!
Джейсон Хантлі

чи може gitweb працювати так, як ви описуєте як CGI? Я створив gitweb.bat, щоб обернути його без apache <p> Для CGI.pm, просто завантажте CGI.tar.gz і завантажте в / usr / lib / perl5 / site_perl досить добре. <p> підручник дуже повний, але для початківця це
мало

@larrycai, так, я написав цей підручник деякий час назад, і він фактично був вдосконалений та сприяв проектній документації Джерріта. Він ще переглядається, але коли буде затверджено, я оновлю це питання. Дякуємо за відгук. Так і так, gitweb обов'язково працюватиме як CGI через Apache.
Джейсон Хантлі
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.