41

新しく更新された 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をyesに変更したので、基本的に、ポート 80 で tomcat を実行するために必要なすべてのことを行います。

12.04LTS でこれらの手順を実行すると問題なく動作しますが、14.04LTS でこの「ファイルまたはディレクトリが見つかりません」というエラーがスローされるようになりました。

また、12.04LTS (ポート 80 で Tomcat が正常に動作する) を 14.04LTS にアップグレードすると、突然上記のエラーがスローされますが、すべての構成は 12.04LTS で機能していたものと同じです。

誰かがこの問題を解決するのを手伝ってくれることを願っています。

4

4 に答える 4

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 (Par défaut dans tomcat) dans Ubuntu 14.04 il n'est pas possible de mettre le port par défaut à 80 dans server.xml.)

これを永続化するには: sudo apt-get install iptables-persistent

EN このパッケージを使用すると、以前に入力した iptables ルールを保存できます。必ず「はい」と答えてください (現在の設定を保存します)。FR Ce packet permet de sauvegarder les règles iptables entrées précédemment. Il faut répondre ou aux question, (sauvegarder les paramètres actuels).

于 2014-06-17T18:50:34.030 に答える
2

authbind を使用して tomcat サービスを開始します。これにより、ユーザーは 1024 未満のポートを開始できるようになります。リダイレクトや iptables は必要ありません。

apt-get インストール authbind -y

Authbind ソフトウェアをインストールするには

chmod -R 755 /etc/authbind

group はユーザー グループである必要があります。

chown -Rh root:group /etc/authbind

その後、以下のコマンドを実行します

cd /etc/authbind/byuid

例として、ユーザー ID が 2000 の場合、ユーザー ID 番号を使用できます。

エコー '0.0.0.0/0:1,1023' > 2000

そのファイルは、ユーザーおよびグループが所有する必要があります。

チョウン : 2000

chmod 700 2000

Tomcat スタートアップ ファイル $CATALINA_BASE/startup.sh に以下の行を追加します。

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

Authbind サービス startup.sh を使用して tomcat を起動する場合

以下の行をコメントしてください

#$CATALINA_HOME/bin/startup.sh

This End をファイルの最後に追加

AUTHBIND_COMMAND="/usr/bin/authbind --deep /bin/bash -c " 

$AUTHBIND_COMMAND $CATALINA_HOME/bin/startup.sh   

これで、1024 未満のポートを持つユーザーとして tomcat サービスを開始できるはずです。

于 2015-10-14T07:47:01.357 に答える
1

私も同じ問題を抱えていました。最後に、authpriv メカニズムの代わりに iptables ポート リダイレクトを使用しました。

すなわち

1) /etc/default/tomcat7 で、authpriv=no を設定します。

2) /etc/tomcat7/server.xml で、次を使用します。

<コネクタ ポート=8080...
80ではなく

3) ufw は 8080/tcp を許可します

4) ここの指示に従ってください: https://serverfault.com/questions/238563/can-i-use-ufw-to-setup-a-port-forward

必要に応じて、ポート 443 (SSL) に対しても同じことができます。

于 2014-05-04T22:50:51.257 に答える