使用Tomcat发布项目,项目原来发布在weblogic上,踩坑
一.部署前准备(Centos7)
1.JDK下载
1.1 编程宝库镜像下载(非常全)
http://www.codebaoku.com/jdk/jdk-oracle-jdk1-8.html
1.1.1选择合适的JDK版本
1.1.2下载jdk我这边系统是Linux
1.2 华为镜像下载 方法同上
https://repo.huaweicloud.com/java/jdk/
2.Tomcat镜像下载(当然可以去官网就是很慢)
https://mirrors.cnnic.cn/apache/tomcat/
2.1选择合适的版本,bin目录下适合安装包
二.安装JDK,配置环境变量
1.将JDK包放入/usr/local/java目录下解压
tar -zxvf jdk-8u202-linux-x64.tar.gz
2.使用vi/vim打开/etc/profile文件末尾添加以下环境变量并使用source重新加载
export JAVA_HOME=/usr/local/java/jdk1.8.0_202
export JRE_HOME=$JAVA_HOME/jre
export CLASSPATH=.:${JAVA_HOME}/lib/tools.jar:${JRE_HOME}/lib/dt.jar
export PATH=$JAVA_HOME/bin:$PATH
source /etc/profile
3.java -version 检查是否配置完成
三.安装配置Tomcat
1.安装包放入/opt目录下解压
tar -zxvf apache-tomcat-8.5.81.tar.gz
2.修改默认访问端口,在$HOME/conf/server.xml中找到Connector标签将port默认为8080改为自己提供访问的端口
这是我新建的的连接器(Connector),默认应该只有几个参数,生产环境根具实际情况修改。参数可参考这个网址:https://www.jianshu.com/p/b254c1c04770
3.启动服务
进入$HOME/bin目录下执行start.sh或catalina.sh都可以启动服务
4.访问控制台
通过浏览器输入地址加端口就能访问了
但我们点击Manager时会提示403
是因为我们还没配置角色和用户,无法访问,根据提示主机管理器只能从与 Tomcat 运行在同一台计算机上的浏览器访问,想要在其他计算机上访问需要修改一个context.xml文件,在conf/tomcat-users.xml文件下添加用户及权限
修改/webapps/manager/META-INF/context.xml 注释掉以下内容
在$HOME/conf/tomcat-users.xml中添加角色(role标签)和用户(user标签)并给用户授予角色
之后就可以正常访问了
四.发布项目
1.将项目WAR包直接放入webapps目录下
tomcat有很多种发布方式,websapp下的每个目录就是一个项目,如果不需要tomcat欢迎首页和管理界面,可以直接删除webapps下的所有文件后放入项目包
(生产环境建议tomcat和项目分开部署,通过配置CATALINA_HOME变量。参考:https://cloud.tencent.com/developer/article/1862859
2.修改$HOME/conf/server.xml
在host标签中加入Context,path为虚拟目录,访问时的目录;docBase为项目目录;debug是日志调试信息,数值越大越详细(0-9);reloadable能让tomcat自动重新加载,当我们修改class文件后很方便
<Context path="/appframe" docBase="/opt/tomcat/webapps/appframe" reloadable="true" debug="0"></Context>
3.启动tomcat,通过浏览器访问即可http://192.168.187:7001/appframe/login.do
五.问题总结
问题1:这是没发布的项目时候的一个警告,不会影响tomcat正常使用,但当我发布之后会引发一个错误,未解决
NOTE: Picked up JDK_JAVA_OPTIONS: --add-opens=java.base/java.lang=ALL-UNNAMED --add-opens=java.base/java.io=ALL-UNNAMED --add-opens=java.base/java.util=ALL-UNNAMED --add-opens=java.base/java.util.concurrent=ALL-UNNAMED --add-opens=java.rmi/sun.rmi.transport=ALL-UNNAMED
问题2:
org.apache.jasper.servlet.TldScanner.scanJars At least one JAR was scanned for TLDs yet contained no未解决
问题3:
EVERE[main]org.apache.catalina.core.StandardContext.filterStart Exception starting filter 未解决
问题4:
org.apache.catalina.core.StandardContext.startInternal One or more listeners failed to start. Full details will be found in the appropriate container log file 未解决
总结:集中很多问题有什么jdk11不带jre需要手动生成,把jre目录放在JAVA_HOME同级目录啊,删除JRE的环境变量啊等等,看了很多文章和资料,有这种解决掉的,但对我的不适用。
项目在weblogic10.3(JDK1.7)上是正常部署访问的,但使用tomcat10加上JDK11就出现各种各样的问题,在网上查过各种各样的解决方法,又会报新的错误,怀疑是jdk太新了,换成了JDK1.8,结果又报其他的错,最后把tomcat10换成8,直接正常启动所有问题迎刃而解了,白忙活了几天
启动出现问题都需要去tomcat/logs下看日志排查,这是一个对日志文件介绍的文章https://blog.csdn.net/jiabeis/article/details/102822914