使用Tomcat部署静态项目并处理BUG

--听讲的习惯

Tomcat介绍

tomcat what_Arenaschi的博客-CSDN博客

 

 

Tomcat安装及配置教程(超详细)

那些年我们用过的tomcat_Arenaschi的博客-CSDN博客

 简单使用tomcat查看版本信息等·_windows查看tomcat版本命令-CSDN博客

 

Tomcat部署html静态网站的五种方式

 

注:这里的操作是建立在java jdk和tomcat已安装好并且已经配置好环境变量的情况下

方式一:直接把静态项目复制到Tomcat安装目录的webapps目录中。

例如:我们新建一个test文件夹,在文件夹里新建一个test.html文件,然后将整个test文件夹复制到Tomcat安装目录的webapps目录中,启动tomcat后在浏览器输入ip:port/test/test.html即可访问了。

方式二:在tomcat安装目录中有一个conf文件夹,打开此文件夹,其中包含配置文件server.xml,打开配置文件,并在<host>和</host>之间插入如下语句

<Context path="test" docBase="D:\test" debug="0" reloadable="true" crossContext="true"/>

其中,path为虚拟路径,docBase为项目的路径,启动tomcat后在浏览器输入ip:port/test/页面名.html即可访问了。


方式三:在conf目录中,在Catalina\localhost(此处需要注意目录的大小写)目录下新建一个XML文件,任意命名(例如:aaa),只要和当前文件中的文件名不重复即可,代码如下
<Context path="" docBase="D:\test" debug="0" reloadable="true" crossContext="true"/>

其中,path属性可以不写,docBase为项目的路径,启动tomcat后在浏览器输入ip:port/aaa/页面名.html即可访问了。

方式四:配置虚拟主机

在Tomcat8/conf/server.xml文件的host元素中配置

例如:<Context path="/WJ" docBase="D://WJ"/>

<Context psth="浏览器要访问的目录地址" docBase="网站所在磁盘目录"/>

访问方式:localhost:8080/WJ/hello.html

方式五:配置Tomcat8/conf/localhost/xxx.xml

提示:如果在Tomcat8/conf目录下没有Catalina/localhost,可以自己去创建文件夹

在Tomcat8/conf/Catalina/localhost目录下新建一个xml文件,xml的名字就是我们要访问的路径的名字。比如WJ.xml

在WJ.xml中写入:<Context docBase="D://TaoBao"/>

推荐第一种最简单
 

Tomcat配置域名

一、修改端口

tomcat默认监听端口是8080,我们如果想不带端口的直接访问项目,就必须监听80端口。

打开tomcat中conf文件夹下的service.xml

vi/usr/local/tomcat/apache-tomcat-8.5.38/conf/service.xml

将:

<Connector port=“8080” protocol=“HTTP/1.1” connectionTimeout=“20000” redirectPort=“8443”

/>

改为:

<Connector port="80"protocol=“HTTP/1.1” connectionTimeout="20000"redirectPort=“8443” />

 

二、配置

  1. <Host appBase="webapps"autoDeploy=“true” name="localhost"unpackWARs=“true” xmlNamespaceAware="false"xmlValidation=“false”>
  2. 至于 <Engine> 标签中的属性可以不修改,修改了 <host> 即可

    <!--没有改动defaultHost 修改其下的host即可-->
    <Engine name="Catalina" defaultHost="localhost">

把name的值修改成你的域名,这样就可以通过你的域名+目录+后缀访问了

<!--原本的标签-->
<!--<Host name="localhost"  appBase="webapps"unpackWARs="true" autoDeploy="true">
--><!-- SingleSignOn valve, share authentication between web applicationsDocumentation at: /docs/config/valve.html --><!--<Valve className="org.apache.catalina.authenticator.SingleSignOn" />--><!--<Context docBase="" reloadable="" />--><!-- Access log processes all example.Documentation at: /docs/config/valve.htmlNote: The pattern used is equivalent to using pattern="common" -->
<!--        <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"prefix="localhost_access_log" suffix=".txt"pattern="%h %l %u %t &quot;%r&quot; %s %b" /></Host>--><!--自己添加的标签,配置域名解析--><Host name="www.song.net"  appBase="webapps"unpackWARs="true" autoDeploy="true" xmlValidation="" xmlNamespaceAware=""><!--配置默认打开项目--><Context docBase="/usr/local/tomcat/apache-tomcat-8.5.55/newwebapps/QingHeWeb" path="" debug="0"   reloadable="true" /><Value className="org.apache.catalina.valves.AccessLogValue"    directory="logs"    prefix="qinghejiaoyu.net_access_log."    suffix=".txt"    pattern="%h %l %u %c &quot;%r&quot; %s %b" /></Host>

 

静态网页在Tomcat上发布时去掉8080及后缀名.html

我的项目目录: /project/test.html
从 http://localhost:8080/project/test.html 到 http://localhost

一、去掉8080

因为浏览器默认端口是80,将8080端口改为80即可不用输入端口
打开tomcat文件夹–>找到conf–>server.xml–>用记事本打开
找到下面这段

将8080 改为80

重启tomcat即可完成端口修改,再次访问就可使用 http://localhost/project/test.html不加端口访问

去掉后面的/project

还是编辑server.xml,
找到 <Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true">
在这行下面添加

<Context path="/" docBase="C:\tomcat\webapps\ROOT\project" reloadable="false" ></Context >

docBase为项目目录

保存重启tomcat后即可使用 http://localhost/test.html 不加项目目录进行访问

去掉test.html

编辑conf下web.xml文件
一直拖到最后我们可以看到这几行

 

在下面增加自己的文件名,如图:

重启Tomcat后即可使用 http://localhost 直接进行访问

tomcat和jdk版本兼容(Tomcat版本要比jdk高)

用的tomcat是低版本的,但是用的jdk却是高版本的,用Servlet做的项目运行都没有问题,但是直接运行jsp却死活都运行失败。

最后发现是tomcat和jdk的版本问题造成的。

总结如下:

tomcat v7.0-------support-------->Java EE 5 and 6

tomcat v8.0-------support-------->Java EE 5,6 and 7

tomcat v8.5-------support-------->Java EE 5,6 and 7

tomcat v9.0-------support-------->Java EE 5,6,7 and 8

(Tomcat版本要比jdk高)

所以 jdk1.8 需要运行在tomcat v9.0才不会出现上述问题

例如运行环境是:jdk1.8.0.1+tomcat8.5.1(实际上不应该会报错),但是还是报了版本不兼容问题。最后升级了tomcat为9.0成功。
一般是和jdk版本保持一致的,也就是说tomcat7对用jdk7版本;tomcat8对用jdk8版本(猜测:但是如果maven中的servlet-api高于tomcat中的servlet-api会出现不兼容的问题,解决这一问题:1、将pom.xml文件中的servlet-api版本与tomcat中的servlet-api保持一致。2、升级tomcat为9.0)。

通常情况下,可以依次类推的。
tomcat8.0最低可以兼容jdk1.7,jdk1.7以上的版本都可以

tomcat版本不能低于兼容的jdk的最低版本:

 
最优配置:
下载tomcat的官网,有兼容列表的;
tomcat v7.0-------support-------->Java EE 6 and 6以上
tomcat v8.0-------support-------->Java EE 7 and 7以上
tomcat v9.0-------support-------->Java EE 8 and 8以上

 

 

Tomcat启动闪退问题整理

Tomcat启动闪退一般有以下几个原因:

1、JDK环境变量配置错误;

2、JDK版本与tomcat版本不匹配(一般jdk1.6,tomcat8.**这样可能会出现类似问题)

3、tomcat内存配置有误(Catalina文件内存配置有误)

4、端口被占用

解决方案: 1、JDK环境变量配置错误;

     排查:

        1)检查环境变量:cmd启动命令行窗口→通过cd命令到tomcat的bin目录下→运行startup.bat。可以帮助查看变量正确性;

        2)打开startup.bat文件,在最后面加上:pause 然后,直接点击运行。也同样可以查看变量

如果是变量问题:

   1.1)配置变量方法一:

在桌面上右键 我的电脑à属性à高级à环境变量à系统变量à新建/编辑 JAVA_HOME\ Path\ CLASSPATH三个环境变量:

        1)JAVA_HOME: D:\Program Files\Java\jdk1.8

        2)Path: %JAVA_HOME%\bin; %JAVA_HOME%\jre\bin;

        3)CLASSPATH:D:\ProgramFiles\Java\jdk1.8\lib\tools.jar;D:\Program Files\Java\jdk1.8\lib\dt.jar;

Step3、检测配置是否成功:开始à运行à输入命令:java –version,显示具体的jdk版本,那么说明jdk安装成功.

   1.2)配置变量方法二:

右键:startup.bat文件-》编辑,在最顶层加上环境变量代码:

        set JAVA_HOME=C:\Program Files\Java\jdk1.8.0_181

        set JRE_HOME=C:\Program Files\Java\jdk1.8.0_181\jre

        set CATALINA_HOME=D:\apache-tomcat-7.0.92-windows-x64\apache-tomcat-7.0.92

2、JDK版本与tomcat版本不匹配

        解决方案:升级JDK

3、tomcat内存配置有误(Catalina文件内存配置有误)

        找到配置内存的语句,删除重新配置。

        本人配置的语句为:set JAVA_OPTS=%JAVA_OPTS% -Xms512m -Xmx1024m -XX:PermSize=128M -XX:MaxNewSize=256m -XX:MaxPermSize=378m

4、端口被占用

        netstat -ano | findstr “8080”

查看此端口是否被占用。如果被占,则:1)修改tomcat端口;2)将现在使用端口的程序kill掉。

tomcat部署多个域名https

tomcat部署多个域名https

注:tomcat服务器需要8.5以上的版本

说明:

  • port:端口号;
  • certificateKeystoreFile:证书路径(例如:conf/1xxxx.jks);
  • certificateKeystorePassword:证书密码;
  • certificateKeyAlias:证书别名

多个项目配置多个域名

<Host name="xxx.xxx1.com" appBase="webapps/xxx.xxx1.com"unpackWARs="true" autoDeploy="true"><Context path="" docBase ="xxx.xxx1.com"/><Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"prefix="xxx.xxx1.com_access_log" suffix=".txt"pattern="%h %l %u %t &quot;%r&quot; %s %b" />
</Host> 
<Host name="xxx.xxx2.com" appBase="webapps/xxx.xxx2.com"unpackWARs="true" autoDeploy="true"><Context path="" docBase ="xxx.xxx2.com"/><Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"prefix="xxx.xxx2.com_access_log" suffix=".txt"pattern="%h %l %u %t &quot;%r&quot; %s %b" />
</Host>一个项目对应多个域名
<Host name="xxx.xxx1.com" appBase="webapps、xxx.xxx1.com" unpackWARs="false" autoDeploy="true" defaultHost="xxx.xxx1.com">
<!--多个域名别名-->
<Alias>xxx.xxx1.com</Alias>
<Alias>xxx.xxx1.com</Alias>
<!--默认项目访问路径-->
<Context path="" docBase="" reloadable="true" />
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"prefix="localhost_access_log" suffix=".txt"pattern="%h %l %u %t &quot;%r&quot; %s %b" />
</Host>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/206184.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

银河麒麟安装lnmp,安装chrome。

安装lnmp 下载相关文件 链接&#xff1a;https://pan.baidu.com/s/1YqFLfGpE5DP3Sf_2GsXqNg?pwdptsn –来自百度网盘超级会员V7的分享 上传到服务器 我所选择上传的地方是 /home/npf/nginx-server&#xff0c; php放在跟nginx-server的同级目录 cd / mkdir home /home/npf…

水库大坝安全监测参数与设备

智慧水利中&#xff0c;水库大坝的安全监测必不可少。做好水库大坝的安全监测&#xff0c;是确保水库大坝结构安全和预防灾害的重要手段。对于预防灾害、保护人民生命财产安全、优化工程管理、改进工程设计、保护环境资源和提高公众信任等方面有着重要的意义。 水利水库大坝安全…

CSS、JS文件无法正确加载至页面问题与解决

目录 1. 问题出现 2. 分析与解决 3. 总结 1. 问题出现 自己在写项目是时候&#xff0c;想启动浏览器查询首页面index.jsp的显示效果 预期效果应该是下面这样的&#xff1a; 但是实际上是这样的&#xff1a; 意思也就是说可能是关于CSS、JS相关的引入方面出了问题&#xff…

创建vue项目:vue脚手架安装、vue-cli安装,vue ui界面创建vue工程(vue2/vue3),安装vue、搭建vue项目开发环境(保姆级教程二)

今天讲解 Windows 如何利用脚手架创建 vue 工程&#xff0c;以及 vue ui 图形化界面搭建 vue 开发环境&#xff0c;这是这个系列的第二章&#xff0c;有什么问题请留言&#xff0c;请点赞收藏&#xff01;&#xff01;&#xff01; 文章目录 1、安装vue-cli脚手架2、vue ui创建…

python 涉及opencv mediapipe知识,眨眼计数 供初学者参考

基本思路 我们知道正面侦测到人脸时&#xff0c;任意一只眼睛水平方向上的两个特征点构成水平距离&#xff0c;上下两个特征点构成垂直距离 当头像靠近或者远离摄像头时&#xff0c;垂直距离与水平距离的比值基本恒定 根据这一思路 当闭眼时 垂直距离变小 比值固定小于某一个…

火狐,要完了!

在过去几年中&#xff0c;关于Firefox 浏览器的衰落有过不少讨论。目前来说&#xff0c;很多公共的以及私营的大型网站都缺乏对Firefox的适当支持。但是Firefox也多次试图“自救”&#xff0c;甚至就在不久前&#xff0c;Mozilla 通过官博发文&#xff0c;表示 Firefox 在 2023…

如何使用Matlab完成窗口与子窗口

目录 一、前言 二、主窗口与主窗口按钮 三、子窗口 四、调用函数并显示在子窗口中的文本框中 五、关闭子窗口 一、前言 有时候需要借用Matlab完成一个图窗功能&#xff0c;但是我们的程序不仅拥有功能&#xff0c;还拥有一些子功能&#xff0c;那么我们该如何借助Matlab完…

[linux] 用命令行wget下载google drive的大文件

使用wget命令下载Google drive上的文件_ubuntu上wget下载谷歌云盘文件-CSDN博客 如何用命令行下载Google Drive上的共享文件&#xff1f;-腾讯云开发者社区-腾讯云 举例&#xff1a;https://drive.google.com/drive/folders/1vKj3VvJEKgS_o-uOSmz3I0-GomECpql3 1、在网页上&…

360压缩安装一半不动了怎么办?

360压缩软件是我们常用的压缩软件&#xff0c;但是常常会遇到压缩安装到一半停止的情况&#xff0c;下面提供了一些可能的原因和解决办法&#xff0c;大家可以进行尝试~ 方法一&#xff1a;关闭防火墙和杀毒软件 有时候&#xff0c;防火墙和杀毒软件可能会阻止360压缩的安装过…

CSM2433 一款集成2.4G+125K 和8位RISC 的SOC芯片

CSM2433是一款集成2.4GHz频段发射器、125KHz接收器和8位RISC&#xff08;精简指令集&#xff09;MCU的SOC芯片。 无线收发器特性&#xff1a; 发射工作在 2.4GHz ISM 频段 发射兼容 BLE 4.2 接收工作在 15KHz-150KHz 内置 32 次可编程 NVM 存储器 3.3V 编程电压 集成低电…

RocketMQ-RocketMQ高性能核心原理与源码剖析(中)

二.小试牛刀阶段 ​ 开始理解一些比较简单的业务逻辑 3、Netty服务注册框架 1、关注重点 ​ 网络通信服务是构建分布式应用的基础&#xff0c;也是我们去理解RocketMQ底层业务的基础。这里就重点梳理RocketMQ的这个服务注册框架&#xff0c;理解各个业务进程之间是如何进行…

Python----多态

1、什么是多态 多态指的是一类事物有多种形态。 定义&#xff1a;多态是一种使用对象的方式&#xff0c;子类重写父类方法&#xff0c;调用不同子类对象的相同父类方法&#xff0c;可以产生不同的执行结果。 ① 多态依赖继承 ② 子类方法必须要重写父类方法 首先定义一个父类…

2.1 网络编程-多用户通信系统(用户登录、拉取在线用户、无异常退出)

文章目录 一、多用户通信系统1.1 介绍1.2 公共类1.2.1 封装消息类1.2.2 用户类1.2.3 消息类型类1.2.4 控制台读取内容 二、用户登录2.1 客户端2.1.1 菜单界面 QQView2.1.2 验证用户UserClientService2.1.3 线程类 ClientConnectServerThread2.1.4 线程集合类 2.2 服务端2.2.1 服…

【面试经典150 | 二叉树】从前序与中序遍历序列构造二叉树

文章目录 写在前面Tag题目来源题目解读解题思路方法一&#xff1a;递归 写在最后 写在前面 本专栏专注于分析与讲解【面试经典150】算法&#xff0c;两到三天更新一篇文章&#xff0c;欢迎催更…… 专栏内容以分析题目为主&#xff0c;并附带一些对于本题涉及到的数据结构等内容…

Jest与typescript单元测试

文章目录 前言安装配置.vscode/launch.jsonjest.config.tsts.config.ts 测试例子 前言 简单记录一下vscode里跑Jest单元测试。 安装 yarn add -D ts-jest ts-node types/jest jest 配置 .vscode/launch.json {"version": "0.2.0","configurations…

通过异步序列化提高图表性能 Diagramming for WPF

通过异步序列化提高图表性能 2023 年 12 月 6 日 MindFusion.Diagramming for WPF 4.0.0 添加了异步加载和保存文件的功能&#xff0c;从而提高了响应能力。 MindFusion.Diagramming for WPF 提供了一个全面的工具集&#xff0c;用于创建各种图表&#xff0c;包括组织结构图、图…

【Docker二】docker网络模式、网络通信、数据管理

目录 一、docker网络模式&#xff1a; 1、概述 2、docker网络实现原理&#xff1a; 3、docker的网络模式&#xff1a; 3.1、bridge模式&#xff1a; 3.2、host模式&#xff1a; 3.3、container模式&#xff1a; 3.4、none模式&#xff1a; 3.5、自定义网络模式&#xf…

shell命令学习(1)——(待完善)

explainshell.com shell统计当前文件夹下的文件个数、目录个数Linux之shell常用命令&#xff08;三&#xff09; sort&#xff08;排序&#xff09;、uniq&#xff08;处理重复字符&#xff09; linux中shell将换行输入到文件中 shell脚本&#xff0c;将多行内容写入文件中 f…

使用Python实现轮盘赌选择法Roulette Wheel Selection Method in Python

一、引言 最近在手写遗传算法&#xff0c;想尝试解决一些优化问题。然而&#xff0c;在编码的过程中&#xff0c;自己发现了很多都不懂的问题。比如&#xff0c;交叉的操作&#xff0c;有单点交叉、两点交叉和多点交叉&#xff0c;具体选哪一种会更好呢&#xff1f;未知。还有交…

读者和写者问题

它可以解决的问题&#xff1a; 可以支持多个读者访问&#xff0c;通过count计数 来实现多个读者访问的时候是互斥的&#xff0c;不会出现不符合进程同步的问题&#xff1a;设置mutex互斥锁&#xff0c;保证count或count--和if Pv(mutex)是一气呵成的 读写公平&#xff0c;通过…