3

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.

4 Answers 4

2

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

1
  • Thx, that should solve all my problems :-).
    – Trollhorn
    Apr 20, 2011 at 16:02
4

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...

1
  • 1
    Works for me on Ubuntu 16.04
    – Jerry U
    May 29, 2020 at 1:14
2

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.

1

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.

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .