【发布时间】:2017-04-20 09:19:31
【问题描述】:
我是这些论坛的新手,希望不要问愚蠢的问题。我已经在网上多次看到我的问题的答案,但它从来没有为我工作过。
所以基本上我在 Debian 8.1 远程服务器上安装了 tomcat 8,我想简单地连接到该服务器。但是当我尝试在我的网络浏览器中连接到 MY_SERVER_IP:8080 时,我收到“无法访问此站点”消息,而不是“它可以工作!”我应该得到的页面。
当我在我的 ssh 软件 (Putty) 上键入此代码时:
telnet MY_SERVER_IP 8080
GET /
服务器发送一个 html 页面,上面写着“如果你看到这个,你已经成功安装了 Tomcat。恭喜!”。所以看起来我的服务器已经正确安装,但我无法从外部访问它。我们还检查了哪些端口是开放的,使用 ssh 软件,8080 端口实际上只对 IPv6 地址开放...
我尝试从 /opt/apache-tomcat-8.5.13/conf/server.xml 中的“连接器”标签中删除“地址”属性,并且我还尝试将 address="0.0.0.0" 添加到它。我尝试将 JAVA_OPTS= $JAVA_OPTS -Djava.net.preferIPv4Stack=true -Djava.net.preferIPv4Addresses 添加到 catalina.sh 启动脚本中,并将其写入新的 TOMCAT_HOME/bin/setenv.sh 脚本中。这些都不起作用。
有没有办法解决我的问题?提前感谢您的帮助。
编辑:在我调用指令netstat -pln 后,我的 ssh 软件返回这个(其中一些是法语,所以如果你需要一些翻译,请告诉我):
Connexions Internet actives (seulement serveurs)
Proto Recv-Q Send-Q Adresse locale Adresse distante Etat PID/Program name
tcp 0 0 127.0.0.1:53 0.0.0.0:* LISTEN 15594/named
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 15624/sshd
tcp 0 0 127.0.0.1:953 0.0.0.0:* LISTEN 15594/named
tcp6 0 0 :::8080 :::* LISTEN 19285/java
tcp6 0 0 ::1:53 :::* LISTEN 15594/named
tcp6 0 0 :::22 :::* LISTEN 15624/sshd
tcp6 0 0 ::1:953 :::* LISTEN 15594/named
tcp6 0 0 127.0.0.1:8005 :::* LISTEN 19285/java
udp 0 0 127.0.0.1:53 0.0.0.0:* 15594/named
udp6 0 0 ::1:53 :::* 15594/named
Sockets du domaine UNIX actives(seulement serveurs)
Proto RefCnt Flags Type State I-Node PID/Program name Chemin
unix 2 [ ACC ] STREAM LISTENING 16166 1/systemd /run/systemd/private
unix 2 [ ACC ] SEQPACKET LISTENING 811 1/systemd /run/udev/control
unix 2 [ ACC ] STREAM LISTENING 815 1/systemd /run/systemd/journal/stdout
unix 2 [ ACC ] STREAM LISTENING 25198 1/systemd /run/lvm/lvmetad.socket
unix 2 [ ACC ] STREAM LISTENING 34670 1/systemd /var/run/dbus/system_bus_socket
unix 2 [ ACC ] STREAM LISTENING 5612 1/systemd /run/acpid.socket
因此,除非我弄错了,否则服务器似乎只在端口 8080 上侦听 IPv6 地址。
编辑 3:我再次添加了关于 IP4 的两个 JAVA_OPTS 参数,重新启动我的 tomcat,重新运行 netstat,然后执行ps -ef | grep java。结果如下:
root@ns397627:~# netstat -pln
Connexions Internet actives (seulement serveurs)
Proto Recv-Q Send-Q Adresse locale Adresse distante Etat PID/Program name
tcp 0 0 0.0.0.0:8080 0.0.0.0:* LISTEN 2532/java
tcp 0 0 127.0.0.1:53 0.0.0.0:* LISTEN 15594/named
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 15624/sshd
tcp 0 0 127.0.0.1:953 0.0.0.0:* LISTEN 15594/named
tcp6 0 0 ::1:53 :::* LISTEN 15594/named
tcp6 0 0 :::22 :::* LISTEN 15624/sshd
tcp6 0 0 ::1:953 :::* LISTEN 15594/named
udp 0 0 127.0.0.1:53 0.0.0.0:* 15594/named
udp6 0 0 ::1:53 :::* 15594/named
Sockets du domaine UNIX actives(seulement serveurs)
Proto RefCnt Flags Type State I-Node PID/Program name Chemin
unix 2 [ ACC ] STREAM LISTENING 16166 1/systemd /run/systemd/private
unix 2 [ ACC ] SEQPACKET LISTENING 811 1/systemd /run/udev/control
unix 2 [ ACC ] STREAM LISTENING 815 1/systemd /run/systemd/journal/stdout
unix 2 [ ACC ] STREAM LISTENING 25198 1/systemd /run/lvm/lvmetad.socket
unix 2 [ ACC ] STREAM LISTENING 34670 1/systemd /var/run/dbus/system_bus_socket
unix 2 [ ACC ] STREAM LISTENING 5612 1/systemd /run/acpid.socket
root@ns397627:~# ps -ef | grep java
tomcat8 2532 1 99 10:15 ? 00:00:20 /usr/lib/jvm/default-java/bin/java -Djava.util.logging.config.file=/var/lib/tomcat8/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djava.awt.headless=true -Xmx128m -XX:+UseConcMarkSweepGC -Djava.net.preferIPv4Stack=true -Djava.net.preferIPv4Addresses -Djava.endorsed.dirs=/usr/share/tomcat8/endorsed -classpath /usr/share/tomcat8/bin/bootstrap.jar:/usr/share/tomcat8/bin/tomcat-juli.jar -Dcatalina.base=/var/lib/tomcat8 -Dcatalina.home=/usr/share/tomcat8 -Djava.io.tmpdir=/tmp/tomcat8-tomcat8-tmp org.apache.catalina.startup.Bootstrap start
root 2557 2016 0 10:15 pts/4 00:00:00 grep java
【问题讨论】:
-
这可能是网络中的任意数量的东西,并且由于您证明了 tomcat 正在工作,它可能是服务器故障的问题。你能检查一下tomcat实际上是在监听一个外部的、可访问的接口吗?试试this
-
您好,非常感谢您的回答。我已经尝试了您的建议,这实际上使我认为我的服务器仅适用于 IPv6 地址(尽管我不确定,因为我对这一点了解不多)。当我从你给我的链接中输入指令时,我还是编辑了我的帖子并添加了我的 ssh 软件的答案,如果你能帮我解释一下,将不胜感激:)
-
再次添加关于IP4的两个JAVA_OPTS参数,重新启动tomcat,重新运行netstat,然后
ps -ef | grep java并在您的问题中发布结果 -
我应该在哪里添加这些 JAVA_OPTS 参数?在新的 TOMCAT_HOME/bin/setenv.sh 脚本中,还是在其他地方?
-
应该这样做 - serverfault.com/a/571436 - 重新启动后使用
ps -ef | grep java检查命令行是否设置了选项。如果是,则使用 netstat 查看是否绑定到 ipv4 接口