文章适合于初学或即将开始学习JAVA的小伙伴,你将看到鲜活的踩坑和扫坑案例,还有很多今后整理过的各类参考路径。
一、tomcat和环境变量概述:
主题 | 内容 |
术语概念 | 环境变量:让系统能够找到对应软件的一组地址,可以理解为“系统的视线范围” tomcat:目前最流行的轻量级HTTP服务器,可以在自己电脑上模拟B/S的互联网通信流程 |
设置特点 | windows可以直接在可视化窗口设置; Linux/Mac都需要在命令行设置,可以脑补一下后端工程师今后需要面对各种各样的部署场景都要求掌握熟练的命令行设置技巧 |
二、10个小时我究竟经历了哪些坑:
这次痛点的根本原因在于JAVA和tomcat的更新升级带来设置的变化,茫茫网海上各式各样的各类设置经验让人找不到北。
前前后后我大概踩了以下这些坑:
主题 | 具体坑 |
tomcat配置文件的定位 | bin目录下和启动/关闭相关的参数文档足足有5个(catalina.sh、startup.sh、setclasspath.sh、setenv.sh、server.xml),逐一做了定位 |
除环境变量以外的设置 | 核心的参数文档中还包括端口、内存空间、编码格式、进程号的设置(排查的时候也没少试) |
JDK相关 | 担心建议版的OPENJDK会有影响重装成JDK JDK从11版本开始就没有jre目录,网上一大堆的经验贴都带有/jre目录 |
其他相关 | 防火墙设置、进程强制kill、多次重启、更换浏览器 |
三、正确的设置过程
废话不多说,进入设置过程的正题,这次调试过程主要经历了四个环节:
具体落地成可执行的清单如下:
步骤 | 步骤类型 | 具体分析 |
1 | 下载tomcat | 搜关键词"tomcat",找到apache官网的tomcat下载页面,找Core类下的对应系统格式的压缩包 |
2 | 解压到制定目录 | 建议解压到和/usr/lib/java的节点目录下 命令:tar -zcvf 目标文件 解压到文件夹 |
3 | 文件夹权限设置 | sudo chmod 777 -R apache-tomcat-9.0.37/ |
4 | JDK环境变量确认 | java -version命令确定java环境变量是否设置正常 export命令找到CLASSPATH项对应的值(冒号表示隔开多个值) |
5 | JRE目录确认 | 从JDK11大版本起,已经取消单独的JRE文件,对应在tomcat设置时JRE_HOME也应该取JDK文件夹的地址,而不应该按网上加"/jre"(这里是一个大坑) |
6 | tomcat环境变量设置 | (JAVA版本的更新和tomcat的更新都导致设置方法调整) 拿不定的时候研究README文档,每个软件都会负责地告诉你准确的运行前要做的事情: 文档推荐在bin目录下单独的setenv.sh文件写上JAVA_HOME信息,具体的命令如下: 1、创建文件touch setenv.sh 2、进入vim编辑状态vim setenv.sh 3、按RUNNING.txt文档要求写入你的JRE_HOME地址(实际是JDK文件夹地址): JRE_HOME=/usr/lib/java/jdk-14.0.2 CATALINA_PID="$CATALINA_BASE/tomcat.pid" (第二行命令照抄就行) |
7 | 验证 | 1、在tomcat的bin目录下命令行输入./startup.sh,看是否返回tomcat started 2、在浏览器下打开http://localhost:8080如果正常出现页面表示tomcat服务开启 3、在tomcat的bin目录下命令行输入./shutdown.sh关闭服务 |
8 | 强行关闭进程 | (这里也有个大坑,设置不完整会导致不能正常关闭,考虑强行kill进程): 1、命令行输入ps aux | grep tomcat,看是否返回多行包含tomcat的命令,若有则句首的数字即表示tomcat的进程号; 2、kill 9 tomcat进程号 3、浏览器打开http://localhost:8080验证是否正常关闭 |
9 | 端口和编码格式设置(可以不设置) | 若考虑改tomcat端口号则在tomcat的conf目录下的server.xml文件修改以下代码: connectionTimeout="20000" redirectPort="8443" URIEncoding="UTF-8"/> |
注:apache-tomcat-9.0.37和JDK-14.0.2要替换成你下载时相应的文件夹名称;
相关版本号:Ubuntu18.04、Mac10.13.6、Java-14.02、tomcat-9.0.37
四、附录
tomcat的相关设置一定会是今后避不掉的任务,可能还会面对多个版本并存的部署任务、内存设置等各种各样场景。
网上相关的讨论很多,有些当前已经涉及到的参考罗列如下:
主题 | 路径 |
《设置tomcat文件夹权限》 | https://www.cnblogs.com/genghenggao/p/10313208.html |
《设置tomcat端口号、编码格式》 | https://www.jianshu.com/p/dfddbd8da05d |
《在catalina.sh下配置tomcat内存大小》 | https://jingyan.baidu.com/article/ff42efa9162ea5c19e22021c.html |
《查看tomcat服务器的Log信息》 | https://www.cnblogs.com/xdp-gacl/p/4097608.html |
《用apt-install安装tomcat、查看防火墙、设置log文件夹》 | https://cloud.tencent.com/developer/article/1562501 |
《Tomcat 添加CLASSPATHP配置 -- WEB工程配置文件独立部署》 | https://blog.csdn.net/qinglizoudangqi/article/details/52737684 |
《设置tomcat用户账号和远程IP修改权限》 | https://www.cnblogs.com/guoapeng/p/9823716.html |
tomcat/bin目录下的catalina.sh、startup.sh、setclasspath.sh三个文件定位 | startup.sh---调用--->catalina.sh---引用--->setclasspath.sh https://www.jianshu.com/p/ae1845ce3e8b |
《在setclasspath.sh文件下设置》 | https://blog.csdn.net/NONINETEEN/article/details/82828284 |
《在startup.sh文件下设置》 | https://jingyan.baidu.com/article/e4d08ffd452ad70fd3f60d74.html |
《Linux环境变量的设置和查看方法》 | https://blog.csdn.net/yajunren/article/details/10103517 |
《防火墙服务和防火墙规则的区别与启动》 | https://cloud.tencent.com/developer/article/1562501 |
《tomcat网络通信流程&server.xml文档详解》 | https://blog.csdn.net/weixin_44717011/article/details/102809744 |
《80端口与8080端口的区别》 | https://zhidao.baidu.com/question/92335390.html |
《linux特殊符号大全》 | https://www.cnblogs.com/besharp/articles/11163135.html |
最后,谢谢大家查看,希望帮忙点赞和评论~