我最近通过 apache solr typo3 社区的安装脚本安装了 tomcat,并在过去 3 天里试图弄清楚为什么它不起作用,直到偶然我注意到当我通过“ lsof -i
”查询监听端口的进程时,它绑定到 ipv6 协议。
我到处搜索,大多数人说0.0.0.0
在 tomcat 连接器中设置地址可以解决这个问题,其他人说设置JAVA_OPTS="-Djava.net.preferIPv4Stack=true"
。
我试过前者不起作用,但后者我不确定把它放在哪里。我在某处读到的一种解决方案建议将其放入,setenv.sh
但我无法在我的 tomcat 安装中找到该文件。目前,我将不胜感激。
tomcat版本为6.x,操作系统为ubuntu 11.10。
谢谢
许多建议更新
catalina.sh
启动脚本。是的,该解决方案可行,但catalina.sh
脚本并不意味着要定制/更新。所有更改都应该进入自定义脚本,即setenv.sh
.注意:
TOMCAT_HOME/bin/setenv.sh
默认情况下不存在,您需要创建它。检查catalina.sh
脚本,您将看到启动脚本检查是否setenv.sh
存在,如果存在则执行。因此,我建议您
TOMCAT_HOME/bin/setenv.sh
使用一行创建新脚本:好的,我终于解决了。我被指示尝试这个和 Henk 的解决方案。两者似乎都不适用于远程虚拟服务器。我猜是因为我在共享内核空间上,所以提供者会阻止这种情况。在任何情况下,我都添加了:
JAVA_OPTS= $JAVA_OPTS -Djava.net.preferIPv4Stack=true -Djava.net.preferIPv4Addresses
到 catalina.sh 启动脚本,这似乎解决了将 tomcat 绑定到 ipv6 的问题。修改 catalina.sh 的正确语法是:
如果您使用此安装程序:“ Apache Solr for TYPO3 ”,您可以更改文件中的地址
server.xml
。默认指向本地主机,因此查找 127.0.0.1 并将其更改为您想要的 IPv4 地址。不要忘记重新启动 Tomcat6 以使更改生效。更新,20120521
请参阅下面关于如何在 Ubuntu 11.10 上禁用 IPv6 的评论。
我已经在我的 Mac 上的 Virtualbox-VM 上成功地测试了这个。连接器端口 8080 的地址已从 127.0.0.1 更改为 0.0.0.0
server.xml
。然后禁用 IPv6 会使“tcp6”消失,因此它绑定到仅 IPv4 地址。
启用 IPv6 之前/启用时:
/ IPv6 禁用后:
连同使用 setenv.sh 和 CATALINA_OPTS 的其他答案...
将 Tomcat SSL 与 APR 结合使用,让 Tomcat 绑定到 ipv4 的唯一方法是将其添加到连接器配置中:
server.xml 看起来像这样:
虽然可能不是首选方法,但我观察到在内核级别禁用 IPv6将说服 Tomcat 打开 IPv4 绑定。
Debian 8 导航到在/etc/default/grub上使用你最喜欢的编辑器;查找GRUB_CMDLINE_LINUX_DEFAULT ="quiet"** 部分,然后添加ipv6.disable=1,如下所示
GRUB_CMDLINE_LINUX_DEFAULT="ipv6.disable=1 安静"
保存并退出。在同一目录中,在/etc/default/tomcat8上使用您最喜欢的编辑器,然后查找带有JAVA_OPTS=的部分,该部分将被注释掉,在该行下方添加以下内容。JAVA_OPTS=" $JAVA_OPTS -Djava.net.preferIPv4Stack=true -Djava.net.preferIPv4Addresses=true"
保存并退出
在命令提示符下键入update-grub,如果你有 sudo 与 sudo 一起使用,然后重新启动 tomcat8 service tomcat8 restart
你现在应该在 IPv4 上。
请在以后的帖子中包括完整的路径和文件名。谢谢你