我在ubuntu 16.04上安装了tomcat9,在命令行下正常启动,
sudo /usr/local/tomcat9/startup.sh
并且webapps中的所有项目都可以加载。
但是,如果我尝试在操作系统启动时启动它,它总是会在加载“webapps/docs”时挂起。这是 catalina.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
。
我会尝试这样的事情:
- 检查你的默认java
update-alternatives --config java
- 检查某处是否
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
保存文件并退出。
上述命令将在每次计算机启动时运行该命令。