买了个腾讯云服务器,之前安装过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环境变量的配置问题,但是至少我是没发现哪里有问题的,我还根据他提示的找不到文件或目录的那个路径查了一遍,明明就有。也不知道是我看走眼了还是啥问题,反正解决了就可以继续下面的事了,记录一下,以后有需要好找。