如何让 tomcat 绑定到 ipv4 地址?

如何让 tomcat 绑定到 ipv4 地址?

我最近通过 apache solr typo3 社区的安装脚本安装了 tomcat,并花了三天时间试图弄清楚为什么它不起作用,直到偶然发现,当我通过“ lsof -i”查询监听端口的进程时,它绑定到了 ipv6 协议。

我在谷歌上搜索过,大多数人都说将地址设置为0.0.0.0在 tomcat 连接器中解决了这个问题,其他人说设置JAVA_OPTS="-Djava.net.preferIPv4Stack=true"

我尝试过前者,但不起作用,但后者我不确定把它放在哪里。我读过的一个解决方案建议把它放在setenv.sh但我在 tomcat 安装中找不到此文件。目前,如果能得到任何帮助,我将不胜感激。

tomcat版本是6.x,操作系统是ubuntu 11.10。

谢谢

答案1

许多人建议更新catalina.sh启动脚本。是的,这个解决方案可行,但catalina.sh脚本并非用于自定义/更新。所有更改都应进入自定义脚本,即setenv.sh

注意:TOMCAT_HOME/bin/setenv.sh默认情况下不存在,您需要创建它。检查脚本catalina.sh,您将看到启动脚本检查是否setenv.sh存在,如果存在则执行。

因此,我建议您创建TOMCAT_HOME/bin/setenv.sh仅一行的新脚本:

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

答案2

好的,我终于解决了。我被引导到尝试这个以及 Henk 的解决方案。这两种方法似乎都无法与远程虚拟服务器配合使用。我猜是因为我在共享内核空间中,所以提供商阻止了这种情况。无论如何,我添加了:JAVA_OPTS= $JAVA_OPTS -Djava.net.preferIPv4Stack=true -Djava.net.preferIPv4Addresses到 catalina.sh 启动脚本,这似乎已经解决了将 tomcat 绑定到 ipv6 的问题。

答案3

修改 catalina.sh 的正确语法是:

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

答案4

虽然这可能不是首选方法,但我观察到在内核级别禁用 IPv6将说服 Tomcat 打开 IPv4 绑定。

相关内容