Tomcat简单配置

本文详细指导如何从官网下载不同版本的Tomcat,包括Core、Fulldocumentation、Deployer和Embedded。讲解了配置步骤,如环境变量设置、启动服务、修改端口、web根路径设置及多站点配置,适合Tomcat初学者和运维人员。
摘要由CSDN通过智能技术生成

下载

官网:https://tomcat.apache.org/

点击页面左边列表,Download模块,选择版本

在页面右边第二个模块Quick Navigation,点击其中版本号,如下,选择需要的版本

安装

解压到任意一文件夹。

配置

(1)配置环境变量

在环境变量中,新建一个变量名为CATALINA_HOME,路径为Tomcat的解压路径。例如

D:\........\Tomcat

变量名不能任意起,Tomcat的程序中,默认引用的是这个名字,使用其他变量名可能导致无效。

在系统变量Path中加入%CATALINA_HOME%\bin

(2)配置启动服务和关闭服务

如果不想通过Tomcat9w.exe启动器启动Tomcat的服务,可以通过运行Tomcat\bin\startup.bat文件进行启动。

startup.bat主要用来寻找jdk和catalina.bat的路径,然后启动catalina.bat。运行规则如下:(参考大佬文章)

如果环境变量设置了CATALINA_HOME,则直接使用环境变量设置的值作为Tomcat安装目录。假如未设置环境变量CATALINA_HOME,则以当前目录作为CATALINA_HOME。此时,如果%CATALINA_HOME%\bin\catalina.bat存在,则批处理或命令行当前目录作为CATALINA_HOME。假如%CATALINA_HOME%\bin\catalina.bat不存在,则把当前目录的上一级目录作为CATALINA_HOME,然后再判断%CATALINA_HOME%\bin\catalina.bat是否存在。如果存在,则上一级目录就是CATALINA_HOME;否则,提示找不到CATALINA_HOME环境变量并结束执行。

修改startup.bat文件,用文本形式打开,没法打开就修改后缀为txt打开,修改完再改回去。

在第一行前,加入两行代码

SET JAVA_HOME=JDK的路径

SET CATALINA_HOME=解压Tomcat的目录

设置该语句主要目的,可以将startup.bat移动到任意一位置都可以启动服务,而不需要进入到Tomcat的文件夹中找到该文件启动。

运行该文件,若出现中文乱码,解决方案:

打开tomcat文件夹到conf目录下

修改logging.properties

找到

java.util.logging.ConsoleHandler.encoding = utf-8

更改为

java.util.logging.ConsoleHandler.encoding = GBK

若要自定义服务器使用内存大小,加入如下命令:

//windows

set JAVA_OPTS=-server -Xms1024m -Xmx2048m -XX:PermSize=256m -XX:MaxPermSize=512m

//Linux

JAVA_OPTS="-server -Dfile.encoding=UTF-8 -Xms=512m -Xmx1024m -XX:PermSize=128m -XX:MaxPermSize=256m"

相应的关闭服务的文件shutdown.bat也需要在同样位置增加上述两行代码。

SET JAVA_HOME=JDK的路径

SET CATALINA_HOME=解压Tomcat的目录

大佬分析的shutdown原理,这里记录一下:

通过shutdown.bat脚本,这个脚本最终会调用到Catalina的stopServer方法,这个方法中创建了一个Socket,并向StandardServer监听的端口发送了一个shutdown命令,主线程接收到后就退出了,其他守护线程也随之结束;

如果我们将server.xml配置文件修改成:

<Server port="8005" shutdown="GET /SHUTDOWN HTTP/1.1"> 

这样直接在浏览器中输入http://localhost:8005/SHUTDOWN就可以关闭Tomcat了。

另外的一种方式就是直接调用StandardServer的stop方法。

这里要注意一下,默认关闭端口为-1,也就是没有设置,需要手动改成正常可用的端口,如果不改的话使用idea编译器关闭服务会失败

(3)修改端口

在Tomcat的conf文件夹中找到server.xml,打开xml文件推荐使用编辑器打开,如Sublime Text,jetbrain等,可以清楚地区分注释和主要代码。

找到如下代码块

    <Connector port="8080" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" />

可以看到,http协议请求的配置:

port端口号为8080,可以修改为常用的80端口。

protocol网络协议版本http/1.1

connectionTimeout连接超时时间为20秒。

redirectPort为重定向到的服务器端口,例如当前访问的资源必须用https协议传送,则可以重定向到https的端口。

(4)修改web根路径

在server.xml中找到

<Host name="localhost"  appBase="webapps"
            unpackWARs="true" autoDeploy="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>

name是指对于用户来说访问的虚拟主机名,如www.baidu.com

appBase是web的根路径(主页的文件夹),可以是Tomcat内部相对路径,也可以是系统的绝对路径,但是Tomcat必须有访问权限。

autoDeploy指是否允许自动部署,默认值是 true,即表示 Tomcat 会自动检测 appBase 目录下面的文件变化从而自动应用到正在运行的 Web 应用程序。

unpackWARs指如果存在项目war包是否自动解压,有时候项目大文件多,为了方便,将项目打包war,在上传服务器,使用其自动解压部署。

修改<Host>的appBase为项目文件夹,如d:\web1,该文件夹一般情况下包含WEB-INF文件夹。

在<Host></Host>中加入

<Context path="" docBase="d:\web1" debug="0" reloadable="true"/>

docBase:指定Web应用的文件路径,可以给定绝对路径,也可以给定相对于<Host>的appBase属性的相对路径

path=""指对用户来说访问的路径名。

这里注意,比如实际文件夹路径为web1,如果path也设为web1,那么对于黑客来说,你是在告诉他,你的服务器文件的位置,是不安全的。如果设置为其他任意名称,相对安全。这里有个新手小坑

(1)为空,则访问Host的name时直接定向到这个Context对应文件夹的主页文件,如访问http://localhost,服务器会返回/web1/index.jsp。

(2)如果不为空,例如为web2,则在访问的时候,访问http://localhost会发生404,只有访问http://localhost/web2,服务器才会返回/web1/index.jsp。

(5)多站点配置

<Host>可以实现一个服务器的多个站点,例如:

<Host name="www.web1.com" appBase="D:/web1" autoDeploy="true" unpackWARs="true">     </Host>  

<Host name="www.web2.com" appBase="D:/web2" autoDeploy="true" unpackWARs="true">      </Host> 

但前提是用户能通过dns服务器将两个域名都解析到你服务器的ip。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值