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

После того, как слишком много времени потратило спотыкание вокруг, я наконец обнаружил причину своей проблемы. Короче говоря, я получал "Разрешение, отклоненное" для моих пользователей неадминистратора, потому что на DC, Группа пользователей не имеет, "Позволяют вход в систему локально" пользовательское право. Когда sshd пытался переключить контекст от учетной записи sshd сервиса до непривилегированного пользователя, операция, отказавшая, потому что у пользователя не было входа в систему локально разрешением.

Для фиксации я должен был отредактировать политику Контроллера домена По умолчанию дать Группе пользователей Позволить вход в систему, локально правильный. Это может быть найдено в управлении Групповой политикой> (Ваш домен)> Объекты Групповой политики. Щелкните правой кнопкой, Редактирование. Перейдите к Конфигурации компьютера> политики> Windows Settings> Настройки безопасности> Локальные политики> Пользовательское Присвоение Прав. Откройте вход в систему Allow локально и добавьте Группу пользователей (или, можно хотеть создать группу 'пользователей SSH' и добавить это вместо этого).

После редактирования политики, выполненной gpupdate в командной строке для обновления изменений и Вы хороши для движения.

11
задан 27 April 2012 в 01:12
1 ответ

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

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

  • Windows 2008 Server
  • PostgreSql
  • Tomcat
  • LDAP через Active Directory
  • Gerrit
  • 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, включенный в дистрибутив 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, включенный в дистрибутив 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 следующие:

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

Services

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

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

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

Просмотрите журналы в каталоге tomcat / log. Убедитесь, что нет выдающихся ошибок. Если у вас возникнут проблемы, вы можете задать вопросы здесь или в списке рассылки gerrit: Убедитесь, что нет выдающихся ошибок. Если у вас возникнут проблемы, вы можете задать вопросы здесь или в списке рассылки gerrit: Убедитесь, что нет выдающихся ошибок. Если у вас возникнут проблемы, вы можете задать вопросы здесь или в списке рассылки gerrit: 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. Последующие пользователи будут автоматически зарегистрированы как непривилегированные.

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

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

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

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

enter image description here

Сгенерируйте 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 Система проверки кода, размещенная на 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

21
ответ дан 2 December 2019 в 21:46

Теги

Похожие вопросы