I have a clean ubuntu installation (14) and try to run Tomcat7. I have installed it via terminal, run the "sudo service tomcat7 start" command which should start tomcat, but when I try to open: localhost:8080, the welcome index page is not loading and I get a 404 error (file not found). The 8080 port is not opened either, it seem like some kind of permission problem.
我有一个干净的ubuntu安装(14)并尝试运行Tomcat7。我已经通过终端安装了它,运行应该启动tomcat的“sudo服务tomcat7 start”命令,但是当我尝试打开:localhost:8080时,欢迎索引页没有加载,我得到一个404错误(文件没有找到)。8080端口也没有打开,这看起来像是某种权限问题。
Netstat gives the following (note there is not listening for 8080 with tomcat started)
Netstat给出以下内容(注意,没有监听已启动的tomcat 8080)
android@localhost:~$ netstat -a | moreActive Internet connections (servers and established)Proto Recv-Q Send-Q Local Address Foreign Address State tcp 0 0 *:5900 *:* LISTEN tcp 0 0 192.168.10.102:5900 94.102.51.229:26238 SYN_RECV tcp 0 0 *:x11 *:* LISTEN tcp 0 0 *:ssh *:* LISTEN tcp 0 0 192.168.10.102:ssh 192.168.10.106:51076 ESTABLISHEDtcp6 0 0 [::]:ssh [::]:* LISTEN tcp6 1 0 192.168.10.102:37029 bud02s01-in-f9.1e1:http CLOSE_WAIT tcp6 0 0 192.168.10.102:33087 ea-in-f188.1e100.n:5228 ESTABLISHEDudp6 0 0 [::]:56456 [::]:* Active UNIX domain sockets (servers and established)Proto RefCnt Flags Type State I-Node Pathunix 2 [ ACC ] STREAM LISTENING 2049 /dev/socket/voldunix 2 [ ACC ] STREAM LISTENING 2062 /dev/socket/displaydunix 2 [ ACC ] STREAM LISTENING 2064 /dev/socket/mdnsunix 2 [ ACC ] STREAM LISTENING 2066 /dev/socket/dnsproxydunix 2 [ ACC ] STREAM LISTENING 2068 /dev/socket/netdunix 2 [ ] DGRAM 2462 /data/misc/wifi/sockets/wpa_ctrl_347-1unix 2 [ ] DGRAM 2463 /data/misc/wifi/sockets/wpa_ctrl_347-2unix 2 [ ACC ] STREAM LISTENING 2070 /dev/socket/rild-debugunix 2 [ ACC ] STREAM LISTENING 109645 /var/run/dbus/system_bus_socketunix 4 [ ] DGRAM 2496 /data/misc/wifi/sockets/p2p0unix 2 [ ] DGRAM 3401 /data/misc/wifi/sockets/wpa_ctrl_347-3
Catalina.out (log), gives the following error:
卡特琳娜。输出(log),出现以下错误:
Sep 08, 2014 9:52:46 AM org.apache.catalina.startup.ClassLoaderFactory validateFileWARNING: Problem with directory [/usr/share/tomcat7/common/classes], exists: [false], isDirectory: [false], canRead: [false]Sep 08, 2014 9:52:46 AM org.apache.catalina.startup.ClassLoaderFactory validateFileWARNING: Problem with directory [/usr/share/tomcat7/common], exists: [false], isDirectory: [false], canRead: [false]Sep 08, 2014 9:52:47 AM org.apache.catalina.startup.ClassLoaderFactory validateFileWARNING: Problem with directory [/usr/share/tomcat7/server/classes], exists: [false], isDirectory: [false], canRead: [false]Sep 08, 2014 9:52:47 AM org.apache.catalina.startup.ClassLoaderFactory validateFileWARNING: Problem with directory [/usr/share/tomcat7/server], exists: [false], isDirectory: [false], canRead: [false]Sep 08, 2014 9:52:47 AM org.apache.catalina.startup.ClassLoaderFactory validateFileWARNING: Problem with directory [/usr/share/tomcat7/shared/classes], exists: [false], isDirectory: [false], canRead: [false]Sep 08, 2014 9:52:47 AM org.apache.catalina.startup.ClassLoaderFactory validateFileWARNING: Problem with directory [/usr/share/tomcat7/shared], exists: [false], isDirectory: [false], canRead: [false]Sep 08, 2014 9:52:52 AM org.apache.coyote.AbstractProtocol initINFO: Initializing ProtocolHandler ["http-bio-8080"]Sep 08, 2014 9:52:52 AM org.apache.coyote.AbstractProtocol initSEVERE: Failed to initialize end point associated with ProtocolHandler ["http-bio-8080"]java.net.SocketException: Permission denied at java.net.ServerSocket.createImpl(ServerSocket.java:308) at java.net.ServerSocket.getImpl(ServerSocket.java:257) at java.net.ServerSocket.bind(ServerSocket.java:376) at java.net.ServerSocket.<init>(ServerSocket.java:237) at java.net.ServerSocket.<init>(ServerSocket.java:181) at org.apache.tomcat.util.net.DefaultServerSocketFactory.createSocket(DefaultServerSocketFactory.java:49) at org.apache.tomcat.util.net.JIoEndpoint.bind(JIoEndpoint.java:397) at org.apache.tomcat.util.net.AbstractEndpoint.init(AbstractEndpoint.java:640) at org.apache.coyote.AbstractProtocol.init(AbstractProtocol.java:434) at org.apache.coyote.http11.AbstractHttp11JsseProtocol.init(AbstractHttp11JsseProtocol.java:119) at org.apache.catalina.connector.Connector.initInternal(Connector.java:978) at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:102) at org.apache.catalina.core.StandardService.initInternal(StandardService.java:559) at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:102) at org.apache.catalina.core.StandardServer.initInternal(StandardServer.java:813) at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:102) at org.apache.catalina.startup.Catalina.load(Catalina.java:638) at org.apache.catalina.startup.Catalina.load(Catalina.java:663) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:606) at org.apache.catalina.startup.Bootstrap.load(Bootstrap.java:280) at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:454)Sep 08, 2014 9:52:52 AM org.apache.catalina.core.StandardService initInternalSEVERE: Failed to initialize connector [Connector[HTTP/1.1-8080]]org.apache.catalina.LifecycleException: Failed to initialize component [Connector[HTTP/1.1-8080]] at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:106) at org.apache.catalina.core.StandardService.initInternal(StandardService.java:559) at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:102) at org.apache.catalina.core.StandardServer.initInternal(StandardServer.java:813) at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:102) at org.apache.catalina.startup.Catalina.load(Catalina.java:638) at org.apache.catalina.startup.Catalina.load(Catalina.java:663) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:606) at org.apache.catalina.startup.Bootstrap.load(Bootstrap.java:280) at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:454)Caused by: org.apache.catalina.LifecycleException: Protocol handler initialization failed at org.apache.catalina.connector.Connector.initInternal(Connector.java:980) at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:102) ... 12 moreCaused by: java.net.SocketException: Permission denied at java.net.ServerSocket.createImpl(ServerSocket.java:308) at java.net.ServerSocket.getImpl(ServerSocket.java:257) at java.net.ServerSocket.bind(ServerSocket.java:376) at java.net.ServerSocket.<init>(ServerSocket.java:237) at java.net.ServerSocket.<init>(ServerSocket.java:181) at org.apache.tomcat.util.net.DefaultServerSocketFactory.createSocket(DefaultServerSocketFactory.java:49) at org.apache.tomcat.util.net.JIoEndpoint.bind(JIoEndpoint.java:397) at org.apache.tomcat.util.net.AbstractEndpoint.init(AbstractEndpoint.java:640) at org.apache.coyote.AbstractProtocol.init(AbstractProtocol.java:434) at org.apache.coyote.http11.AbstractHttp11JsseProtocol.init(AbstractHttp11JsseProtocol.java:119) at org.apache.catalina.connector.Connector.initInternal(Connector.java:978) ... 13 moreSep 08, 2014 9:52:52 AM org.apache.catalina.startup.Catalina loadINFO: Initialization processed in 4826 msSep 08, 2014 9:52:52 AM org.apache.catalina.core.StandardService startInternalINFO: Starting service CatalinaSep 08, 2014 9:52:52 AM org.apache.catalina.core.StandardEngine startInternalINFO: Starting Servlet Engine: Apache Tomcat/7.0.52 (Ubuntu)Sep 08, 2014 9:52:52 AM org.apache.catalina.startup.HostConfig deployDirectoryINFO: Deploying web application directory /var/lib/tomcat7/webapps/ROOTSep 08, 2014 9:53:17 AM org.apache.catalina.startup.Catalina startINFO: Server startup in 24972 msSep 08, 2014 9:53:17 AM org.apache.catalina.core.StandardServer awaitSEVERE: StandardServer.await: create[localhost:8005]: java.net.SocketException: Permission denied at java.net.ServerSocket.createImpl(ServerSocket.java:308) at java.net.ServerSocket.getImpl(ServerSocket.java:257) at java.net.ServerSocket.bind(ServerSocket.java:376) at java.net.ServerSocket.<init>(ServerSocket.java:237) at org.apache.catalina.core.StandardServer.await(StandardServer.java:426) at org.apache.catalina.startup.Catalina.await(Catalina.java:777) at org.apache.catalina.startup.Catalina.start(Catalina.java:723) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:606) at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:321) at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:455)Sep 08, 2014 9:53:17 AM org.apache.coyote.AbstractProtocol pauseINFO: Pausing ProtocolHandler ["http-bio-8080"]Sep 08, 2014 9:53:17 AM org.apache.catalina.core.StandardService stopInternalINFO: Stopping service CatalinaSep 08, 2014 9:53:17 AM org.apache.coyote.AbstractProtocol stopINFO: Stopping ProtocolHandler ["http-bio-8080"]Sep 08, 2014 9:53:17 AM org.apache.coyote.AbstractProtocol destroyINFO: Destroying ProtocolHandler ["http-bio-8080"]
Solved:
解决:
The 8080 port was not in use, I even tried to change it to 8089 to be sure. There was something other, anyway.I have removed all tomcat7 via command line, and reinstalled manually. After installing the latest version from the Apache website everything was ok.
8080端口没有使用,我甚至想把它改成8089。反正还有别的事。我已经通过命令行删除了所有tomcat7,并手动重新安装。在从Apache网站安装最新版本之后,一切都很好。
Step by step guide can be found here.
步骤指南可以在这里找到。
2 个解决方案
#1
1
Perhaps you have another service running on port 8080, or your kernel somehow has that port closed. Try configuring another port and see if the problem persists.
也许您在端口8080上运行另一个服务,或者您的内核以某种方式关闭了该端口。尝试配置另一个端口,看看问题是否仍然存在。
Edit: Ok, here comes the actionable part: open a terminal and run
编辑:好的,这是可操作的部分:打开一个终端并运行
netstat -t | grep 8080
This should show you anything currently listening on port 8080. As Ubuntu doesn't activate a firewall out of the box, this is very likely the source of the problem.
这将显示当前正在监听端口8080的任何内容。由于Ubuntu没有打开防火墙,这很可能是问题的根源。
Another edit: The original question did not state that you were on Android. This is a vital piece of information, as Android includes SELinux, which forbids opening a port without prior consent from the security layer. To allow opening the port, look here.
另一个编辑:最初的问题没有说明你在使用Android。这是一个重要的信息,因为Android包括SELinux,它禁止在没有安全层事先同意的情况下打开端口。要打开港口,请看这里。
#2
0
Here you just have to change the port number from the tomcat manager because some applications may already using the port you given as 8080.
在这里,您只需从tomcat管理器中更改端口号,因为有些应用程序可能已经使用了您提供的端口8080。
Use the following method...
使用以下方法……
How to change the port of Tomcat from 8080 to 80?
如何将Tomcat的端口从8080更改为80?
#1
1
Perhaps you have another service running on port 8080, or your kernel somehow has that port closed. Try configuring another port and see if the problem persists.
也许您在端口8080上运行另一个服务,或者您的内核以某种方式关闭了该端口。尝试配置另一个端口,看看问题是否仍然存在。
Edit: Ok, here comes the actionable part: open a terminal and run
编辑:好的,这是可操作的部分:打开一个终端并运行
netstat -t | grep 8080
This should show you anything currently listening on port 8080. As Ubuntu doesn't activate a firewall out of the box, this is very likely the source of the problem.
这将显示当前正在监听端口8080的任何内容。由于Ubuntu没有打开防火墙,这很可能是问题的根源。
Another edit: The original question did not state that you were on Android. This is a vital piece of information, as Android includes SELinux, which forbids opening a port without prior consent from the security layer. To allow opening the port, look here.
另一个编辑:最初的问题没有说明你在使用Android。这是一个重要的信息,因为Android包括SELinux,它禁止在没有安全层事先同意的情况下打开端口。要打开港口,请看这里。
#2
0
Here you just have to change the port number from the tomcat manager because some applications may already using the port you given as 8080.
在这里,您只需从tomcat管理器中更改端口号,因为有些应用程序可能已经使用了您提供的端口8080。
Use the following method...
使用以下方法……
How to change the port of Tomcat from 8080 to 80?
如何将Tomcat的端口从8080更改为80?