Tomcat在重启时启动:init.d脚本不成功

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (230)

我需要在重启Linux操作系统后启动tomcat。我无法通过重启让init.d正常运行。

操作系统和版本:

JRE: 1.8.0
JAVA: 1.8.0
Tomcat:  8.5.34
Linux:  Amazon Linux 2

****完成所有步骤作为根

TOMCAT部署配置:

1)  Install tomcat 8.5.34 using a tar.gz gzip file
2)  configure /{$TOMCAT}/conf/server.xml to use 443 connectors
3)  Deploy MicroStrategy application through deploying a .war file on restart
4)  configure SSL keys using Java Key Store
5)  configure microstrategy webapp for SAML authentication using PING

init.d脚本部署配置

注意:我通过/etc/init.d/tomcat和chkconfig实用程序尝试了各种脚本。 1)使用vi创建tomcat 2)插入脚本(我已经尝试了很多脚本,但这个似乎是我需要和最明确的最简单的)3)chmod 755 /etc/init.d/tomcat 4)chkconfig --add tomcat 5)chkconfig --level 2345 tomcat on(此命令不成功)6)chkconfig --list tomcat(返回tomcat 0:off 1:off 2:off 3:on 4:on 5:on 6:关闭)

测试此脚本是成功的:

./etc/init.d/tomcat start
./etc/init.d/tomcat stop
./etc/init.d/tomcat restart 

确认chkconfig创建了链接:

/etc/rc1.d  K20tomcat
/etc/rc2.d  K20tomcat
/etc/rc3.d  S82tomcat
/etc/rc4.d  S82tomcat
/etc/rc5.d  S82tomcat
/etc/rc6.d  K20tomcat

Tomcat的脚本文件

#!/bin/sh
#
# chkconfig: 345 82 20
#
# description:  Tomcat Service


JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk
JRE_HOME=/usr/lib/jvm/jre-1.8.0-openjdk
CATALINA_HOME=/opt/apache-tomcat-8.5.34
export JAVA_HOME JRE_HOME CATALINA_HOME
case $1 in
start)
cd $CATALINA_HOME/bin
./startup.sh
;;
stop)
cd $CATALINA_HOME/bin
./shutdown.sh
;;
restart)
cd $CATALINA_HOME/bin
./shutdown.sh    
./startup.sh
;;
*)
echo "Usage: $0 {start|stop|restart}"
exit 1
esac
exit 0

期望

我希望在重新启动后可以从指向此设备的公共URL访问{$ TOMCAT} / webapps / ROOT的基本URL。重启后,tomcat服务仍处于停止状态。

有什么建议?

提问于
用户回答回答于

亚马逊的Linux 2使用systemd应当与向后兼容的服务经理systemvinit脚本提供的是systemd-sysv-generator执行生成服务单位出的/etc/init.d脚本(不是你的情况建议我认为)。由于您自己编写脚本,因此建议您编写适当的服务单元。 这个* .service文件很可能已经存在于用于安装tomcat的tar.gz上。

用户回答回答于

使用systemd而不是systemv启用tomcat

描述

使用的脚本相对简单,因为它的唯一功能是在重启时启动服务器。我已经使用TOMCAT bin中的setenv.sh建立了所有必需的环境变量。

变量

  1. 测试:任何字母数字值
  2. TOMCAT_INSTALL_PATH:您安装TOMCAT的位置

脚步

  1. 在/ etc / systemd / system中创建一个文件tomcat @ .service
    • 可以在/etc/systemd/system/multi-user.target.wants/tomcat.service中找到模板。

tomcat的@。服务

[Unit]
Description=Apache Tomcat Web Application Container
After=syslog.target network.target

[Service]
Type=forking
Environment="CATALINA_HOME={TOMCAT_INSTALL_PATH}"
ExecStart=/opt/apache-tomcat-8.5.34/bin/startup.sh
ExecStop=$CATALINA_HOME/bin/shutdown.sh
SuccessExitStatus=143
User=root

[Install]
WantedBy=multi-user.target
  1. 创建空的tomcat.pid文件(我的文件位于{TOMCAT_INSTALL_PATH} / conf
  2. 将CATALINA_PID =“{TOMCAT_INSTALL_PATH} /conf/tomcat.pid 行写入{TOMCAT_INSTALL_PATH} / bin中的setenv.sh
  3. systemctl daemon-reload
  4. systemctl启用tomcat@test.service
  5. systemctl启动tomcat@test.service

疑难解答

systemctl status tomcat@test.service -l

- 此命令将向控制台提供日志输出,该控制台显示也写入systemctl日志的输出。我在初始设置时收到错误,因为tomcat无法解释哪个是主要的tomcat进程,并在读取其他进程结束时关闭。通过在/ conf文件夹中创建pid文件并在setenv.sh中设置CATALINA_PID变量,可以解决这个问题。

扫码关注云+社区

领取腾讯云代金券