从外部

时间:2017-04-20 09:19:32

标签: apache tomcat

我是这些论坛的新手,我希望我不会问一个愚蠢的问题。我已经在网上多次看到了我的问题的答案,但它从来没有对我有用。

所以基本上我在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中的“Connector”标签中删除“address”属性,我也尝试将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

1 个答案:

答案 0 :(得分:1)

对于debian jessie(8.7)上的tomcat8的默认安装,您可以强制tomcat在setenv.sh文件中使用以下IPv4地址:

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

请注意在语句的值部分周围使用双引号。

以下命令将附加到当前setenv.sh文件的正确位置(如果已经设置了JAVA_OPTS,请记得删除原始的setenv.sh)

echo 'JAVA_OPTS="$JAVA_OPTS -Djava.net.preferIPv4Stack=true -Djava.net.preferIPv4Addresses"' >> /usr/share/tomcat8/bin/setenv.sh