Skip to main content
 首页 » 编程设计

Ubuntu 14.04LTS 中 Tomcat7 绑定(bind)到端口 80 失败

2024年08月20日39zhenyulu

我在新更新的 Ubuntu 系统上安装 tomcat7 时遇到问题。自从更新到 14.04 LTS 以来,tomcat 拒绝在端口 80 上启动,并出现一个我无法解决的错误,也找不到任何有关如何修复它的信息:

    Information: Initializing ProtocolHandler ["http-bio-80"] 
Apr 24, 2014 4:39:37 PM org.apache.coyote.AbstractProtocol init 
Schwerwiegend: Failed to initialize end point associated with ProtocolHandler ["http-bio-80"] 
java.net.SocketException: Datei oder Verzeichnis nicht gefunden 
    at java.net.PlainSocketImpl.socketBind(Native Method) 
    at java.net.AbstractPlainSocketImpl.bind(AbstractPlainSocketImpl.java:376) 
    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) 

问题是,我已经做了我在以前的 Ubuntu 中所做的事情(运行的是 12.04 LTS),简而言之,将 server.xml 编辑到端口 80,并将/etc/default/tomcat7 中的 authbind 更改为是的,所以基本上你需要做的就是在端口 80 上运行 tomcat。

在 12.04LTS 上执行这些步骤工作正常,只是在 14.04LTS 上它现在会抛出此“文件或目录未找到”错误。

此外,当将 12.04LTS(tomcat 在端口 80 上运行良好)升级到 14.04LTS 时,它突然抛出上述错误,而所有配置与 12.04LTS 中的配置相同。

我希望任何人都可以帮助我解决这个问题。

请您参考如下方法:

以下作品:

apt-get install authbind

首先,在/etc/default/tomcat7文件中设置AUTHBIND=yes

sudo touch /etc/authbind/byport/80 
sudo chmod 500 /etc/authbind/byport/80 
sudo chown tomcat7 /etc/authbind/byport/80 

这里有一个引用 URL,但该网站已被黑客攻击(在 Edge 中标记为不安全,Chrome 提示我安装浏览器扩展)。