1. 前言
本文中,我们学习在CentOS7中安装配置Tomcat的方法。
2. 安装JDK
Tomcat依赖JDK,首先参考《全平台安装JDK》,安装配置好JDK。
3. 安装Tomcat
1、下载tomcat8.0.50
1 | wget http://www-eu.apache.org/dist/tomcat/tomcat-8/v8.0.50/bin/apache-tomcat-8.0.50.tar.gz |
2、解压tomcat到/opt目录
1 | tar -xzvf apache-tomcat-8.0.50.tar.gz -C /opt |
3、启动tomcat
1 | cd /opt/apache-tomcat-8.0.50/bin/ |
4、测试访问
1 | curl localhost:8080 |
测试时,遇到一个坑,curl命令卡在那里不动了,浏览器访问也是一直转圈,十几分钟了还在转。。。
4. 访问Tomat卡住问题
猜测是tomcat版本有问题?换了8.5.29,依然不行;换了7.0.85,依然不行。
猜测是jdk版本有问题?换了1.8.0_161,依然不行。
最终找到了答案:Centos7+Tomcat8配置javaweb环境,tomcat启动巨慢的问题,需要安装rng服务。
1 | yum install rng-tools |
安装rngd后,就可以正常访问tomcat了。
PS:关闭tomcat方法
1 | cd /opt/apache-tomcat-8.0.50/bin/ |
5. 基于supervisor设置开机自启动
参考《CentOS安装配置Supervisor》,安装配置好supervisor。
1、在/etc/supervisor中新建tomcat.conf文件
1 | [program:tomcat] |
2、重启supervisor
1 | systemctl retart supervisord |
3、重启tomcat
1 | supervisorctl -c /etc/supervisord.conf restart tomcat |
4、测试访问
1 | curl localhost:8080 |
5、重启验证tomcat开启自启动
1 | reboot |
6. 失败的开机自启动配置(选读)
6.1. 基于systemd设置开机自启动
参考《在CentOS7中设置Tomcat开机自启动》,设置开机自启动:
1、为Tomcat添加启动参数
catalina.sh 在执行的时候会调用同级路径下的setenv.sh来设置额外的环境变量,因此在/opt/tomcat/bin路径下创建setenv.sh文件,内容如下:
1 | # 设置JAVA_HOME |
2、创建systemd服务配置文件 tomcat.service
1 | cd /etc/systemd/system/ |
tomcat.service 内容如下:
1 | [Unit] |
3、把tomcat加入开机自启动
1 | systemctl enable tomcat.service |
enable之后,会多出两个文件:
- /etc/systemd/system/multi-user.target.wants/tomcat.service
- /etc/selinux/targeted/active/modules/100/tomcat
5、重启验证tomcat开启自启动
1 | reboot |
看到tomcat已经启动,正想着大功告成,却发现浏览器访问又开始转圈了。检查rng服务,启动正常。
直接使用 ./startup.sh
启动正常,而使用 systemctl start tomcat
就转圈,还能是什么原因?
参照《CentOS7下Tomcat启动慢的原因及解决方案》一文,修改java.security,无效;修改catalina.sh,无效。
是不是tomcat.service写的有问题,参照其他配置方案修改,依然无效。
想到《Dockerfile使用Supervisor管理Tomcat》一文中,supervisor启动tomcat也会有些问题。那么,修改startup.sh呢?依然无效。
最终没有配置成功,留个坑。
6.2. 基于SysVinit设置开机自启动
1、在/etc/init.d下创建服务脚本 tomcat
1 | vim /etc/init.d/tomcat |
tomcat 脚本内容如下:
1 |
|
2、测试启动
1 | service tomcat start |
启动成功,然而,还是转圈。。。
实际上,因为系统版本的原因,init.d方法添加的自启动服务,也会加入到systemctl的管理。所以,报错表现和systemd配置的开机自启动问题相同。
无奈,最终换成了supervisor来设置开机自启动,配置成功。