Linux部署Tomcat无法访问

前言

环境: RedHat7.0 Tomcat7JDK7
安装配置成功之后,启动tomcat服务, 然后使用本地浏览器访问http://xx:xx:xx:xx:8080, 无法访问。

解决过程

首先怀疑是配置问题,终端输出:

echo $JAVA_HOME
echo $TOMCAT_HOME

一切正常,排除

然后怀疑是防火墙问题:
RHEL7 中使用了firewalld代替了原来的iptables,操作设置和原来有点不同:

查看防火墙状态systemctl status firewalld 或者 systemctl is-active firewalld
启动防火墙systemctl start firewalld
停止防火墙systemctl stop firewalld
永久停用systemctl disable firewalld
启用防火墙systemctl enable firewalld

我选择关闭防火墙,然后重启tomcat服务,再次访问,发现还是不行。

其次怀疑是端口被占用:
修改tomcat/conf/server.xml,将8080端口号改为8090,重启服务,发现可以正常访问。

**那么**8080端口号被谁占用了呢?
使用netstat –apn | grep 8080,查看所有的进程和端口使用情况。发现下面的进程列表,其中最后一栏是PID/Program name
oracle 22725 oracle9i 3u IPv4 18621468 TCP RHEL3:6800 (LISTEN)
oracle 22725 oracle9i 4u IPv4 18621469 TCP RHEL3:6800->RHEL3:2174 (CLOSE_WAIT)
oracle 22725 oracle9i 8u IPv4 18621568 TCP RHEL3:6800->RHEL3:2175 (CLOSE_WAIT)
oracle 22725 oracle9i 9u IPv4 18621578 TCP RHEL3:6800->RHEL3:2176 (CLOSE_WAIT)
oracle 22726 oracle9i 3u IPv4 18621468 TCP RHEL3:6800 (LISTEN)
oracle 22726 oracle9i 4u IPv4 18621469 TCP RHEL3:6800->RHEL3:2174 (CLOSE_WAIT)
oracle 22726 oracle9i 8u IPv4 18621568 TCP RHEL3:6800->RHEL3:2175 (CLOSE_WAIT)
oracle 22726 oracle9i 9u IPv4 18621578 TCP RHEL3:6800->RHEL3:2176 (CLOSE_WAIT)

close_wait说明服务器被动断开连接,但断开的4次握手未进行完全

然后使用kill -9 PID将进程杀死, 问题解决。

其中, 我使用shutdown命令将机器关闭了,tomcat服务被动断开连接,导致出现close_wait这个状态,现在程序关闭之后原来所用端口依然被占用, 解决方法:

1) 优化服务器内核参数(/etc/sysctl.conf)
2) 做定时任务检查httpd进程数目,一旦发现httpd进程数目异常,就重启apache和tomcat, 建议在非工作时间进行检查重启,检查脚本:

#!/bin/sh
httpcount=`ps -ef|grep httpd|wc -l`
echo $httpcount
if [ $httpcount -gt 900 ]; then
  killall httpd
  killall java
  /cicro/wcm/bin/startas.sh
  echo "Restart successfully because of much useless process."
else
  echo "It is OK!"
fi

你可能感兴趣的:(Web)