Linux云服务器下Tomcat部署
- 以阿里云下centos_7为例
- 工具:
- 一台安装centos_7_06_64_20G_alibase_20190218.vhd的云服务器(64位)
- 一台安装了MobaXterm工具的电脑
- MobaXterm:
- ssh远程连接云服务器的软件
- 本地机与服务器文件互传的软件
步骤一、连接云服务器
- 安装MobaXterm
- 点击Session 选择SSH 输入Remote host(服务器外网地址)
- OK、然后输入用户名密码连接服务器
- 创建基础目录
/usr/local/environment/
-查看并进入environment
目录
cd /usr/local/environment/
步骤二、安装JDK
- 下载 jdk-8u201-linux-x64.tar.gz 文件
- 使用MobaXterm上传至
environment
目录下 - 解压jdk-8u201-linux-x64.tar.gz
tar -zxvf jdk-8u201-linux-x64.tar.gz
- 修改名称
mv jdk-8u201-linux-x64 jdk8
- 配置环境变量
- 打开/etc/目录下的profile 文件:
vim /etc/profile
- 将如下代码追加到 profile 文件末尾:
#jdk8 config start - 2019年9月13日 export JAVA_HOME=/usr/local/environment/jdk8 export PATH=$JAVA_HOME/bin:$PATH #jdk8 config end - 2019年9月13日
- 按
Esc
键、输入:wq
回车,保存并退出。 - 启用新的配置
source /etc/profile
- 打开/etc/目录下的profile 文件:
- 查看java版本
java -version
步骤三、安装Tomcat
- 下载
apache-tomcat-9.0.17.tar.gz
文件(Core下的tar.gz) - 使用MobaXterm上传至
environment
目录下 - 在tools目录解压缩
tar -zxvf apache-tomcat-9.0.17.tar.gz
- 修改名称
mv apache-tomcat-9.0.17 tomcat9
- 配置Tomcat环境变量
- 打开/etc/目录下的profile 文件:
vi /etc/profile
- 将如下代码追加到 profile 文件末尾:
#tomcat9 config start - 2019年9月13日 export TOMCAT_HOME=/usr/local/environment/tomcat/tomcat9 export CATALINA_HOME=/usr/local/environment/tomcat/tomcat9 #tomcat9 config end - 2019年9月13日
- 按
Esc
键、输入:wq
回车,保存并退出。 - 启用新的配置
source /etc/profile
- 打开/etc/目录下的profile 文件:
- 输入
startup.sh
运行tomcat 输入网址查看
配置(自选)
- 配置可视化manager页面权限
<role rolename="manager-gui"/>
<role rolename="manager-script"/>
<user username="teAdmin" password="1761ZAxscdvf!" roles="manager-gui,manager-script"/>
- 修改 tomcat 的端口号和字符编码
- 进入到
/root/tools/tomcat9/conf
目录中 - 打开 tomcat 服务的配置文件
server.xml
- 找到如下代码
<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" />
- 将其中的 8080 改成 HTTP 协议的默认端口 80,改后的代码如下
<Connector port="80" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" />
- 进入到
分割线
我遇到的问题以及解决
一、CentOS7下Tomcat启动慢的原因及解决方案
- 现象:CentOS 7系统中安装Tomcat,启动过程很慢,需要几分钟
- 经过查看日志:tomcat目录下使用
tail -f logs/catalina.out
发现耗时是session引起的随机数问题导致的。 - 分析结果:主要原因是没有足够的熵来生成随机数,导致卡住了,所以tomcat启动很慢。
解决方案
- 方案一:
vim $JAVA_HOME/jre/lib/security/java.security securerandom.source=file:/dev/random 改为 securerandom.source=file:/dev/urandom
- 方案二:
这个系统属性egd表示熵收集守护进程(entropy gathering daemon)。vim $TOMCAT_HOME/bin/catalina.sh if [[ "$JAVA_OPTS" != *-Djava.security.egd=* ]]; then JAVA_OPTS="$JAVA_OPTS -Djava.security.egd=file:/dev/urandom" fi
- 方案三(本人采用):
yum install rng-tools # 安装rngd服务(熵服务,增大熵池) systemctl start rngd # 启动服务
题外话
- Tocmat的Session ID是通过SHA1算法计算得到的,计算Session ID的时候必须有一个密钥。为了提高安全性Tomcat在启动的时候回通过随机生成一个密钥。
- 是否有足够的熵来用于产生随机数,可以通过如下命令来查看
[root@tomcat tools]# cat /proc/sys/kernel/random/entropy_avail 7
- 为了加速
/dev/random
提供随机数的速度,你可以通过操作设备的外设,让其产生大量的中断(如网络传输数据,按键,移动鼠标,在命令行敲几个不同的命令,俗称聚气。 - cat /dev/random 会消耗能量。
注意: 以上内容整理自:地主家的长工,转载请注明原出处!
二、No such file or directory错误
JAVA_HOME=/root/specil/jdk/jdk1.8.0_201
JRE_HOME=$JAVA_HOME/jre
Permission denied错误
权限
chmod u+x *.sh
-
发生tomcat-x.x.x/logs/catalina.out: No such file or directory错误
-
报错原因:在建立catalina.out文件时没有logs这个目录所以报错了,我们需要手工建立logs目录
mkdir logs
#停止firewall
systemctl stop firewalld.service
#开启firewall
systemctl start firewalld.service
#禁止firewall开机启动
systemctl disable firewalld.service
#查看默认防火墙状态(关闭后显示not running,开启后显示running)
firewall-cmd --state