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

我在新更新的Ubuntu系统上安装tomcat7时出现问题。 自从更新到14.04 LTS之后,tomcat拒绝在端口80上启动一个我无法解决的错误,也没有find任何关于如何修复的错误:

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) 

事情是,我已经完成了我在之前的Ubuntus(正在运行12.04 LTS)中完成的工作,简而言之,将server.xml编辑到80端口,并将/ etc / default / tomcat7中的authbind更改为yes基本上你在80端口上运行tomcat所做的一切。

做一个12.04LTS的这些步骤工作正常,只是在14.04LTS它现在抛出这个“文件或目录未find”的错误。

另外,当将12.04LTS(在80端口上运行良好的tomcat)升级到14.04LTS时,它突然抛出上面的错误,而所有configuration与在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提示我安装浏览器扩展)。

在server.xml中默认设置端口8080

运行:sudo / sbin / iptables -t nat -I PREROUTING -p tcp –dport 80 -j REDIRECT – 到端口8080

EN这样在Ubuntu 14.04中将stream量从端口80redirect到8080(默认在tomcat中),不可能在server.xml中将默认端口设置为80。

FR(Ceci redirige le trafic du port 80 vers 8080(Pardéfautdans tomcat)dans Ubuntu 14.04 is not possible to metre le port pardéfautà80 dans server.xml。)

为了使其持久:sudo apt-get install iptables-persistent

EN该软件包允许您保存先前input的iptables规则。 一定要回答是(保存当前的设置)。 FR Ce包裹是由iptablesentréesprécédemment。 Il fautrépondreou aux questions,(sauvegarder lesparamètresactuels)。

使用authbind启动tomcat服务,这将允许用户启动小于1024的端口,我们不需要redirect或iptables。

apt-get install authbind -y

要安装Authbind软件

chmod -R 755 / etc / authbind

组应该是用户组。

chown -Rh root:group / etc / authbind

之后运行下面的命令

cd / etc / authbind / byuid

作为一个例子让imagne用户ID是2000,你可以使用你的用户ID号码

echo'0.0.0.0/0:1,1023'> 2000

该文件应该由用户和组自己。

chown:2000

chmod 700 2000

在tomcat启动文件$ CATALINA_BASE / startup.sh中添加下面的行

 export JAVA_OPTS="$JAVA_OPTS -Djava.net.preferIPv4Stack=true" 

使用Authbind服务启动tomcat启动

注释下面的行

 #$CATALINA_HOME/bin/startup.sh 

添加此结束作为文件的结尾

 AUTHBIND_COMMAND="/usr/bin/authbind --deep /bin/bash -c " $AUTHBIND_COMMAND $CATALINA_HOME/bin/startup.sh 

现在你应该能够以less于1024个端口的用户启动tomcat服务。

我有同样的问题。 最后,我使用了iptables端口redirect而不是authpriv机制

1)在/ etc / default / tomcat7中,设置authpriv = no

2)在/etc/tomcat7/server.xml中使用

  <连接器端口= 8080 ... 

而不是80

3)如果允许8080 / tcp

4)按照这里的说明: https : //serverfault.com/questions/238563/can-i-use-ufw-to-setup-a-port-forward

如果需要,也可以对端口443(SSL)进行同样的操作

    Interesting Posts