无法在Ubuntu中将Jetty9作为服务安装

时间:2018-12-03 15:08:26

标签: java jetty systemd jetty-9

我遵循docs的目的是将Jetty9安装为服务,但是每当我运行时

callAPI()

它将失败,并且没有消息,我的service jetty start JETTY_HOME,其中包含版本9.4.14的home distribution。我还使用我的Web应用程序和模块在/opt/jetty9上创建了JETTY_BASE

Jetty Home和Base均由用户 jetty 拥有。然后,我以以下方式链接到我的init.d文件夹:

/usr/share/jetty9

然后我创建了一个包含以下内容的ln -s /opt/jetty9/bin/jetty.sh /etc/init.d/jetty 文件:

/etc/default/jetty

如果我在基本文件夹中使用# change to 1 to prevent Jetty from starting NO_START=0 # change to 'no' or uncomment to use the default setting in /etc/default/rcS VERBOSE=yes # Run Jetty as this user ID (default: jetty) # Set this to an empty string to prevent Jetty from starting automatically JETTY_USER=jetty # The home directory of the Java Runtime Environment (JRE). You need at least # Java 6. If JAVA_HOME is not set, some common directories for OpenJDK and # the Oracle JDK are tried. #JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java # Extra options to pass to the JVM #JAVA_OPTIONS="-Xmx256m -Djava.awt.headless=true" # Timeout in seconds for the shutdown of all webapps #JETTY_SHUTDOWN=30 # Additional arguments to pass to Jetty #JETTY_ARGS= # Jetty uses a directory to store temporary files like unpacked webapps TMPDIR=/opt/jetty9/tmp JETTY_HOME=/opt/jetty9 JETTY_BASE=/usr/share/jetty9 # Default for number of days to keep old log files in /var/log/jetty9/ #LOGFILE_DAYS=14 # If you run Jetty on port numbers that are all higher than 1023, then you # do not need authbind. It is used for binding Jetty to lower port numbers. # (yes/no, default: no) #AUTHBIND=yes JETTY_HOST=0.0.0.0 启动Jetty,那将毫无问题。另外,如果我运行

java -jar $JETTY_HOME/start.jar

它也可以正常运行,但是当我打电话给service jetty supervise 时,它失败了:

start

这是root@app:/usr/share/jetty9# service jetty start Job for jetty.service failed because the control process exited with error code. See "systemctl status jetty.service" and "journalctl -xe" for details. root@app:/usr/share/jetty9# service jetty status ● jetty.service - LSB: Jetty start script. Loaded: loaded (/etc/init.d/jetty; generated) Active: failed (Result: exit-code) since Mon 2018-12-03 15:05:26 UTC; 14s ago Docs: man:systemd-sysv-generator(8) Process: 21162 ExecStop=/etc/init.d/jetty stop (code=exited, status=0/SUCCESS) Process: 21202 ExecStart=/etc/init.d/jetty start (code=exited, status=1/FAILURE) Dec 03 15:05:22 app systemd[1]: Stopped LSB: Jetty start script.. Dec 03 15:05:22 app systemd[1]: Starting LSB: Jetty start script.... Dec 03 15:05:26 app jetty[21202]: Starting Jetty: FAILED Mon Dec 3 15:05:26 UTC 2018 Dec 03 15:05:26 app systemd[1]: jetty.service: Control process exited, code=exited status=1 Dec 03 15:05:26 app systemd[1]: jetty.service: Failed with result 'exit-code'. Dec 03 15:05:26 app systemd[1]: Failed to start LSB: Jetty start script.. 的输出:

service jetty check

有什么想法吗?

更新

root@app:/usr/share/jetty9# service jetty check Jetty NOT running JAVA = /usr/bin/java JAVA_OPTIONS = -Djetty.home=/opt/jetty9 -Djetty.base=/usr/share/jetty9 -Djava.io.tmpdir=/opt/jetty9/tmp JETTY_HOME = /opt/jetty9 JETTY_BASE = /usr/share/jetty9 START_D = /usr/share/jetty9/start.d START_INI = /usr/share/jetty9/start.ini JETTY_START = /opt/jetty9/start.jar JETTY_CONF = /opt/jetty9/etc/jetty.conf JETTY_ARGS = jetty.state=/usr/share/jetty9/jetty.state jetty-started.xml JETTY_RUN = /var/run/jetty JETTY_PID = /var/run/jetty/jetty.pid JETTY_START_LOG = /var/run/jetty/jetty-start.log JETTY_STATE = /usr/share/jetty9/jetty.state JETTY_START_TIMEOUT = 60 RUN_CMD = /usr/bin/java -Djetty.home=/opt/jetty9 -Djetty.base=/usr/share/jetty9 -Djava.io.tmpdir=/opt/jetty9/tmp -jar /opt/jetty9/start.jar jetty.state=/usr/share/jetty9/jetty.state jetty-started.xml 中的用户更改为 root 可以解决此问题,但这不是解决方案,不是吗?

/etc/default/jetty

1 个答案:

答案 0 :(得分:0)

我终于完成了这项工作, jetty 用户应该具有对以下文件夹的权限,并且/usr/sbin/nologin作为外壳程序(如here所述)。

JETTY_HOME
JETTY_BASE
/var/run/jetty   <-- couldn't find a reference to this folder in the docs

并将以下内容添加到您的/etc/default/jetty

JETTY_SHELL=/bin/sh
JETTY_LOGS=/usr/share/jetty9/logs
JETTY_START_LOG=/usr/share/jetty9/logs/jetty-start-log.log

此外,您应该仔细检查文件夹中是否没有其他用户拥有除 jetty 之外的剩余日志文件。