在Ubuntu 16.04上安装后无法启动tomcat:" tomcat.service的作业失败,因为控制进程退出并显示错误代码。"

时间:2017-12-02 00:04:05

标签: ubuntu tomcat

我按照https://www.digitalocean.com/community/tutorials/how-to-install-apache-tomcat-8-on-ubuntu-16-04步骤在Ubuntu 16.04上安装tomcat 8.5.24,然后在"中运行[Days]步骤6:调整防火墙并测试Tomcat服务器"。

然后我无法启动tomcat,

sudo ufw allow 8080

并且链接$ sudo systemctl start tomcat Job for tomcat.service failed because the control process exited with error code. See "systemctl status tomcat.service" and "journalctl -xe" for details. 在Firefox和Google Chrome浏览器中都不起作用。

我想知道如何解决这个问题。

以下详细信息是我遵循http://localhost:8080/的上述输出消息的内容。在sudo systemctl start tomcat失败时/opt/tomcat/bin/startup.sh似乎成功了。非常感谢你的帮助!

/opt/tomcat/bin/shutdown.sh

我的Java版本

$ systemctl status tomcat.service
● tomcat.service - Apache Tomcat Web Application Container
   Loaded: loaded (/etc/systemd/system/tomcat.service; disabled; vendor preset: enabled)
   Active: activating (auto-restart) (Result: exit-code) since Fri 2017-12-01 18:55:30 EST; 2s ago
  Process: 19490 ExecStop=/opt/tomcat/bin/shutdown.sh (code=exited, status=1/FAILURE)
  Process: 19478 ExecStart=/opt/tomcat/bin/startup.sh (code=exited, status=0/SUCCESS)
 Main PID: 19440 (code=exited, status=127)

Dec 01 18:55:30 ocean systemd[1]: tomcat.service: Control process exited, code=exited status=1
Dec 01 18:55:30 ocean systemd[1]: Failed to start Apache Tomcat Web Application Container.
Dec 01 18:55:30 ocean systemd[1]: tomcat.service: Unit entered failed state.
Dec 01 18:55:30 ocean systemd[1]: tomcat.service: Failed with result 'exit-code'.

$ journalctl -xe

-- Unit tomcat.service has begun starting up.
Dec 01 18:51:24 ocean startup.sh[18873]: Existing PID file found during start.
Dec 01 18:51:24 ocean startup.sh[18873]: Removing/clearing stale PID file.
Dec 01 18:51:24 ocean startup.sh[18873]: Tomcat started.
Dec 01 18:51:24 ocean shutdown.sh[18885]: PID file found but no matching process was found. Stop aborted.
Dec 01 18:51:24 ocean systemd[1]: tomcat.service: Control process exited, code=exited status=1
Dec 01 18:51:24 ocean systemd[1]: Failed to start Apache Tomcat Web Application Container.
-- Subject: Unit tomcat.service has failed
-- Defined-By: systemd
-- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel
-- 
-- Unit tomcat.service has failed.
-- 
-- The result is failed.
Dec 01 18:51:24 ocean systemd[1]: tomcat.service: Unit entered failed state.
Dec 01 18:51:24 ocean systemd[1]: tomcat.service: Failed with result 'exit-code'.
Dec 01 18:51:34 ocean systemd[1]: tomcat.service: Service hold-off time over, scheduling restart.
Dec 01 18:51:34 ocean systemd[1]: Stopped Apache Tomcat Web Application Container.
-- Subject: Unit tomcat.service has finished shutting down
-- Defined-By: systemd
-- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel
-- 
-- Unit tomcat.service has finished shutting down.
Dec 01 18:51:34 ocean systemd[1]: Starting Apache Tomcat Web Application Container...
-- Subject: Unit tomcat.service has begun start-up
-- Defined-By: systemd
-- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel
-- 
-- Unit tomcat.service has begun starting up.
Dec 01 18:51:35 ocean startup.sh[18896]: Existing PID file found during start.
Dec 01 18:51:35 ocean startup.sh[18896]: Removing/clearing stale PID file.
Dec 01 18:51:35 ocean startup.sh[18896]: Tomcat started.
Dec 01 18:51:35 ocean shutdown.sh[18908]: PID file found but no matching process was found. Stop aborted.
Dec 01 18:51:35 ocean systemd[1]: tomcat.service: Control process exited, code=exited status=1
Dec 01 18:51:35 ocean systemd[1]: Failed to start Apache Tomcat Web Application Container.
-- Subject: Unit tomcat.service has failed
-- Defined-By: systemd
-- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel
-- 
-- Unit tomcat.service has failed.
-- 
-- The result is failed.
Dec 01 18:51:35 ocean systemd[1]: tomcat.service: Unit entered failed state.
Dec 01 18:51:35 ocean systemd[1]: tomcat.service: Failed with result 'exit-code'.

更新

如果我运行

,而不是上面给出错误的$ java --version java 9.0.1 Java(TM) SE Runtime Environment (build 9.0.1+11) Java HotSpot(TM) 64-Bit Server VM (build 9.0.1+11, mixed mode) $ javac --version javac 9.0.1
sudo systemctl start tomcat

http://localhost:8080/显示正确的网页。那么一个人没有工作而另一个人工作的原因是什么呢?

6 个答案:

答案 0 :(得分:2)

使用户 tomcat 成为整个tomcat目录的所有者:

cd /opt && sudo chown -R tomcat tomcat/

答案 1 :(得分:1)

我通过从/etc/systemd/system/tomcat.service

JAVA_HOME 中删除“ / jre ”解决了此问题

答案 2 :(得分:1)

您可能在 tomcat 服务中添加了以下行:-

<块引用>

Environment="JAVA_HOME=/usr/lib/jvm/default-java"

您必须将其替换为您正在使用的实际 Java 版本。 在终端中键入以下命令:-

<块引用>

sudo update-java-alternatives -l

output

将上述命令的输出替换为 JAVA_HOME 变量路径,您的变量应如下所示:-

<块引用>

Environment="JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-amd64"

现在重新加载守护进程并重新启动您的服务,它应该可以正常工作

<块引用>

sudo systemctl daemon-reload

<块引用>

sudo systemctl 启动 tomcat

查看服务状态

<块引用>

sudo systemctl status tomcat

答案 3 :(得分:0)

查找JAVA_Home($ env | grep JAVA_HOME)

sudo vi /etc/systemd/system/tomcat.service

Environment =“ JAVA_HOME = / usr / lib / jvm / java-11-openjdk-amd64”

答案 4 :(得分:0)

在Ubuntu上现有的 Tomcat 安装中,我也遇到了同样的问题:

当我尝试通过复制现有文件然后使用以下命令创建新文件来清除日志文件时,便开始遇到此问题:

sudo cp /opt/tomcat/logs/catalina.out catalina_copy.out
sudo rm -rf /opt/tomcat/logs/catalina.out
sudo touch /opt/tomcat/logs/catalina.out

当我尝试使用tomcat启动sudo systemctl restart tomcat时遇到了这个错误:

$ sudo systemctl start tomcat
Job for tomcat.service failed because the control process exited with error code. See "systemctl status tomcat.service" and "journalctl -xe" for details.

这是我修复的方式

问题是,在我创建并复制了文件后,文件的所有权从tomcat更改为root,我通过在{{ 1}}目录:

/opt/tomcat/logs

我要做的就是通过运行以下命令将所有权从ls -lh 更改为root

tomcat

这次,当我尝试使用sudo chown -R tomcat:tomcat catalina.out sudo chown -R tomcat:tomcat catalina_copy.out 启动tomcat服务器时,它运行良好。

仅此而已。

我希望这会有所帮助

答案 5 :(得分:0)

只需从'tomcat.service'文件中的JAVA_HOME中删除'/jre',服务就会启动。