启动 tomcat 在启动时挂起,但在命令行中成功运行

启动 tomcat 在启动时挂起,但在命令行中成功运行

我在ubuntu 16.04上安装了tomcat9,在命令行下正常启动,

sudo /usr/local/tomcat9/startup.sh

并且webapps中的所有项目都可以加载。

但是,如果我尝试在操作系统启动时启动它,它总是会在加载“webapps/docs”时挂起。这是 catalina.out 的快照:

卡特琳娜.out


我尝试了3种自动启动tomcat的方法。

1. 在目录init.d中设置一个服务

1) 将文件“catalina.sh”复制到“/etc/init.d”中,并将其重命名为“tomcat” 2) 将Evirement Virables添加到该文件中:

CATALINA_HOME=/usr/local/tomcat9
JAVA_HOME=/usr/lib/jvm/jdk1.8.0_111 

3)使用命令

  service tomcat start

2.在systemd中设置服务

1)编辑文件“/etc/systemd/system/tomcat.service” 在此输入图像描述

2)在命令行中加载配置

   systemctl daemon-reload
   systemctl start tomat

3)检查状态

   systemctl status tomat

表明tomcat服务启动成功

3.先设置“rc.local”服务,并在“rc.local”文件中添加启动脚本

1)编辑文件“/etc/systemd/system/rc-local.servic”

[Unit]
Description=/etc/rc.local Compatibility
ConditionPathExists=/etc/rc.local

[Service]
Type=forking
ExecStart=/etc/rc.local start
TimeoutSec=0
StandardOutput=tty
RemainAfterExit=yes
SysVStartPriority=99

[Install]
WantedBy=multi-user.target

2)编辑文件“/etc/rc.local”

  sudo /usr/local/tomcat9/bin/startup.sh

3)启用“rc.local”服务

  sudo systemctl enable rc-local.service

4)重新启动

所有这些方法都给出了相同的结果:tomcat 已启动,但加载 web 应用程序不完整,挂在加载第一个应用程序“文档”上。

我对此一无所知,请帮忙。

答案1

我曾经有过类似的行为,在启动时设置了不同的 JAVA_HOME 系统环境变量。
可疑的线路是这样的:嫌疑线

这看起来与您提到的 java 不同JAVA_HOME=/usr/lib/jvm/jdk1.8.0_111

我会尝试这样的事情:

  1. 检查你的默认javaupdate-alternatives --config java
  2. 检查某处是否JAVA_PATH设置了a

此外,您还提到您复制catalina.sh到了/etc/init.d.这也可能是一个问题。在我们的环境中(实际上是tomcat7,但我认为它非常相似),我们有一个简单的脚本/etc/init.d设置 JAVA_HOME 为启动启动文件。它看起来像这样:

JAVA_HOME=/opt/jdk1.8.0_92/
export JAVA_HOME
JRE_HOME=/opt/jdk1.8.0_92/jre
export JRE_HOME

PATH=$JAVA_HOME/bin:$PATH
export PATH
CATALINA_HOME=/opt/tomcat

case $1 in
start)
sh $CATALINA_HOME/bin/startup.sh
;;
stop)
sh $CATALINA_HOME/bin/shutdown.sh -force
;;
restart)
sh $CATALINA_HOME/bin/shutdown.sh -force
sleep 3
sh $CATALINA_HOME/bin/startup.sh
;;

也许你应该考虑用你的启动startup.sh/etc/init.d脚本。

我希望为您提供一些意见以进一步调查您的问题。

答案2

就我而言(使用 tomcat 8.5 和 systemd.service 单元,没有 rc.local/sysv),解决方案是更改为:

WorkingDirectory=/opt/tomcat-foobar/

答案3

在启动时启动 tomcat 的一种方法是cron使用以下@reboot属性来运行它:

打开终端并输入:

sudo crontab -e

在文件末尾输入命令:

@重启PATH_TO_WHERE_TOMCAT_INSTALLED/bin/startup.sh

保存文件并退出。

上述命令将在每次计算机启动时运行该命令。

相关内容