linux centos7安装tomcat7以及遇到坑的解决办法

转载:https://blog.csdn.net/w410589502/article/details/77988912

前言:最近买了一个阿里云服务器准备安装tomcat做web容器,之前安装tomcat是so easy的事情,这次安装却遇到了很多个坑,再次总结一下,避免以后自己再出现同样的错误。

一、安装tomcat

1 下载tomcat

下载地址tomcat7安装包下载地址

官方下载地址tomcat7官方下载地址 
这里写图片描述

*在安装tomcat之前,我们要安装jdk 
教程文档:linux centos7 安装jdk1.7

2 安装tomcat

安装好jdk后,同时也下载好tomcat安装包,使用ftp功能将安装包放入指定的目录下,例如:/usr/local

(1)进入目录

cd /usr/local
  • 1

(2)创建目录

mkdir tomcat
  • 1

(3)查看目录

ll 或 ls
  • 1

(4)解压tomcat安装包

tar -zxvf apache-tomcat-7.0.68.tar.gz
  • 1

(5)删除tomcat安装包(如果需要)

rm -rf apache-tomcat-7.0.68.tar.gz
  • 1

(6)修改文件名(解压后的文件名过长,可以考虑修改短)

mv  apache-tomcat-7.0.68 tomcat7
  • 1

(7)进入tomcat的目录(根据自己的安装目录来)

cd /usr/local/tomcat/tomcat7
  • 1

这里写图片描述

3 执行tomcat

(1)进入tomcat执行目录

cd /usr/local/tomcat/tomcat7/bin
  • 1

(2)查看tomcat的运行状态

ps -ef |grep tomcat
  • 1

(3)启动tomcat

./startup.sh
  • 1

这里写图片描述 
执行tomcat started,tomcat执行成功

(4)关闭tomcat

./shutdown.sh
  • 1

这里写图片描述

(5)访问服务器ip地址 
这里写图片描述

二、解决tomcat执行遇到的问题

1 服务器防火墙拦截

问题描述:当tomcat启动成功后,访问web服务器,请求失败。导致失败的原因之一可能就是防火墙将8080端口或者其他端口拦截掉了,我们需要重新开放8080或者其他端口,不建议关闭防火墙。

iptables防火墙设置参考文章地址CentOS之——CentOS7安装iptables防火墙

(1)查看防火墙状态

service iptables status
  • 1

(2)添加8080端口允许外网访问

/sbin/iptables -I INPUT -p tcp --dport 8080 -j ACCEPT
  • 1

(3)保存规则设定

service iptables save
  • 1

(4)重启防火墙

service iptables restart
  • 1

2 启动tomcat很慢

问题描述:启动tomcat会用几分钟甚至十几分钟的时间,这就说明tomcat启动被某种机制卡住了,后来查资料说是通过随机数生成秘钥的时候卡住了,导致Tomcat启动慢或失败。因为在tomcat8中,Tomcat的Session ID通过SHA1算法计算得到的,计算Session ID的时候必须有1个秘钥,为了提高安全性Tomcat在启动的时候通过随机数生成秘钥。但是我的版本是tomcat7.0.68,也遇到了类似的问题。解决办法就是增大熵池(影响随机数的强度的是生成用的熵)。

(1)解决办法一:使用rngd 软件增大熵池(推荐)

需要cpu支持 (可不执行)

grep  rdrand /proc/cpuinfo
  • 1

安装rngd服务(熵服务,增大熵池)

yum install rng-tools
  • 1

启动服务

systemctl start rngd
  • 1

(2)java环境下修改配置文件

vim $JAVA_HOME/jre/lib/security/java.security 
  • 1
securerandom.source=file:/dev/random
改为 
securerandom.source=file:/dev/urandom
  • 1
  • 2
  • 3

这里写图片描述

(3)可以通过配置JRE使用非阻塞的Entropy Source(未验证)

vim $TOMCAT_HOME/bin/catalina.sh 
  • 1
if [[ "$JAVA_OPTS" !=*-Djava.security.egd=* ]]; then
  JAVA_OPTS="$JAVA_OPTS -Djava.security.egd=file:/dev/urandom"
fi
  • 1
  • 2
  • 3

这个系统属性egd表示熵收集守护进程(entropy gathering daemon)

总结: 
tomcat启动慢可能我们开始不会注意到,我们测试的时候开启tomcat正常,关闭tomcat的时候出错,说明进程未关闭(默认8005进程),我们通常会使用kill -9 进程号杀掉进程。如果经常出现tomcat关闭异常这个问题,可能就是我们tomcat启动过慢导致的。

3 tomcat防火墙和启动正常,无法访问tomcat

问题描述:这个是我遇到最大的坑,防火墙正常,tomcat启动正常,但是就是一直无法访问。因为我使用的是阿里云的服务器,我设置了安全组,导致从阿里云服务器一直拦截我的端口,这里就要重新设置你的安全组规则。重新设置安全组,开放8080或其他端口即可正常访问。

阿里云添加安全组规则文档添加安全组规则

参考文章

Tomcat启动速度慢的优化方法 
Linux中如何开启8080端口供外界访问 和开启允许对外访问的端口8000 
CentOS之——CentOS7安装iptables防火墙 
CentOS7 Tomcat 启动过程很慢

猜你喜欢

转载自blog.csdn.net/u010046887/article/details/79690704