Làm cách nào để cài đặt Gerrit Under Tomcat với LDAP?


11

Tôi đang cố gắng tìm hướng dẫn tốt để cài đặt Gerrit trong Tomcat với hỗ trợ LDAP. Tôi cần cài đặt này trên Máy chủ Windows 2008, tốt nhất là. Tuy nhiên, tôi có thể chọn Linux nếu không thể.

Các hướng dẫn Gerrit chỉ bao gồm cài đặt theo cầu tàu:

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

Không có nhiều việc phải làm nếu tôi muốn thiết lập điều này trong các môi trường khác nhau.

Tôi đã tìm thấy một vài liên kết hữu ích nhưng không có gì mang tất cả các thiết lập lại với nhau.

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.vn/p/gerrit/issues/detail? id = 292

Tôi luôn có thể thiết lập bản dùng thử và lỗi này, nhưng tôi muốn tiết kiệm thời gian hơn nếu ai đó đã xử lý các vấn đề.

Câu trả lời:


21

Tôi quyết định đi trước một câu trả lời vì đây là loại cần thiết cho Cộng đồng Gerrit. Hiện tại, không có nhiều hướng dẫn bao gồm các thiết lập nâng cao cho Gerrit. Tôi hy vọng điều này sẽ giúp những người khác khám phá các thực tiễn XP / Agile và giúp Gerrit hoạt động. Đây là một công cụ tuyệt vời khi bạn vượt qua tất cả các thách thức và chi tiết thiết lập tinh tế.

Hướng dẫn cài đặt này khá độc đáo ở chỗ nó phục vụ môi trường cụ thể:

  • Máy chủ Windows 2008
  • PostgreSql
  • Mèo con
  • LDAP thông qua Active Directory
  • Gerrit
  • msysgit

Trước khi bạn bắt đầu, hãy chắc chắn rằng bạn đã cài đặt git trên hệ thống của bạn. Tải xuống công cụ dòng lệnh msysgit mới nhất cho các cửa sổ từ http://code.google.com.vn/p/msysgit/doads/list

Đảm bảo bạn nhận được "Trình cài đặt đầy đủ cho Git chính thức cho Windows".

  • Cài đặt MSysGit
  • Sử dụng mặc định khi được nhắc
  • Cấu hình Git

Nếu bạn có ý định sử dụng phiên bản GitWeb trong msysgit, bạn sẽ nhận thấy một số vấn đề xung quanh CGI.pm. Tôi muốn đề cập đến một sửa chữa để giải quyết vấn đề này.

Perl đi kèm với distro msysgit, kể từ 1.7.8, bị hỏng, http://groups.google.com/group/msysgit/browse_thread/thread/ba3501f1f0ed95af . Thư mục unicore bị thiếu cùng với utf8_ematvy.pl và CGI.pm. Bạn có thể xác minh bằng cách kiểm tra các mô-đun perl:

perl -mCGI -mEncode -mFcntl -mFile :: Find -mFile :: Basename -e "" Bạn có thể sẽ gặp ngoại lệ sau:

$ perl -mCGI -mEncode -mFcntl -mFile :: Find -mFile :: Basename -e "" Không thể định vị CGI.pm trong @INC (@INC chứa: /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 thất bại - biên dịch bị hủy bỏ.

Nếu bạn thiếu CGI.pm, bạn sẽ phải triển khai mô-đun đến môi trường msys: Bạn sẽ phải truy xuất chúng từ bản phân phối 5.8.8 trên:

http://strawberryperl.com/release.html

Tập tin: Strawberry-perl-5.8.8.3.zip

nội dung: bin / lib / trang web /

sao chép nội dung của lib vào msysgit / lib / perl5 / 5.8.8 và ghi đè lên các tệp hiện có.

Nếu sử dụng git dòng lệnh, hãy thêm cài đặt cấu hình toàn cầu của bạn vào git:

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

Đảm bảo thông tin đăng nhập được sử dụng ở đây khớp với thông tin đăng nhập trong gerrit. Nếu không, gerrit sẽ từ chối yêu cầu của bạn.

Các hướng dẫn để cài đặt và định cấu hình Gerrit như sau:

  • Đầu tiên, đăng nhập vào máy chủ lưu trữ postgres và tạo người dùng và cơ sở dữ liệu cho Gerrit
  • người tạo --username = postgres -A -D -P -E gerrit2
  • createdb --username = postgres -E UTF-8 -O gerrit2 reviewdb
  • Bây giờ, chuyển trở lại máy chủ, nếu khác, cho Gerrit và tạo 3 thư mục để triển khai Gerrit
  • Tạo thư mục cài đặt cơ sở cho gerrit, tốt nhất là thư mục được phiên bản cho nội dung triển khai chiến tranh
  • Tạo thư mục con cho tomcat
  • Tạo một thư mục cấu hình để triển khai lược đồ và cấu hình
  • Các nội dung sẽ trông như thế này:
  • gerrit
    • mèo con
    • cấu hình
    • gerrit-XX
  • Tải xuống tomcat từ http://tomcat.apache.org/doad-60.cgi
  • Lưu ý: Hầu hết các bản phân phối Linux sẽ có sẵn bản này từ các trình quản lý cập nhật của họ. Ví dụ: Sử dụng Synaptic trên Ubuntu
  • Triển khai cài đặt tomcat của bạn vào thư mục tomcat
  • Tải xuống gerrit.war mới nhất từ http://code.google.com.vn/p/gerrit/doads/list .
  • sao chép tập tin vào thư mục gerrit cơ sở
  • trích xuất tệp tin chiến tranh vào thư mục con gerrit-XX
  • CD vào thư mục cơ sở gerrit và chạy java -jar gerrit-2.4-rc0.war init -d config
    • Cấu hình này bao gồm các tính năng bổ sung cho LDAP và chạy phía sau proxy, không định cấu hình các tùy chọn này nếu không cần thiết.

Hành hình:

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.
  • Đừng lo lắng về việc thiết lập Gerrit làm máy chủ, chúng tôi sẽ định cấu hình sau
  • Chỉnh sửa cấu hình \ etc \ gerrit.config
  • trong phần gerrit, thêm cài đặt cho conicalWebUrl = http://review.corpination.com/
  • Nếu các dự án của bạn không tuân theo định dạng dự án truyền thống, hãy thêm phần sau:
  • thêm vị trí tệp và url vào máy chủ gitweb của bạn cùng với các thuộc tính được liên kết

Cập nhật 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}
  • Nếu bạn đang sử dụng http / https để phục vụ, hãy thêm vào như sau:

Cập nhật gerrit.config:

[download]
scheme = http
  • Nếu bạn đang sử dụng LDAP với thư mục hoạt động, bạn sẽ cần điều chỉnh cài đặt của mình thêm cài đặt bổ sung để hỗ trợ AD:

Cập nhật 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

Máy chủ:

<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>
  • Bạn không cần trình kết nối AJP trừ khi bạn có ý định ủy quyền với Máy chủ HTTP Apache. Tôi sử dụng nó để giảm tải mã hóa SSL và quản lý chứng chỉ. Chỉ cần loại bỏ nó nếu không cần thiết. Hãy chắc chắn thay đổi cổng kết nối HTTP của bạn thành 80 nếu bạn có ý định chạy độc lập.

  • Các cấu hình ở trên là để sử dụng với postgres. Nếu bạn đang sử dụng MySQL, bạn sẽ phải thay thế tài nguyên bằng cách sau cho MySQL:

Máy chủ:

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

Tại thời điểm này, bạn đã sẵn sàng Cấu hình Gerrit như một dịch vụ và đưa hệ thống đánh giá trực tuyến.

  • Đầu tiên, điều chỉnh Cài đặt Tomcat để Chạy Gerrit dưới dạng Dịch vụ
  • Goto tomcat / bin và chỉnh sửa dịch vụ.bat

Các tùy chọn jvm được đặt riêng cho dịch vụ nt. Bạn phải sửa đổi tệp service.bat trước khi cài đặt dịch vụ nt. Tập tin này nằm trong thư mục tomcat / bin với các tập lệnh khởi động và tắt máy khác. Cuộn xuống phần sau:

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

Sửa đổi dòng này để phù hợp với những điều sau đây:

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

Bộ nhớ ban đầu, jvmMs, chắc chắn nên được đặt thành 512Mb cho gerrit và mở rộng, JvmMx, thành 1024Mb.

Bây giờ bạn đã sẵn sàng để triển khai gerrit như một dịch vụ dưới cửa sổ. Chỉ cần thực hiện như sau:

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>

Goto trình quản lý máy chủ của bạn và mở nút Dịch vụ. Mở các thuộc tính cho Gerrit và đảm bảo bạn đặt loại khởi động thành Tự động:

Dịch vụ

Áp dụng và Đóng hộp thoại.

OK ... Chúng ta đã xong chưa? Thật không may, chỉ một vài bước nữa để đi. Treo ở đó.

Bây giờ bạn đã sẵn sàng để bắt đầu dịch vụ. Chỉ cần tô sáng dịch vụ Gerrit và nhấp vào tùy chọn Bắt đầu bên trái.

Xem lại các bản ghi trong thư mục tomcat / log. Đảm bảo không có lỗi nổi bật. Nếu bạn gặp vấn đề, bạn có thể đặt câu hỏi tại đây hoặc trên danh sách gửi thư của gerrit: http://groups.google.com/group/repo-discuss

Bạn sẽ có thể truy cập trình duyệt của mình và nhập url của máy chủ để xem Gerrit ngay bây giờ: http://review.corpination.com:8080

Bạn sẽ được nhắc nhập khóa công khai ssh của bạn. Điều này chỉ cần thiết nếu bạn có ý định sử dụng Git / Gerrit qua ssh thay vì HTTP. Tôi đã đi trước và thiết lập nó bởi vì đó là một lựa chọn tốt để có.

Định cấu hình SSH

Tạo khóa ssh để truy cập:

Quản trị viên @ SERVER ~ / test $ ssh-keygen -t rsa

Đăng ký tài khoản mới trong Gerrit thông qua giao diện web với địa chỉ email bạn chọn. Người dùng đầu tiên đăng nhập và đăng ký tài khoản sẽ được tự động đặt vào nhóm Quản trị viên đặc quyền hoàn toàn, cho phép quản lý máy chủ trên web và qua SSH. Người dùng sau đó sẽ được đăng ký tự động là người dùng không có đặc quyền.

Sau khi đăng nhập với tư cách là người dùng của bạn, bạn tìm thấy một trình hướng dẫn nhỏ để bắt đầu. Trình hướng dẫn giúp bạn điền vào:

  • Tên thật (tên hiển thị trong Gerrit)
  • Đăng ký email của bạn (nó phải được xác nhận sau)
  • Chọn tên người dùng để liên lạc với Gerrit qua ssh + git
  • Máy chủ sẽ yêu cầu bạn cung cấp khóa công khai RSA. Đó là khóa chúng tôi đã tạo ở trên và đã đến lúc đảm bảo rằng Gerrit biết về khóa mới của chúng tôi và có thể nhận dạng chúng tôi bằng khóa đó.

    người dùng @ máy chủ: ~ $ cat .ssh / id_rsa.pub

Định cấu hình truy cập HTTP chỉ cho người dùng đã đăng ký, trừ khi dự án của bạn mở cửa cho công chúng:

nhập mô tả hình ảnh ở đây

Tạo mật khẩu HTTP

Mặc dù đã định cấu hình đăng nhập của riêng bạn, bạn vẫn phải tạo mật khẩu cho gerrit đến máy chủ qua http / https. Xem cài đặt của bạn-> Cấu hình mật khẩu HTTP và nhấp vào 'Tạo mật khẩu'. Sử dụng mật khẩu này cho tất cả các hoạt động git qua http (s).

Bây giờ chúng tôi có thể kiểm tra Gerrit qua HTTP. Bạn sẽ có thể sao chép bất kỳ dự án nào hiện có trong kho lưu trữ mà bạn đã tham chiếu trong cấu hình Gerrit.

Kiểm tra với hoạt động nhân bản

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

Kiểm tra tài khoản ssh của bạn

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.

Sao chép một dự án từ Gerrit qua 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.

Nếu bây giờ bạn chưa từ bỏ, bạn có thể thư giãn, bạn nên tìm cho mình một hệ thống Đánh giá mã Gerrit đang hoạt động được lưu trữ bởi Máy chủ Windows 2008 :) Nó không phổ biến như một thiết lập và như bạn có thể nói, đảm bảo tất cả các bổ sung các bước. Tuy nhiên, một số người trong chúng ta có nguồn lực hạn chế và chỉ có thể sử dụng những gì được cung cấp. Tôi hy vọng hướng dẫn này sẽ giúp những người tìm cách chạy Gerrit trong một môi trường tương tự. Bạn nên sẵn sàng ngay bây giờ để bắt đầu sử dụng Gerrit! Thưởng thức!

Để biết thêm thông tin về việc sử dụng Gerrit, vui lòng tham khảo hướng dẫn sử dụng từ dự án Gerrit:

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

Cảm ơn bạn Shawn Pierce vì sự giúp đỡ trên IRC!

Để tham khảo trong tương lai

Hướng dẫn đã được chuyển đổi thành tài liệu cho dự án Gerrit. Đối với những người quan tâm và cần một tài liệu tham khảo tốt. Xin vui lòng xem yêu cầu vá ở đây:

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


thông tin rất hay và đầy đủ. <p> mặc định "Git cho windows" từ msysgit không bao gồm CGI.pm, làm thế nào để bạn quản lý để làm việc cho gitweb?
larrycai

Tôi đã giải quyết điều đó một thời gian trở lại. Tôi có lưu ý làm thế nào để giải quyết vấn đề đó. Tôi sẽ xem nếu tôi có thể cung cấp một bản cập nhật ở đây trong thời gian ngắn.
Jason Huntley

Xin chào Larry, tôi đã cập nhật hướng dẫn và bao gồm bản sửa lỗi cho vấn đề GIT.pm. Vui lòng upvote Trả lời nếu bạn thấy bài viết này hữu ích. Cảm ơn!
Jason Huntley

gitweb có thể hoạt động như bạn mô tả như CGI không? Tôi đã tạo gitweb.bat để bao bọc nó mà không cần apache <p> Đối với CGI.pm, chỉ cần tải xuống CGI.tar.gz và tải lên / usr / lib / perl5 / site_perl là đủ tốt. nó hơi khó theo dõi cho người mới bắt đầu ;-)
larrycai

@larrycai, vâng tôi đã viết hướng dẫn này một thời gian trước và nó thực sự đã được cải thiện và đóng góp cho tài liệu dự án của Gerrit. Nó vẫn đang được xem xét, nhưng khi nó được chấp thuận, tôi sẽ cập nhật câu hỏi này. Cảm ơn vì bạn đã phản hồi. Ồ và vâng, gitweb chắc chắn sẽ chạy như CGI thông qua Apache.
Jason Huntley
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.