:linkattrs:
= Gerrit Code Review - J2EE Installation

== Description

Gerrit binary distributions include a standalone Jetty servlet
container, but are packaged as a standard WAR file to permit easy
deployment to other existing container installations if using the
standalone daemon is not desired.

Gerrit Code Review can be installed into any J2EE servlet container,
including popular open source containers such as Jetty or Tomcat, or
any commercial server which supports the J2EE servlet specification.


== Installation

* Complete the link:install.html#init[site initialization] task
  described in the standard installation documentation.

* Stop the embedded daemon that was automatically started by 'init':
+
----
  review_site/bin/gerrit.sh stop
----

* Deploy the 'gerrit.war' file to your application server.
+
The deployment process differs between servers, but typically this
can be accomplished by copying 'gerrit.war' into the 'webapps/'
subdirectory of the container's installation.

* ('Optional') Install Bouncy Castle Crypto API
+
If you enabled Bouncy Castle Crypto during 'init', copy the JAR
from `'$site_path'/lib` into your servlet container's extensions
directory so it's available to Gerrit Code Review.

* ('Optional') link:config-auto-site-initialization.html[
Configure Automatic Site Initialization on Startup]


== Jetty 7.x
These directions will configure Gerrit as the default web
application, allowing URLs like `http://example.com/4543` to jump
directly to change 4543.

Download and unzip a release version of Jetty.  From here on we
call the unpacked directory `$JETTY_HOME`.

* link:http://www.eclipse.org/jetty/downloads.php[Jetty Downloads,role=external,window=_blank]

If this is a fresh installation of Jetty, move into the installation
directory and do some cleanup to remove the sample webapps:
----
  cd $JETTY_HOME
  rm -rf contexts/* webapps/*
----

Copy Gerrit Code Review into the deployment:
----
  cp ~/gerrit.war webapps/gerrit.war
  java -jar webapps/gerrit.war cat extra/jetty7/gerrit.xml >contexts/gerrit.xml
----

Edit `'$JETTY_HOME'/contexts/gerrit.xml` to correctly configure
outgoing SMTP connections.

If OpenID authentication (or certain enterprise single-sign-on
solutions) is being used, you may need to increase the
header buffer size parameter, due to very long header lines
being used by the OpenID authentication handshake process.
Add the following to `'$JETTY_HOME'/etc/jetty.xml` under
`org.eclipse.jetty.server.nio.SelectChannelConnector`:

----
  <Set name="headerBufferSize">16384</Set>
----

To start automatically when the system boots, create a start
script and modify it for your configuration:

----
  java -jar webapps/gerrit.war --cat extra/jetty7/gerrit-jetty.sh >/etc/init.d/gerrit-jetty
  vi /etc/init.d/gerrit-jetty
----

[TIP]
Under Jetty, restarting the web application is as simple as
touching the context config file: `'$JETTY_HOME'/contexts/gerrit.xml`

[[tomcat]]
== Tomcat 7.x

If a reverse proxy is used in front of Tomcat then see the
link:config-reverseproxy.html[configuration instructions for encoding
slashes]. Otherwise Tomcat must be configured to encode slashes, by adding
`-Dorg.apache.tomcat.util.buf.UDecoder.ALLOW_ENCODED_SLASH=true` to the
`CATALINA_OPTS` environment variable.

Excerpt from the
link:https://tomcat.apache.org/tomcat-7.0-doc/config/systemprops.html[
documentation,role=external,window=_blank]:

----
Property org.apache.tomcat.util.buf.UDecoder.ALLOW_ENCODED_SLASH:
If this is true '%2F' and '%5C' will be permitted as path delimiters.
If not specified, the default value of false will be used.
----

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

SEARCHBOX
---------
