Jetty Installieren

Aus Hostsharing Wiki
Zur Navigation springen Zur Suche springen

Jetty installieren

Allgemein

Eclipse Jetty ist ein Webserver (HTTP-Server), der in der Programmiersprache Java entwickelt ist. Er dient in erster Linie dazu, dynamische Web-Anwendungen zu betreiben, die ebenfalls in Java programmiert sind. Basis-Technologien sind Java-Servlets und Java Server Pages (JSP).

Jetty ist eine Alternative zu Apache Tomcat.

Spezielle Installation bei Hostsharing

In jedem dynamischen Webhosting-Paket der Hostsharing eG können einer (oder mehrere) Jetty-Webserver betrieben werden.

Die hier beschriebene Installation benötigt bei Hostsharing die Paket-Option "RAM". Benötigt werden min. 512 MB. Im Managed Webspace ist diese Option kostenpflichtig: https://www.hostsharing.net/angebote/managed-webspace/ gebucht werden muss der RAM auch bei einem Managed-Server.

Diese Anleitung dokumentiert die Installation des Eclispe Jetty Servers als Service-User in einem WEB-Paket bei Hostsharing. Mit der Einrichtung der Option "eigener Serverdienst" werden für die Paket-IP-Adresse einer oder mehrere IP-Ports reserviert. An diese Ports wird der eigene Serverdienst (also der Tomcat-Server) am Localhost-Interface gebunden.

Bei der Anmeldung (bei service(at)hostsharing.net bitte angeben:

  1. den Service User, mit dessen Rechten der Jetty-Dienst laufen soll (also zum Beispiel "xyz00-jetty")
  2. wieviele IP-Ports reserviert werden sollen (in der folgenden Anleitung wird ein Port am Localhost-Interface genutzt): '34567' für einen HTTP/1.1-Listener

Installation

Auf der Hostsharing-Plattform ist Java 17 in Form des OpenJDK 17 aus der Debian-Distribution vorinstalliert. Java 17 ist als Laufzeitumgebung für den aktuellen Jetty 12.x ausreichend.

Wir laden Jetty als '.tar.gz'-Datei von jetty.org/download.html. Aktuell ist 'jetty-home-12.1.14.tar.gz':

wget https://repo1.maven.org/maven2/org/eclipse/jetty/jetty-home/12.1.14/jetty-home-12.1.14.tar.gz

Mit 'tar' wird das Archiv als Verzeichnis 'jetty-home-12.1.4' entpackt:

tar xzf jetty-home-12.1.14.tar.gz

Für unsere eigene Konfiguration kommt ein Verzeichnis 'jetty-base' neben das entpackte Archiv:

mkdir ~/jetty-base
cd ~/jetty-base
export JETTY_BASE=$HOME/jetty-base 
export JETTY_HOME=$HOME/jetty-home-12.1.4

Initial konfigurieren wir (hier im Beispiel) den Jetty für den Java Enterprise Standard 'JEE 8'. Das war die letzte Version vor der Umbenennung vom 'javax' in den 'jakarta'-Namensraum. Jetty unterstützt zur Zeit die JEE-Standards bis 'JEE 11'.

Wir initialisieren unsere Konfiguration in 'jetty-base' mit:

cd $JETTY_BASE
java -jar $JETTY_HOME/start.jar --add-modules=server,http,ee8-deploy,ee8-jsp

Die Start-Konfiguration wird in '$JETTY_BASE/start.d' angelegt. Wir passen von Hand den HTTP-Listener in der Datei 'http.ini' im Verzeichnis 'start,d' an:

jetty.http.host=127.0.0.1
jetty.http.port=34567

Angepasst werden muss:

  • der IP-Port (im Beispiel 34567 am Localhost-Interface)

Deployment einer Anwendung

In der Beispiel-Konfiguration wurde das Verzeichnis ~/jetty-base/webapps/ für die Anwendungen konfiguriert. Wir legen dieses Verzeichnis an und kopieren eine minimale Anwendung hinein:

mkdir -p $HOME/jetty-base/webapps/hello/WEB-INF/

Dort legen wir die Datei $HOME/jetty-base/webapps/hello/WEB-INF/web.xml mit folgendem Inhalt an:

<?xml version="1.0" encoding="UTF-8"?>
<web-app 
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xmlns="http://java.sun.com/xml/ns/javaee"
	xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
	xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" 
	id="WebApp_ID" version="3.0">
</web-app>

Dazu eine einfache JSP-Datei $HOME/jetty-base/webapps/hello/index.jsp:

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html lang="de-de">
<body>
<h1>Hallo Welt</h1>
<p>Java Version: <%= System.getProperty("java.version")  %></p>
</body>
</html>

Nun können wir die HTTP-Requests, die an eine Domain im Paket gesendet werden, an den Jetty weiterleiten. Das funktioniert über eine .htaccess-Datei, zum Beispiel im Verzeichnis ~/doms/hs-example.de/htdocs-ssl:

DirectoryIndex disabled
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-l
RewriteRule ^(.*) http://127.0.0.1:34567/$1 [proxy,last]

Achtung der IP-Port 34567 muss hier wieder angepasst werden!

Dadurch ist die Mini-Anwendung unter der URL "https://hs-example.de/hello/" erreichbar.

Start des Jetty

Damit Jetty bei einem Reboot der Hostsharing-Server automatisch gestartet wird, konfigurieren wir den Prozessmonitor systemd entsprechend.

Wir legen ein Verzeichnis für die Konfiguration des systemd an und legen eine Unit-Konfiguration für einen Service dort ab:

mkdir -p ~/.config/systemd/user

Die Unit-Datei ~/.config/systemd/user/jetty.service

[Unit]
Description=Jetty

[Service]
Type=simple
WorkingDirectory=%h/jetty-base
Environment="JETTY_BASE=%h/jetty-base"
Environment="JETTY_HOME=%h/jetty-home-12.1.14"
ExecStart=/usr/bin/java -jar %h/jetty-home-12.1.14/start.jar
Restart=always
PrivateTmp=true
MemoryAccounting=true
CPUAccounting=true
MemoryHigh=768M
MemoryMax=1024M

[Install]
WantedBy=default.target

Links