启动jetty作为debian服务失败

时间:2016-12-16 10:28:45

标签: debian jetty

我已经安装了jetty 9但我无法启动/停止它作为服务。 从命令行运行。

root@backend:/opt/jetty# service jetty start
Job for jetty.service failed. See 'systemctl status jetty.service' and 'journalctl -xn' for details.
root@oakstair-backend:/opt/jetty# systemctl status jetty.service
● jetty.service - LSB: Jetty start script.
   Loaded: loaded (/etc/init.d/jetty)
   Active: failed (Result: exit-code) since Fri 2016-12-16 10:14:47 UTC; 6min ago
  Process: 11826 ExecStart=/etc/init.d/jetty start (code=exited, status=1/FAILURE)
Dec 16 10:14:43 backend jetty[11826]: JETTY_PID      =  /var/run/jetty.pid
Dec 16 10:14:43 backend jetty[11826]: JETTY_START    =  /opt/jetty/start.jar
Dec 16 10:14:43 backend jetty[11826]: JETTY_ARGS     =  --add-to-start=console-capture jetty.state=/opt/jetty/jetty.state jetty-logging.xml jetty-started.xml
Dec 16 10:14:43 backend jetty[11826]: JAVA_OPTIONS   =  -Dorg.eclipse.jetty.LEVEL=DEBUG -Djetty.logging.dir=/opt/jetty/logs -Djetty.home=/opt/jetty -Djetty.base=/opt/jetty -Djava.io.tmpdir=/tmp
Dec 16 10:14:43 backend jetty[11826]: JAVA           =  /usr/bin/java
Dec 16 10:14:43 backend jetty[11826]: RUN_CMD        =  /usr/bin/java -Dorg.eclipse.jetty.LEVEL=DEBUG -Djetty.logging.dir=/opt/jetty/logs -Djetty.home=/opt/jetty -Djetty.base=/opt/jetty -Djava.io.tmpdir=/tmp -jar /opt/jetty/start.jar --add-to-st...ml jetty-started.xml
Dec 16 10:14:47 backend jetty[11826]: Starting Jetty: FAILED Fri Dec 16 10:14:47 UTC 2016
Dec 16 10:14:47 backend systemd[1]: jetty.service: control process exited, code=exited status=1
Dec 16 10:14:47 backend systemd[1]: Failed to start LSB: Jetty start script..
Dec 16 10:14:47 backend systemd[1]: Unit jetty.service entered failed state.
Hint: Some lines were ellipsized, use -l to show in full.
root@backend:/opt/jetty# 
root@backend:/opt/jetty# ls /var/log/jetty/
root@backend:/opt/jetty# 

目前使用jetty 9.3.14,因为我第一次尝试使用9.4.0,结果相同。

不能说码头非常有助于告诉它为什么不想作为一项服务开始。找到了一些与文件/目录所有者有相同问题的人。但我已经检查过了。

哎呀我发现它根据需要记录到/ opt / jetty / logs而不是/ var / logs / jetty。所以现在我有更多的信息.​​..

StartLog Establishing /opt/jetty/logs/start.log on Fri Dec 16 13:40:16 UTC 2016
org.eclipse.jetty.start.graph.GraphException: Missing referenced dependency: console-capture
        at org.eclipse.jetty.start.graph.Graph.selectNodes(Graph.java:470)
        at org.eclipse.jetty.start.BaseBuilder.build(BaseBuilder.java:152)
        at org.eclipse.jetty.start.Main.start(Main.java:407)
        at org.eclipse.jetty.start.Main.main(Main.java:75)

2 个答案:

答案 0 :(得分:2)

-Djetty.home=/opt/jetty -Djetty.base=/opt/jetty

请勿对jetty.homejetty.base使用相同的目录。

正如文档和启动警告(自Jetty 9.2.0以来)告诉你的那样。

一般性建议(当你这样做时,你会感到高兴,这一切都开始有意义了):

jetty-home(或较旧的jetty-distribution tarball)的全新发行版解压缩到 ${jetty.home}目录中。

  

单独留出${jetty.home}目录,不要对其进行编辑,不要重命名,不要删除内容,不要添加内容,不要删除内容。改变其中的任何内容。

在某处设置正确的${jetty.base}目录,确保它不会以任何方式与您的${jetty.home}目录重叠。

现在,将您的jetty实例完全配置在${jetty.base}目录中。

示例:

# Initialize a fresh base directory (only need to do this once, ever)
$ mkdir /path/to/mybase
$ cd /path/to/mybase

# Prepare the jetty.base directory (this just creates directories, and adds start.d/*.ini for you)
$ java -jar /path/to/jetty-dist/start.jar --add-to-start=http,deploy,resources,ext,jmx,requestlog,console-capture,annotations,jsp
MKDIR : ${jetty.base}/start.d
INFO  : webapp          transitively enabled, ini template available with --add-to-start=webapp
INFO  : ext             initialized in ${jetty.base}/start.d/ext.ini
INFO  : server          transitively enabled, ini template available with --add-to-start=server
INFO  : requestlog      initialized in ${jetty.base}/start.d/requestlog.ini
INFO  : servlet         transitively enabled
INFO  : jsp             initialized in ${jetty.base}/start.d/jsp.ini
INFO  : resources       initialized in ${jetty.base}/start.d/resources.ini
INFO  : annotations     initialized in ${jetty.base}/start.d/annotations.ini
INFO  : plus            transitively enabled
INFO  : deploy          initialized in ${jetty.base}/start.d/deploy.ini
INFO  : security        transitively enabled
INFO  : jmx             initialized in ${jetty.base}/start.d/jmx.ini
INFO  : apache-jsp      transitively enabled
INFO  : console-capture initialized in ${jetty.base}/start.d/console-capture.ini
INFO  : jndi            transitively enabled
INFO  : http            initialized in ${jetty.base}/start.d/http.ini
MKDIR : ${jetty.base}/lib
MKDIR : ${jetty.base}/lib/ext
MKDIR : ${jetty.base}/logs
MKDIR : ${jetty.base}/resources
MKDIR : ${jetty.base}/webapps
INFO  : Base directory was modified

$ ls -F
lib/  logs/  resources/  start.d/  webapps/

# Configure your jetty.base instance
$ cp /tmp/mywebapp.war webapps/
$ edit start.d/http.ini

# Start your server instance (manually)
$ java -jar /path/to/jetty-dist/start.jar

因为你是通过服务开始的......

${jetty.home}/bin/jetty.sh中找到的启动脚本需要进入相应的/etc/目录(此处列出的选项太多)。

您可以在通常的JETTY_HOME文件中配置JETTY_BASE/etc/default/jetty目录。

将来,当Jetty的新版本发布时......

  1. 将新的jetty-distribution解压缩到新的空目录,例如/opt/jetty-dist-9.5.0
  2. 修改您的/etc/default/jetty并设置JETTY_HOME=/opt/jetty-dist-9.5.0
  3. 启动码头
  4. 您无需编辑${jetty.base}进行升级。

答案 1 :(得分:0)

Jetty的默认端口为8080。其他服务可能已经在使用此端口,因此,如果您尝试启动此过程,将会失败,但不会返回适当的错误。有两种更改默认端口的方法;

  1. sudo vim /etc/default/jetty8

  2. sudo vim /etc/jetty8/start.ini

,在两种情况下,都需要通过将“端口”更改为您的值来添加和修改此行JETTY_PORT=[port]。 之后,您可以重新启动服务sudo systemctl restart jetty8.service

亲切的问候, 亚当·贾泽巴克