summaryrefslogtreecommitdiffstats
path: root/Documentation/install.txt
blob: b90bbcef7addcc534f2896fd6ce6cb3af656eaaf (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
Gerrit Code Review - Installation Guide
=======================================

[[requirements]]
Requirements
-----------
To run the Gerrit service, the following requirements must be met on
the host:

* JDK, minimum version 1.6 http://www.oracle.com/technetwork/java/javase/downloads/index.html[Download]

You'll also need a SQL database to house the review metadata. You have the
choice of either using the embedded H2 or to host your own MySQL or PostgreSQL.


[[download]]
Download Gerrit
---------------

Current and past binary releases of Gerrit can be obtained from
the downloads page at the project site:

* http://code.google.com/p/gerrit/downloads/list[Gerrit Downloads]

Download any current `*.war` package. The war will be referred to as
`gerrit.war` from this point forward, so you may find it easier to
rename the downloaded file.

If you would prefer to build Gerrit directly from source, review
the notes under link:dev-readme.html[developer setup].


[[createdb]]
Database Setup
--------------

[[createdb_h2]]
H2
~~

During the init phase of Gerrit you will need to specify which database to use.
If you choose H2, Gerrit will automatically set up the embedded H2 database as
backend so no set up in advance is necessary.  Also, no additional configuration is
necessary.  Using the embedded H2 database is the easiest way to get a Gerrit
site up and running, making it ideal for proof of concepts or small team
servers.  On the flip side, H2 is not the recommended option for large
corporate installations. This is because there is no easy way to interact
with the database while Gerrit is offline, it's not easy to backup the data,
and it's not possible to set up H2 in a load balanced/hotswap configuration.


If this option interests you, you might want to consider link:install-quick.html[the quick guide].

[[createdb_postgres]]
PostgreSQL
~~~~~~~~~~

This option is more complicated than the H2 option but is recommended
for larger installations. It's the database backend with the largest userbase
in the Gerrit community.

Create a user for the web application within Postgres, assign it a
password, create a database to store the metadata, and grant the user
full rights on the newly created database:

----
  createuser -A -D -P -E gerrit2
  createdb -E UTF-8 -O gerrit2 reviewdb
----


[[createdb_mysql]]
MySQL
~~~~~

This option is also more complicated than the H2 option. Just as with
PostgreSQL it's also recommended for larger installations.

Create a user for the web application within the database, assign it a
password, create a database, and give the newly created user full
rights on it:

----
  mysql

  CREATE USER 'gerrit2'@'localhost' IDENTIFIED BY 'secret';
  CREATE DATABASE reviewdb;
  ALTER DATABASE reviewdb charset=latin1;
  GRANT ALL ON reviewdb.* TO 'gerrit2'@'localhost';
  FLUSH PRIVILEGES;
----


[[init]]
Initialize the Site
-------------------

Gerrit stores configuration files, the server's SSH keys, and the
managed Git repositories under a local directory, typically referred
to as `'$site_path'`.  If the embedded H2 database is being used,
its data files will also be stored under this directory.

You also have to decide where to store your server side git repositories. This
can either be a relative path under `'$site_path'` or an absolute path
anywhere on your server system. You have to choose a place before commencing
your init phase.

Initialize a new site directory by running the init command, passing
the path of the site directory to be created as an argument to the
'-d' option.  Its recommended that Gerrit Code Review be given its
own user account on the host system:

----
  sudo adduser gerrit2
  sudo su gerrit2

  java -jar gerrit.war init -d /path/to/your/gerrit_application_directory
----

'Please note:' If you choose a location where your new user doesn't
have any privileges, you may have to manually create the directory first and
then give ownership of that location to the `'gerrit2'` user.

If run from an interactive terminal, the init command will prompt through a
series of configuration questions, including gathering information
about the database created above.  If the terminal is not interactive,
running the init command will choose some reasonable default selections,
and will use the embedded H2 database. Once the init phase is complete,
you can review your settings in the file `'$site_path/etc/gerrit.config'`.

When running the init command, additional JARs might be downloaded to
support optional selected functionality.  If a download fails a URL will
be displayed and init will wait for the user to manually download the JAR
and store it in the target location.

When the init phase is complete, the daemon will be automatically started
in the background and your web browser will open to the site:

----
  Initialized /home/gerrit2/review_site
  Executing /home/gerrit2/review_site/bin/gerrit.sh start
  Starting Gerrit Code Review: OK
  Waiting for server to start ... OK
  Opening browser ...
----

When the browser opens, sign in to Gerrit through the web interface.
The first user to sign-in and register an account will be
automatically placed into the fully privileged Administrators group,
permitting server management over the web and over SSH.  Subsequent
users will be automatically registered as unprivileged users.


Installation Complete
---------------------

Your base Gerrit server is now installed and running.  You're now ready to
either set up more projects or start working with the projects you've already
imported.


[[project_setup]]
Project Setup
-------------

See link:project-setup.html[Project Setup] for further details on
how to register a new project with Gerrit.  This step is necessary
if existing Git repositories were not imported during 'init'.


[[rc_d]]
Start/Stop Daemon
-----------------

To control the Gerrit Code Review daemon that is running in the
background, use the rc.d style start script created by 'init':

====
  review_site/bin/gerrit.sh start
  review_site/bin/gerrit.sh stop
  review_site/bin/gerrit.sh restart
====

('Optional') Link the gerrit.sh script into rc3.d so the daemon
automatically starts and stops with the operating system:

====
  sudo ln -snf `pwd`/review_site/bin/gerrit.sh /etc/init.d/gerrit.sh
  sudo ln -snf ../init.d/gerrit.sh /etc/rc3.d/S90gerrit
====

To install Gerrit into an existing servlet container instead of using
the embedded Jetty server, see
link:install-j2ee.html[J2EE installation].


[[customize]]
Site Customization
------------------

Gerrit Code Review supports some site-specific customization options.
For more information, see the related topic in this manual:

* link:config-reverseproxy.html[Reverse Proxy]
* link:config-sso.html[Single Sign-On Systems]
* link:config-replication.html[Git Replication/Mirroring]
* link:config-headerfooter.html[Site Header/Footer]
* link:config-gitweb.html[Gitweb Integration]
* link:config-gerrit.html[Other System Settings]


[[anonymous_access]]
Anonymous Access
----------------

Exporting the Git repository directory
(link:config-gerrit.html#gerrit.basePath[gerrit.basePath]) over the
anonymous, unencrypted git:// protocol is more efficient than
Gerrit's internal SSH daemon.  See the `git-daemon` documentation
for details on how to configure this if anonymous access is desired.

* http://www.kernel.org/pub/software/scm/git/docs/git-daemon.html[man git-daemon]


External Documentation Links
----------------------------

* http://www.postgresql.org/docs/[PostgreSQL Documentation]
* http://dev.mysql.com/doc/[MySQL Documentation]
* http://www.kernel.org/pub/software/scm/git/docs/git-daemon.html[git-daemon]


GERRIT
------
Part of link:index.html[Gerrit Code Review]