记:一次tomcat启动无法访问8080端口的问题

买了个腾讯云服务器,之前安装过openjdk,运行了docker,都没什么问题。

但是,最近安装了个tomcat,启动未报错,但是起来后发现无法访问8080端口。

首先排除了端口占用问题,因为我没有其他应用程序使用这个端口

其次排除了端口开放问题,我的nginx启动是可以正常访问的,并且防火墙根本没开。

接着开始检查输入以下命令发现:

ps -ef|grep java

root      2659 28686  0 17:18 pts/0    00:00:00 grep --color=auto java
root   *********** 明显不是tomcat ******



ps -ef|grep tomcat

root      2821 28686  0 17:18 pts/0    00:00:00 grep --color=auto tomcat

正常情况:

ps -ef|grep java

root      2355     1 31 17:18 pts/0    00:00:03 /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.282.b08-1.el7_9.x86_64/bin/java -Djava.util.logging.config.file=/root/apache-tomcat-8.5.65/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djdk.tls.ephemeralDHKeySize=2048 -Djava.protocol.handler.pkgs=org.apache.catalina.webresources -Dorg.apache.catalina.security.SecurityListener.UMASK=0027 -Dignore.endorsed.dirs= -classpath /root/apache-tomcat-8.5.65/bin/bootstrap.jar:/root/apache-tomcat-8.5.65/bin/tomcat-juli.jar -Dcatalina.base=/root/apache-tomcat-8.5.65 -Dcatalina.home=/root/apache-tomcat-8.5.65 -Djava.io.tmpdir=/root/apache-tomcat-8.5.65/temp org.apache.catalina.startup.Bootstrap start
root      2659 28686  0 17:18 pts/0    00:00:00 grep --color=auto java




ps -ef|grep tomcat

root      2355     1 19 17:18 pts/0    00:00:03 /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.282.b08-1.el7_9.x86_64/bin/java -Djava.util.logging.config.file=/root/apache-tomcat-8.5.65/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djdk.tls.ephemeralDHKeySize=2048 -Djava.protocol.handler.pkgs=org.apache.catalina.webresources -Dorg.apache.catalina.security.SecurityListener.UMASK=0027 -Dignore.endorsed.dirs= -classpath /root/apache-tomcat-8.5.65/bin/bootstrap.jar:/root/apache-tomcat-8.5.65/bin/tomcat-juli.jar -Dcatalina.base=/root/apache-tomcat-8.5.65 -Dcatalina.home=/root/apache-tomcat-8.5.65 -Djava.io.tmpdir=/root/apache-tomcat-8.5.65/temp org.apache.catalina.startup.Bootstrap start
root      2821 28686  0 17:18 pts/0    00:00:00 grep --color=auto tomcat

这就发现异常情况了。

然后尝试关闭tomcat

./shutdown.sh

Using CATALINA_BASE:   /root/apache-tomcat-8.5.65
Using CATALINA_HOME:   /root/apache-tomcat-8.5.65
Using CATALINA_TMPDIR: /root/apache-tomcat-8.5.65/temp
Using JRE_HOME:        /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.282.b08-1.el7_9.x86_64
Using CLASSPATH:       /root/apache-tomcat-8.5.65/bin/bootstrap.jar:/root/apache-tomcat-8.5.65/bin/tomcat-juli.jar
Using CATALINA_OPTS: /root/soft/tomcat/apache-tomcat-7.0.57/bin/catalina.sh: line 385: soft/jdk/jdk1.7.0_71/jre/bin/java: 文件或目录不存在

看起来是jdk环境变量的配置出错了。

检查以下jdk环境变量配置:

java -version
正常

java
正常

javac
找不到命令

好像jdk环境变量配置确实有问题,但是检查/etc/profile中的配置又没发现有啥问题,于是去网上找了个方案

yum install java-1.8.0-openjdk-devel

由于我之前安装的是 1.8.0_242 这次安装相当于升级到了 1.8.0_282

再次输入命令检查 java javac java -version 都正常了。

然后再尝试关闭tomcat,还是一样报错。

然后想起jdk变了,/etc/profile 里面配置的 %JAVA_HOME%还没改呢,于是改了下环境变量配置(其实也就改了下 %JAVA_HOME%的路径)。

export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.282.b08-1.el7_9.x86_64

export CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

export PATH=$PATH:$JAVA_HOME/bin

然后使配置生效

source /etc/profile

再使用shutdown命令关闭tomcat

[root@VM_0_8_centos bin]# ./shutdown.sh 
Using CATALINA_BASE:   /root/apache-tomcat-8.5.65
Using CATALINA_HOME:   /root/apache-tomcat-8.5.65
Using CATALINA_TMPDIR: /root/apache-tomcat-8.5.65/temp
Using JRE_HOME:        /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.282.b08-1.el7_9.x86_64
Using CLASSPATH:       /root/apache-tomcat-8.5.65/bin/bootstrap.jar:/root/apache-tomcat-8.5.65/bin/tomcat-juli.jar
Using CATALINA_OPTS:   
四月 17, 2021 5:18:19 下午 org.apache.catalina.startup.Catalina stopServer
严重: Could not contact [localhost:8005]. Tomcat may not be running.
四月 17, 2021 5:18:19 下午 org.apache.catalina.startup.Catalina stopServer
严重: Catalina.stop: 
java.net.ConnectException: 拒绝连接 (Connection refused)
        at java.net.PlainSocketImpl.socketConnect(Native Method)
        at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350)
        at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206)
        at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188)
        at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)
        at java.net.Socket.connect(Socket.java:607)
        at java.net.Socket.connect(Socket.java:556)
        at java.net.Socket.<init>(Socket.java:452)
        at java.net.Socket.<init>(Socket.java:229)
        at org.apache.catalina.startup.Catalina.stopServer(Catalina.java:504)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:498)
        at org.apache.catalina.startup.Bootstrap.stopServer(Bootstrap.java:388)
        at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:478)

拒绝连接?那就是没启动嘛!

./startup.sh

[root@VM_0_8_centos bin]# ./startup.sh 
Using CATALINA_BASE:   /root/apache-tomcat-8.5.65
Using CATALINA_HOME:   /root/apache-tomcat-8.5.65
Using CATALINA_TMPDIR: /root/apache-tomcat-8.5.65/temp
Using JRE_HOME:        /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.282.b08-1.el7_9.x86_64
Using CLASSPATH:       /root/apache-tomcat-8.5.65/bin/bootstrap.jar:/root/apache-tomcat-8.5.65/bin/tomcat-juli.jar
Using CATALINA_OPTS:   
Tomcat started.

启动成功

ps命令查看

[root@VM_0_8_centos bin]# ps -ef|grep java
root      2355     1 31 17:18 pts/0    00:00:03 /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.282.b08-1.el7_9.x86_64/bin/java -Djava.util.logging.config.file=/root/apache-tomcat-8.5.65/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djdk.tls.ephemeralDHKeySize=2048 -Djava.protocol.handler.pkgs=org.apache.catalina.webresources -Dorg.apache.catalina.security.SecurityListener.UMASK=0027 -Dignore.endorsed.dirs= -classpath /root/apache-tomcat-8.5.65/bin/bootstrap.jar:/root/apache-tomcat-8.5.65/bin/tomcat-juli.jar -Dcatalina.base=/root/apache-tomcat-8.5.65 -Dcatalina.home=/root/apache-tomcat-8.5.65 -Djava.io.tmpdir=/root/apache-tomcat-8.5.65/temp org.apache.catalina.startup.Bootstrap start
root      2659 28686  0 17:18 pts/0    00:00:00 grep --color=auto java
[root@VM_0_8_centos bin]# ps -ef|grep tomcat
root      2355     1 19 17:18 pts/0    00:00:03 /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.282.b08-1.el7_9.x86_64/bin/java -Djava.util.logging.config.file=/root/apache-tomcat-8.5.65/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djdk.tls.ephemeralDHKeySize=2048 -Djava.protocol.handler.pkgs=org.apache.catalina.webresources -Dorg.apache.catalina.security.SecurityListener.UMASK=0027 -Dignore.endorsed.dirs= -classpath /root/apache-tomcat-8.5.65/bin/bootstrap.jar:/root/apache-tomcat-8.5.65/bin/tomcat-juli.jar -Dcatalina.base=/root/apache-tomcat-8.5.65 -Dcatalina.home=/root/apache-tomcat-8.5.65 -Djava.io.tmpdir=/root/apache-tomcat-8.5.65/temp org.apache.catalina.startup.Bootstrap start
root      2821 28686  0 17:18 pts/0    00:00:00 grep --color=auto tomcat

一切正常

访问8080端口成功!

 

根据情况和解决方式来看就是jdk环境变量的配置问题,但是至少我是没发现哪里有问题的,我还根据他提示的找不到文件或目录的那个路径查了一遍,明明就有。也不知道是我看走眼了还是啥问题,反正解决了就可以继续下面的事了,记录一下,以后有需要好找。


版权声明:本文为baidu_41267789原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。