Wiki source code of Jetty Installation

Last modified by Vincent Massol on 2024/12/12

Hide last authors
Vincent Massol 11.1 1 There are several ways to run XWiki on Jetty:
2 * Using the [[Demo packaging (a.k.a Standalone packaging)>>Documentation.AdminGuide.Installation.InstallationStandalone.WebHome]] which bundles Jetty and provide an all-in-one zip, ready to use.
3 * Using the official [[Jetty docker image>>https://hub.docker.com/_/jetty]].
Vincent Massol 18.1 4 * [[Downloading and installing>>https://www.eclipse.org/jetty/download.html]] Jetty manually on your server.
Vincent Massol 11.1 5
Vincent Massol 12.1 6 If you go with the last 2 options, make sure to:
7 * Pick a [[supported version of Jetty>>dev:Community.SupportStrategy.ServletContainerSupportStrategy.WebHome]].
8 * Follow the Jetty setup defined in the {{scm path="xwiki-platform-tools/xwiki-platform-tool-jetty/xwiki-platform-tool-jetty-resources/src/main/resources/jetty/modules/xwiki.mod"}}##xwiki.mod##{{/scm}} file used for the demo packaging. Note that the default setup used in the Jetty Docker image should work fine out of the box.
Vincent Massol 13.2 9 * Jetty has introduced a [[URI Compliance configuration>>https://www.eclipse.org/jetty/documentation/jetty-10/operations-guide/index.html#og-module-server-compliance]] (since 10.0.3+) which, for example, forbids having encoded ##%## characters (encoded as ##%25%##) in URL paths. However XWiki uses these and thus you need to tell Jetty to simply follow the URL RFCs without adding these extra checks. This can be done in several ways:
Vincent Massol 13.1 10 ** By editing ##server.ini## and adding the line: {{code language="none"}}jetty.httpConfig.uriCompliance=RFC3986{{/code}}
11 ** If you're using the Jetty Docker image, by passing {{code language="none"}}jetty.httpConfig.uriCompliance=RFC3986{{/code}} on the ##docker run## command line: {{code language="none"}}docker run ... jetty jetty.httpConfig.uriCompliance=RFC3986{{/code}}.
Vincent Massol 11.1 12
13 = Docker =
14
15 * Extract the [[XWiki WAR>>xwiki:Main.Download]] into a directory named ##xwiki##. Let's call this directory ##[XWIKI_HOME]##.
Vincent Massol 15.1 16 * Setup a permanent directory on your local machine and let's call it ##[XWIKI_PERMDIR]##
17 * Run the Jetty Docker image, for example: {{code language="none"}}docker run -v [XWIKI_HOME]:/var/lib/jetty/webapps/xwiki -v [XWIKI_PERMDIR]:/var/lib/jetty/xwiki-data -p 8080:8080 jetty:9-jre11 -Dxwiki.data.dir=/var/lib/jetty/xwiki-data{{/code}}
Vincent Massol 19.1 18 ** Note that you won't need the ##-Dxwiki.data.dir=/var/lib/jetty/xwiki-data## part if you have edited ##[XWIKI_HOME]/WEB-INF/xwiki.properties## and set the ##environment.permanentDirectory## to point to ##/var/lib/jetty/xwiki-data##. The system property just overrides whatever is defined in ##environment.permanentDirectory##.
Vincent Massol 17.1 19 ** Also note that you'll need a database set up too. If you want to quickly test it, you can simply copy the the HSQLDB JAR into ##WEB-INF/lib##.
Vincent Massol 20.1 20 ** If you're using Jetty 12+, you'll need to specify what environment to execute in: {{code language="none"}}docker run ... jetty:12 --module=--module=ee8-annotations,ee8-apache-jsp,ee8-deploy,ee8-jstl,ee8-websocket-javax,ee8-websocket-jetty{{/code}}
Vincent Massol 11.1 21
22 = Manual =
23
24 * Download and install [[Jetty>>https://www.eclipse.org/jetty/download.html]]. It's usually as simple as unzipping it in a directory. Let's call this directory ##[JETTY_HOME]##.
25 * Extract the [[XWiki WAR>>xwiki:Main.Download]] into a directory named ##xwiki## in ##[JETTY_HOME]/webapps/##.
Thomas Mortagne 16.1 26 * Open ##[JETTY_HOME]/webapps/xwiki/WEB-INF/xwiki.properties## files and [[configure a permanent directory>>Documentation.AdminGuide.Configuration||anchor="HConfiguringDirectories"]]
Vincent Massol 11.1 27 * (Optional) If you want to modify the port on which Jetty will run, edit ##[JETTY_HOME]/start.ini##. Search for ##8080##, replace it with the port value you wish to use and uncomment the corresponding property {{code language="none"}}jetty.http.port{{/code}}.
Simon Urli 8.1 28
Vincent Massol 11.1 29 = Troubleshooting =
Simon Urli 8.1 30
Vincent Massol 11.1 31 == Unable to parse form content ==
Simon Urli 8.1 32
Vincent Massol 12.2 33 In some cases you could obtain one of the following error messages: ##Unable to parse form content##.
Simon Urli 8.1 34
Vincent Massol 12.2 35 More specifically: ##org.eclipse.jetty.http.BadMessageException: 400: Unable to parse form content##.
Simon Urli 8.1 36
Vincent Massol 8.2 37 This can be related to a form containing too many parameters. In order to fix this issue, you can modify your ##jetty.xml## file as explained in [[Configuring form limits for the server>>https://www.eclipse.org/jetty/documentation/9.4.x/configuring-form-size.html#_configuring_form_limits_for_the_server]].
Vincent Massol 11.1 38

Get Connected