Configuring Jetty as a service - how?
Solution 1
If you can not find jetty.sh just download last one http://dev.eclipse.org/svnroot/rt/org.eclipse.jetty/jetty/trunk/jetty-distribution/src/main/resources/bin/jetty.sh
And save it to /etc/init.d/jetty
Also you may need to edit /etc/default/jetty to set your individual settings like:
JAVA_HOME=
JAVA_OPTIONS=
JETTY_HOME=
JETTY_USER=
JETTY_LOGS=
If you want service start after reboot do not forget add it to default startup level with update-rc.d
Solution 2
For CentOS 7 Linux I have downloaded the latest Jetty distribution and created the file /etc/systemd/system/jetty.service
:
[Unit]
Description=Jetty
After=network-online.target
[Service]
Type=simple
User=jetty
Group=jetty
ExecStart=/usr/bin/java -jar /usr/share/java/jetty-distribution-9.3.10.v20160621/start.jar jetty.home=/usr/share/java/jetty-distribution-9.3.10.v20160621 jetty.base=/var/www/jetty jetty.http.port=8080
ExecStop=/bin/kill ${MAINPID}
SuccessExitStatus=143
[Install]
WantedBy=multi-user.target
Then I have run the commands to create the user and the base dir:
# useradd -s /sbin/nologin jetty
# java -jar /usr/share/java/jetty-distribution-9.3.10.v20160621/start.jar \
jetty.home=/usr/share/java/jetty-distribution-9.3.10.v20160621 \
jetty.base=/var/www/jetty \
--add-to-startd=http,servlet,webapp,deploy,resources,ext,fcgi,websocket,proxy-protocol
# chown -R jetty.jetty /var/www/jetty
Then I have activated the new service:
# systemctl enable jetty
# systemctl start jetty
And finally checked the logs:
# systemctl status -l jetty
And verified that Jetty is listening at the port 8080:
# netstat -an | grep -w LISTEN
I think the commands on Debian Linux would be similar...
Solution 3
There should be a jetty.sh
script into the bin
directory. I don't know if it works under Debian, but it should be a good starting point.
Solution 4
What Alexander Farber suggest is basically correct and usable but I'd like to point to my little project https://github.com/cosenmarco/jetty-systemd-notifier which signals systemd about the life-cycle of Jetty.
In this project I'm trying to provide the best possible way to interface to systemd. The "simple" service type may not be the best in some situations because the service manager will consider the unit started immediately after the main service process has been forked off.
(from systemd docs)
If there are dependent services, they may start sending requests to jetty before it's ready to receive them.
Also this means systemctl start command lines for simple services will report success even if the service's binary cannot be invoked successfully
meaning that if for some reason jetty couldn't start because of its configuration, it would anyway report a healthy state to systemd.
Additionally, in the provided example, I'm also trying to reproduce some useful functionality which is usually found in jetty.sh.
Related videos on Youtube
Trollhorn
Updated on September 18, 2022Comments
-
Trollhorn almost 2 years
As I'm using Debian, and as the packages in the package manager aren't quite up-to-date, I'm forced to do a manual installation.
I downloaded the latest version as a .tar.gz file, and extracted it to /opt. Now I'm unsure on what to do next.
I need to have Jetty run as a service on startup, for every user on this PC. But how? I couldn't find anything in the documentation.
-
Trollhorn about 13 yearsThx, that should solve all my problems :-).
-
styl3r about 4 yearsWorks for me on Ubuntu 16.04