Bagaimana Saya Menginstal Gerrit Under Tomcat dengan LDAP?

11

Saya mencoba menemukan instruksi yang baik untuk menginstal Gerrit di bawah Tomcat dengan dukungan LDAP. Saya perlu ini diinstal pada Windows 2008 Server, sebaiknya. Namun, saya dapat memilih Linux jika tidak memungkinkan.

Instruksi Gerrit hanya mencakup instalasi di bawah dermaga:

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

Tidak banyak yang bisa dikerjakan jika saya ingin mengatur ini di lingkungan yang berbeda.

Saya memang menemukan beberapa tautan bermanfaat tetapi tidak ada yang menyatukan pengaturan.

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_ld__apap_a_section_ldap http : //code.google.com/p/gerrit/issues/detail? id = 292

Saya selalu dapat mengatur ini trial-and-error, tetapi saya lebih memilih untuk menghemat waktu jika seseorang telah mengatasi masalah tersebut.

Jason Huntley
sumber

Jawaban:

21

Saya memutuskan untuk meneruskan jawaban ini karena ini diperlukan untuk Komunitas Gerrit. Saat ini, tidak ada banyak tutorial yang mencakup pengaturan lanjutan untuk Gerrit. Saya berharap ini akan membantu orang lain mengeksplorasi praktik XP / Agile dan membangun Gerrit. Ini adalah alat yang hebat setelah Anda melewati semua tantangan dan detail pengaturan yang halus.

Tutorial pemasangan ini agak unik karena melayani lingkungan tertentu:

  • Windows 2008 Server
  • PostgreSql
  • Kucing jantan
  • LDAP melalui Direktori Aktif
  • Gerrit
  • msysgit

Sebelum Anda mulai, pastikan Anda telah menginstal git di sistem Anda. Unduh alat baris perintah msysgit terbaru untuk windows dari http://code.google.com/p/msysgit/downloads/list

Pastikan Anda mendapatkan "Penginstal lengkap untuk Git resmi untuk Windows".

  • Instal MSysGit
  • Gunakan default saat diminta
  • Konfigurasikan Git

Jika Anda bermaksud menggunakan versi GitWeb di msysgit, Anda akan melihat beberapa masalah di sekitar CGI.pm. Saya ingin menyebutkan perbaikan untuk menyelesaikan masalah ini.

Perl yang disertakan dengan distro msysgit, pada 1.7.8, rusak, http://groups.google.com/group/msysgit/browse_thread/thread/ba3501f1f0ed95af . Folder unicore hilang bersama dengan utf8_heavy.pl dan CGI.pm. Anda dapat memverifikasi dengan memeriksa modul perl:

perl -mCGI -mEncode -mFcntl -mFile :: Find -mFile :: Basename -e "" Anda mungkin akan menemukan pengecualian berikut:

$ perl -mCGI -mEncode -mFcntl -mFile :: Find -mFile :: Basename -e "" Tidak dapat menemukan CGI.pm di @INC (@INC berisi: /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 gagal - kompilasi dibatalkan.

Jika Anda kehilangan CGI.pm, Anda harus menggunakan modul ke lingkungan msys: Anda harus mengambilnya dari distro 5.8.8 yang aktif:

http://strawberryperl.com/releases.html

File: strawberry-perl-5.8.8.3.zip

isi: bin / lib / situs /

salin isi lib ke msysgit / lib / perl5 / 5.8.8 dan timpa file yang ada.

Jika menggunakan commandline git, tambahkan pengaturan konfigurasi global Anda ke git:

git config --global user.name "Your Name"
git config --global user.email [email protected]
git config --global core.autocrlf false

Pastikan kredensial yang digunakan di sini cocok dengan kredensial di gerrit. Jika tidak, gerrit akan menolak permintaan Anda.

Petunjuk untuk menginstal dan mengkonfigurasi Gerrit adalah sebagai berikut:

  • Pertama, login ke server hosting postgres dan buat pengguna dan database untuk Gerrit
  • createuser --username = postgres -A -D -P -E gerrit2
  • Createdb --username = postgres -E UTF-8 -O gerrit2 reviewdb
  • Sekarang, kembali ke host, jika berbeda, untuk Gerrit dan buat 3 direktori untuk menggunakan Gerrit
  • Buat direktori install pangkalan untuk gerrit, lebih disukai direktori berversi untuk konten penyebaran perang
  • Buat subdirektori untuk kucing jantan
  • Buat direktori config untuk menyebarkan skema dan konfigurasi
  • Isi akan terlihat seperti ini:
  • gerrit
    • kucing jantan
    • konfigurasi
    • gerrit-XX
  • Unduh tomcat dari http://tomcat.apache.org/download-60.cgi
  • Catatan: Sebagian besar Distribusi Linux akan memiliki ini tersedia dari manajer pembaruan mereka. Contoh: Gunakan Synaptic di Ubuntu
  • Sebarkan tomcat Anda instal ke direktori tomcat
  • Unduh gerrit.war terbaru dari http://code.google.com/p/gerrit/downloads/list .
  • salin file ke direktori pangkalan gerrit
  • ekstrak file perang ke subdirektori gerrit-XX
  • CD ke direktori basis gerrit dan jalankan java -jar gerrit-2.4-rc0.war init -d config
    • Konfigurasi ini mencakup ekstra untuk LDAP dan berjalan di belakang proxy, jangan mengonfigurasi opsi ini jika tidak diperlukan.

Menjalankan:

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]: [email protected]
[email protected]'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.
  • Jangan khawatir tentang pengaturan Gerrit sebagai server, kami akan mengonfigurasinya nanti
  • Edit config \ etc \ gerrit.config
  • di bawah bagian gerrit, tambahkan pengaturan untuk conicalWebUrl = http://review.corporation.com/
  • Jika proyek Anda tidak mengikuti format tradisional project.git, tambahkan bagian berikut:
  • tambahkan file locaiton dan url ke server gitweb Anda bersama dengan properti terkait

Pembaruan 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}
  • Jika Anda menggunakan http / https untuk melayani, tambahkan yang berikut:

Pembaruan gerrit.config:

[download]
scheme = http
  • Jika Anda menggunakan LDAP dengan direktori aktif, Anda perlu mengubah pengaturan Anda menambahkan pengaturan tambahan untuk mendukung AD:

Pembaruan 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>
  • Anda tidak memerlukan konektor AJP kecuali Anda bermaksud melakukan proxy dengan Apache HTTP Server. Saya menggunakannya untuk mengeluarkan enkripsi SSL dan mengelola sertifikat. Hapus saja jika tidak diperlukan. Pastikan untuk mengubah port konektor HTTP Anda menjadi 80 jika Anda bermaksud menjalankan standalone.

  • Konfigurasi di atas adalah untuk digunakan dengan postgres. Jika Anda menggunakan MySQL, Anda harus mengganti sumber daya dengan yang berikut untuk 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"
/>

Pada titik ini, Anda sekarang siap untuk Mengkonfigurasi Gerrit sebagai layanan dan membawa sistem ulasan online.

  • Pertama, tweak Pengaturan Tomcat untuk Menjalankan Gerrit sebagai Layanan
  • Pergi tomcat / bin dan edit service.bat

Opsi jvm diatur secara terpisah untuk layanan nt. Anda harus mengubah file service.bat Anda sebelum menginstal layanan nt. File ini berada di direktori tomcat / bin dengan skrip startup.bat dan shutdown lainnya. Gulir ke bawah ke bagian berikut:

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

Ubah baris ini agar sesuai dengan yang berikut:

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

Memori awal, jvmMs, pasti harus diatur ke 512Mb untuk gerrit dan diperluas, JvmMx, ke 1024Mb.

Sekarang Anda siap menggunakan gerrit sebagai layanan di bawah windows. Cukup jalankan yang berikut ini:

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 manajer server Anda dan buka simpul Layanan. Buka properti untuk Gerrit dan pastikan Anda mengatur jenis startup ke Otomatis:

Jasa

Terapkan dan Tutup Dialog.

OKE ... Apakah kita sudah selesai? Sayangnya tidak, hanya beberapa langkah lagi. Tetap bertahan.

Sekarang Anda siap memulai layanan. Cukup sorot layanan Gerrit dan klik opsi Mulai di sebelah kiri.

Tinjau log di bawah direktori tomcat / log. Pastikan tidak ada kesalahan luar biasa. Jika Anda memiliki masalah, Anda dapat mengajukan pertanyaan di sini atau di milis gerrit: http://groups.google.com/group/repo-discuss

Anda seharusnya dapat membuka browser Anda dan memasukkan url server Anda untuk melihat Gerrit sekarang: http://review.corporation.com:8080

Anda akan diminta untuk memasukkan kunci publik ssh Anda. Ini hanya diperlukan jika Anda bermaksud menggunakan Git / Gerrit via ssh, bukan HTTP. Saya pergi ke depan dan mengaturnya karena itu pilihan yang baik untuk dimiliki.

Konfigurasikan SSH

Buat kunci ssh untuk akses:

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

Daftarkan akun baru di Gerrit melalui antarmuka web dengan alamat email pilihan Anda. Pengguna pertama yang masuk dan mendaftarkan akun akan secara otomatis ditempatkan ke dalam grup Administrator yang sepenuhnya istimewa, yang mengizinkan manajemen server melalui web dan melalui SSH. Pengguna selanjutnya akan secara otomatis terdaftar sebagai pengguna yang tidak memiliki hak.

Setelah masuk sebagai pengguna, Anda menemukan sedikit wizard untuk memulai. Wisaya membantu Anda mengisi:

  • Nama asli (nama yang terlihat dalam bahasa Gerrit)
  • Daftarkan email Anda (harus dikonfirmasi nanti)
  • Pilih nama pengguna untuk berkomunikasi dengan Gerrit di atas ssh + git
  • Server akan meminta Anda kunci publik RSA. Itulah kunci yang kami buat di atas, dan inilah saatnya untuk memastikan bahwa Gerrit mengetahui tentang kunci baru kami dan dapat mengidentifikasi kami dengan kunci itu.

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

Konfigurasikan akses HTTP hanya untuk pengguna terdaftar, kecuali proyek Anda terbuka untuk umum:

masukkan deskripsi gambar di sini

Buat Kata Sandi HTTP

Meskipun telah mengonfigurasi login Anda sendiri, Anda masih harus membuat kata sandi untuk gerrit ke server melalui http / https. Ambil Pengaturan Anda-> Konfigurasi Kata Sandi HTTP dan klik 'Buat Kata Sandi'. Gunakan kata sandi ini untuk semua operasi git melalui http (s).

Sekarang kita dapat menguji Gerrit melalui HTTP. Anda harus dapat mengkloning semua proyek yang ada di repositori yang telah Anda referensikan di konfigurasi Gerrit.

Uji dengan operasi klon

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

Uji akun ssh Anda

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://[email protected]:29418/REPOSITORY_NAME.g
it

Connection to localhost closed.

Mengkloning proyek dari Gerrit melalui SSH:

Administrator@SERVER~/test
$ git clone ssh://[email protected]: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.

Jika Anda belum menyerah sekarang, Anda dapat bersantai, Anda harus menemukan diri Anda dengan sistem Gerrit Code Review bekerja dengan Windows Server 2008 :) Ini tidak biasa seperti pengaturan dan seperti yang Anda tahu, menjamin semua tambahan Langkah. Namun, sebagian dari kita memiliki sumber daya yang terbatas dan hanya dapat menggunakan apa yang disediakan. Saya harap tutorial ini membantu mereka yang ingin menjalankan Gerrit di lingkungan yang sama. Anda harus siap sekarang untuk mulai menggunakan Gerrit! Nikmati!

Untuk informasi lebih lanjut tentang penggunaan Gerrit, silakan berkonsultasi dengan panduan pengguna dari proyek Gerrit:

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

Terima kasih, Shawn Pierce, atas bantuan di IRC!

Untuk referensi di masa mendatang

Tutorial telah dikonversi ke dokumentasi untuk proyek Gerrit. Bagi yang berminat dan butuh referensi yang baik. Silakan lihat permintaan tambalan di sini:

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

Jason Huntley
sumber
informasi yang sangat bagus dan lengkap. <p> default "Git for windows" dari msysgit tidak termasuk CGI.pm, bagaimana Anda bisa bekerja untuk gitweb?
larrycai
Saya memecahkannya juga beberapa waktu lalu. Saya punya catatan bagaimana mengatasi masalah itu. Saya akan melihat apakah saya dapat segera memberikan pembaruan di sini.
Jason Huntley
Hai Larry, saya telah memperbarui tutorial dan menyertakan perbaikan untuk masalah GIT.pm. Harap jawab Jawabannya jika Anda menemukan posting ini bermanfaat. Terima kasih!
Jason Huntley
apakah gitweb dapat bekerja seperti yang Anda gambarkan sebagai CGI? Saya membuat gitweb.bat untuk membungkusnya tanpa apache <p> Untuk CGI.pm, cukup unduh CGI.tar.gz dan unggah ke / usr / lib / perl5 / site_perl cukup baik. <p> tutorialnya sangat lengkap, tetapi tutorialnya sangat lengkap, tetapi tutorialnya sangat lengkap, tetapi agak sulit untuk mengikuti untuk pemula ;-)
larrycai
@larrycai, ya saya menulis tutorial ini beberapa waktu lalu dan sebenarnya telah diperbaiki dan berkontribusi pada dokumentasi proyek Gerrit. Ini masih dalam peninjauan, tetapi ketika disetujui, saya akan memperbarui pertanyaan ini. Terima kasih untuk umpan baliknya. Oh dan ya gitweb pasti akan berjalan sebagai CGI via Apache.
Jason Huntley