我在 Ubuntu 14.04 中安装 Tomcat7 时遇到问题。我的系统上已经安装了 JDK(1.7 版),但使用时apt-get install tomcat7
出现以下错误:
Setting up tomcat7-common (7.0.52-1ubuntu0.1) ...
Setting up tomcat7 (7.0.52-1ubuntu0.1) ...
Creating config file /etc/default/tomcat7 with new version
Adding system user `tomcat7' (UID 108) ...
Adding new user `tomcat7' (UID 108) with group `tomcat7' ...
Not creating home directory `/usr/share/tomcat7'.
Creating config file /etc/logrotate.d/tomcat7 with new version
* Starting Tomcat servlet engine tomcat7 **[fail]**
我尝试了互联网上能找到的所有解决方案,例如:
apt-get purge tomcat7
使用或卸载了 tomcat7apt-get autoremove tomcat7
,然后再次安装,但出现相同的错误。:(尝试过
apt-get update
删除 tomcat7 并再次安装但失败了。.bashrc
在或中设置 CATALINA 路径/etc/environment
。但是没有运气。
笔记:我已经在本地 Ubuntu 14.04 服务器上安装了相同的 tomcat7,并且第一次尝试就正确安装。
答案1
我通过安装 libtomcat7-Java 包解决了这个问题。这似乎是缺少的依赖项。
sudo apt-get install libtomcat7-java
答案2
我理解这个问题。这是由于 (a) 将 Tomcat 各部分拆分到不同的 FS 位置(/etc、/var、/usr/lib、/usr/share 等)(b) 为日志和临时目录等分配了错误的所有权(=权限)。然后用户 tomcat7 甚至无法在启动时写入其投诉。
简单的解决方案是从 tomcat.apache.org 安装 tgz(并手动启动它;如果您使用 tc 进行开发,那么没问题)。另一种方法是阅读启动脚本,了解要更新哪些目录,检查它们的所有权。Wasy hack 是将用户 tomcat7 添加到通常具有写入位的组 root。
答案3
我也尝试通过二进制方法(tgz)进行安装。之后 tomcat 服务运行正常,并且http://My_Ip:8080
也能正常工作,但是检查/var/log/tomcat/
日志时显示了一些错误,
at
org.apache.catalina.core.ContainerBase$StopChild.call(ContainerBase.java:1564)
at java.util.concurrent.FutureTask.run(FutureTask.java:262) at
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:745)
Dec 08, 2014 10:12:47 AM org.apache.coyote.AbstractProtocol stop INFO:
Stopping ProtocolHandler ["http-bio-8080"] Dec 08, 2014 10:12:47 AM
org.apache.coyote.AbstractProtocol destroy INFO: Destroying
ProtocolHandler ["http-bio-8080"]
答案4
我在使用 tomcat8 时遇到了同样的问题,通过删除 tomcat8-common 可以解决问题:
sudo apt-get purge tomcat8-common
我希望这能够帮助其他遇到同样问题的人。