在Ubuntu 14.04LTS中,Tomcat7绑定到端口80失败

JS1*_*S16 39 port80 tomcat7 ubuntu-14.04

我在新更新的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)
Run Code Online (Sandbox Code Playgroud)

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

在12.04LTS上执行这些步骤可以正常工作,就在14.04LTS上它现在抛出这个"文件或目录未找到"错误.

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

我希望有人能帮我解决这个问题.

Che*_*tan 117

以下作品:

apt-get install authbind

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

sudo touch /etc/authbind/byport/80
sudo chmod 500 /etc/authbind/byport/80
sudo chown tomcat7 /etc/authbind/byport/80
Run Code Online (Sandbox Code Playgroud)

这里有一个参考网址,但网站已被黑客攻击(在Edge中标记为不安全,Chrome会提示我安装浏览器扩展程序).

  • 只想添加,如果服务器设置为ipv6 apparantly authbind但不支持它,我最终出现了与以前相同的错误.所以我要做的就是通过以下方式禁用ipv6:1)在文件`/ usr/share/tomcat7/bin/setenv.sh`中添加`export CATALINA_OPTS ="$ CATALINA_OPTS -Djava.net.preferIPv4Stack = true"`2)更改文件`/ usr/share/tomcat7/bin/startup.sh`行'exec'$ PRGDIR"/"$ EXECUTABLE"start"$ @"`到`exec authbind --deep"$ PRGDIR"/" $ EXECUTABLE"start"$ @"` (7认同)
  • 像魅力一样工作.谢谢你. (2认同)

小智 13

在server.xml中默认使用端口8080

运行:sudo/sbin/iptables -t nat -I PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 8080

EN在Ubuntu 14.04中将流量从端口80重定向到8080(默认在tomcat中),无法在server.xml中将默认端口设置为80.

FR(Ceci redirige le trafic du port 80 vers 8080(Pardéfautanstomcat)dans Ubuntu 14.04 il n'pas pas de estre le portpardéfautà80dans server.xml.)

为了使这个持久化:sudo apt-get install iptables-persistent

EN此程序包允许您保存先前输入的iptables规则.一定要回答是(保存当前设置).FR Ce包permet de sauvegarderlesrèglesiptablesentréesprécédemment.Ilfautrépondreouaux questions,(sauvegarderlesparamètresenitels).