LDAP를 사용하여 Tomcat에서 Gerrit를 어떻게 설치합니까?


11

LDAP를 지원하는 Tomcat에서 Gerrit를 설치하는 데 필요한 지침을 찾으려고합니다. 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 커뮤니티에 필요하기 때문에 이에 대한 답변을 계속하기로 결정했습니다. 현재 Gerrit의 고급 설정을 다루는 자습서는 많지 않습니다. 나는 이것이 다른 사람들이 XP / Agile 관행을 탐구하고 Gerrit를 시작하고 실행하는 데 도움이되기를 희망합니다. 미묘한 설정 문제와 세부 사항을 모두 극복하면 훌륭한 도구입니다.

이 설치 튜토리얼은 특정 환경을 제공한다는 점에서 다소 독특합니다.

  • Windows 2008 서버
  • PostgreSql
  • 수코양이
  • Active Directory를 통한 LDAP
  • 게릿
  • msysgit

시작하기 전에 시스템에 git이 설치되어 있는지 확인하십시오. http://code.google.com/p/msysgit/downloads/list 에서 Windows 용 최신 msysgit 명령 줄 도구를 다운로드하십시오 .

"공식 Git for Windows 용 전체 설치 관리자"가 설치되어 있는지 확인하십시오.

  • MSysGit 설치
  • 프롬프트가 표시되면 기본값 사용
  • 힘내 구성

msysgit에서 GitWeb 버전을 사용하려는 경우 CGI.pm 관련 문제가 있습니다. 이 문제를 해결하기위한 픽스를 언급하고 싶습니다.

1.7.8부터 msysgit 배포판에 포함 된 perl은 http://groups.google.com/group/msysgit/browse_thread/thread/ba3501f1f0ed95af에서 손상되었습니다 . utf8_heavy.pl 및 CGI.pm과 함께 unicore 폴더가 누락되었습니다. 펄 모듈을 확인하여 확인할 수 있습니다 :

perl -mCGI -mEncode -mFcntl -mFile :: Find -mFile :: Basename -e ""다음 예외가 발생할 수 있습니다.

$ perl -mCGI -mEncode -mFcntl -mFile :: Find -mFile :: Basename -e ""@INC에서 CGI.pm을 찾을 수 없습니다 (@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 /

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
  • createdb --username = postgres -E UTF-8 -O gerrit2 reviewdb
  • 이제 Gerrit의 경우 호스트로 다시 전환하고 Gerrit를 배치하기위한 3 개의 디렉토리를 작성하십시오.
  • gerrit의 기본 설치 디렉토리, 바람직하게는 war 배치 컨텐츠의 버전 화 된 디렉토리를 작성하십시오.
  • tomcat에 대한 서브 디렉토리 작성
  • 스키마 및 구성을 배치하기위한 구성 디렉토리 작성
  • 내용은 다음과 같아야합니다.
  • Gerrit
    • 수코양이
    • 설정
    • 거릿 -XX
  • http://tomcat.apache.org/download-60.cgi 에서 Tomcat을 다운로드하십시오.
  • 참고 : 대부분의 Linux 배포판에는 업데이트 관리자가 제공합니다. 예 : 우분투에서 시냅틱 사용
  • Tomcat 설치를 Tomcat 디렉토리에 배포하십시오.
  • http://code.google.com/p/gerrit/downloads/list 에서 최신 gerrit.war을 다운로드 하십시오 .
  • 파일을 기본 gerrit 디렉토리로 복사
  • war 파일을 gerrit-XX 서브 디렉토리로 추출하십시오.
  • gerrit 기본 디렉토리에 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 형식을 따르지 않으면 다음 섹션을 추가하십시오.
  • locaiton 및 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
  • Active Directory와 함께 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>
  • Apache HTTP Server로 프록시하지 않으려는 경우 AJP 커넥터가 필요하지 않습니다. 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를 서비스로 구성하고 검토 시스템을 온라인으로 전환 할 준비가되었습니다.

  • 먼저 Gerrit를 서비스로 실행하기위한 Tomcat 설정 조정
  • tomcat / bin으로 이동하여 service.bat를 편집하십시오.

jvm 옵션은 nt 서비스에 대해 별도로 설정됩니다. nt 서비스를 설치하기 전에 service.bat 파일을 수정해야합니다. 이 파일은 다른 startup.bat 및 shutdown 스크립트와 함께 tomcat / bin 디렉토리에 있습니다. 다음 섹션으로 스크롤하십시오.

"%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는 gerrit의 경우 512Mb로, JvmMx는 1024Mb로 확장되어야합니다.

이제 창에서 gerrit를 서비스로 배포 할 준비가되었습니다. 다음을 실행하십시오.

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 디렉토리에서 로그를 검토하십시오. 미해결 오류가 없는지 확인하십시오. 문제가있는 경우 http://groups.google.com/group/repo-discuss 또는 여기에서 gerrit 메일 링리스트에 질문을 할 수 있습니다.

Gerrit를 보려면 브라우저로 이동하여 서버의 URL을 입력하십시오 ( http://review.corporation.com:8080).

ssh 공개 키를 입력하라는 메시지가 표시됩니다. HTTP 대신 ssh를 통해 Git / Gerrit를 사용하려는 경우에만 필요합니다. 나는 그것을 가질 수있는 좋은 옵션이기 때문에 계속 진행했다.

SSH 구성

액세스 할 SSH 키를 생성하십시오.

관리자 @ 서버 ~ / 테스트 $ ssh-keygen -t rsa

선택한 이메일 주소로 웹 인터페이스를 통해 Gerrit에 새 계정을 등록하십시오. 처음으로 로그인하고 계정을 등록한 사용자는 모든 권한을 가진 관리자 그룹에 자동으로 배치되어 웹 및 SSH를 통한 서버 관리가 가능합니다. 후속 사용자는 권한이없는 사용자로 자동 등록됩니다.

사용자로 로그인하면 시작할 수있는 작은 마법사가 나타납니다. 마법사는 다음을 작성하는 데 도움이됩니다.

  • 실명 (Gerrit에서 보이는 이름)
  • 이메일을 등록하십시오 (나중에 확인해야합니다)
  • ssh + git을 통해 Gerrit와 통신 할 사용자 이름을 선택하십시오.
  • 서버에서 RSA 공개 키를 요청합니다. 그것이 우리가 위에서 생성 한 열쇠이며, Gerrit가 우리의 새로운 열쇠를 알고 그것을 통해 우리를 식별 할 수 있도록해야 할 때입니다.

    user @ host : ~ $ 고양이 .ssh / id_rsa.pub

프로젝트가 공개되지 않은 경우 등록 된 사용자에 대해서만 HTTP 액세스를 구성하십시오.

여기에 이미지 설명을 입력하십시오

HTTP 비밀번호 생성

자신의 로그인을 구성했지만 http / https를 통해 서버에 gerrit의 비밀번호를 생성해야합니다. 설정-> HTTP 비밀번호 구성으로 이동하여 '비밀번호 생성'을 클릭하십시오. http를 통한 모든 git 작업에이 비밀번호를 사용하십시오.

이제 HTTP를 통해 Gerrit를 테스트 할 수 있습니다. 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를 통해 Gerrit에서 프로젝트를 복제하십시오.

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.

지금까지 포기하지 않았다면 휴식을 취할 수 있습니다. Windows 2008 Server에서 호스팅하는 Gerrit Code Review 시스템을 사용하여 자신을 찾아야합니다. 단계. 그러나 우리 중 일부는 자원이 제한되어 있으며 제공된 것만 사용할 수 있습니다. 이 튜토리얼이 Gerrit를 비슷한 환경에서 실행하려는 사람들에게 도움이되기를 바랍니다. Gerrit 사용을 시작할 준비가되었습니다! 즐겨!

Gerrit 사용에 대한 자세한 내용은 Gerrit 프로젝트의 사용자 안내서를 참조하십시오.

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

IRC에 대한 도움을 주신 Shawn Pierce 에게 감사드립니다 !

향후 참조를 위해

튜토리얼은 Gerrit 프로젝트의 문서로 변환되었습니다. 관심이 있고 좋은 참조가 필요한 사람들을 위해. 패치 요청은 여기를 참조하십시오 :

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


아주 훌륭하고 완전한 정보. <p> msysgit의 기본 "Git for windows"에는 CGI.pm이 포함되어 있지 않습니다. 어떻게 gitweb에서 작업 할 수 있습니까?
larrycai

나는 너무 오랫동안 그것을 해결했다. 이 문제를 해결하는 방법에 대한 메모가 있습니다. 여기서 업데이트를 제공 할 수 있는지 살펴 보겠습니다.
Jason Huntley

Larry, 튜토리얼을 업데이트하고 GIT.pm 문제에 대한 픽스를 포함 시켰습니다. 이 게시물이 유용하다고 생각되면 답변을 찬성하십시오. 감사!
Jason Huntley

gitweb은 CGI로 묘사 된 것처럼 작동합니까? 아파치없이 래핑하기 위해 gitweb.bat를 만들었습니다. <p> CGI.pm의 경우 CGI.tar.gz를 다운로드하고 / usr / lib / perl5 / site_perl로 업로드하면 충분합니다. <p> 튜토리얼은 매우 완전하지만 초보자에게는 따라하기가 약간 어렵다 ;-)
larrycai

@larrycai, 예, 나는이 튜토리얼을 얼마 전에 썼고 실제로 개선되어 Gerrit의 프로젝트 문서에 기여했습니다. 아직 검토 중이지만 승인되면이 질문을 업데이트하겠습니다. 조언 감사합니다. gitweb은 Apache를 통해 CGI로 실행됩니다.
Jason Huntley
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.