Tomcat 完全上手指南:从安装到部署,一篇文章吃透

Tomcat 完全上手指南:从安装到部署,一篇文章吃透 Tomcat 完全上手指南从安装到部署一篇文章吃透一、先搞懂Tomcat 是干什么的一句话解释Tomcat 是一个可以运行 Java 网站/后端程序的“容器”。如果你写了一个 Java Web 项目比如用 Spring Boot 打包成.war或.jar文件想让用户通过浏览器访问它就需要 Tomcat 这样的应用服务器来跑它。Tomcat 本质上是Servlet 容器专门负责解析 Java 中的 Servlet 和 JSP一种动态网页技术并把结果转成 HTML 返回给浏览器。Tomcat 和 Nginx 的区别是什么这是很多新手的困惑点用一张表就能看明白对比维度NginxTomcat类型Web 服务器 / 反向代理Web 应用服务器 / Servlet 容器擅长处理静态文件图片、CSS、JS、反向代理、负载均衡动态 Java 页面JSP、Servlet、后端业务逻辑处理静态能力极强并发高占用资源少一般远不如 Nginx需要 Java 吗不需要必须依赖 JDK/JRE典型角色前端门面接收请求转发动态请求后端实际运行业务代码现实中它们总是配对使用用户 →Nginx处理静态文件或把/api/请求转发 →Tomcat运行 Java 代码处理业务返回结果 → Nginx → 用户。这就是经典的Nginx Tomcat 动静分离架构。现在你心里有个数了我们开始动手安装。二、安装前必备JavaJDK环境Tomcat 是 Java 程序必须先装好JDK 或 JRE版本 8、11、17 等均可。本教程以OpenJDK 11为例。2.1 Linux 安装 JDK方法一yum 安装推荐# CentOS/RHELsudoyuminstalljava-11-openjdk-devel-y验证java -version和javac -version方法二解压安装如果不方便用 yum可以去 Adoptium 下载 Linux 版 JDK 压缩包解压到/usr/local/jdk11然后配置环境变量# 在 ~/.bashrc 或 /etc/profile 末尾添加exportJAVA_HOME/usr/local/jdk11exportPATH$JAVA_HOME/bin:$PATHexportCLASSPATH.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar执行source ~/.bashrc生效。2.2 Windows 安装 JDK下载 Windows 版 JDK 安装包.msi 或 .exe比如从 Oracle 或 OpenJDK 官网获取。双击安装记住安装路径比如C:\Program Files\Java\jdk-11.0.2。设置环境变量右键“此电脑” → “属性” → “高级系统设置” → “环境变量”。新建系统变量JAVA_HOME值为 JDK 安装路径。编辑Path变量添加%JAVA_HOME%\bin。打开 cmd输入java -version看到版本信息即成功。三、Linux 上安装 Tomcat下面介绍两种方式yum 安装简单但不一定最新和解压安装通用、生产常用。3.1 方法一使用 yum 安装 Tomcat适合快速试验在 CentOS 7 上EPEL 仓库提供了 Tomcat 8 的包。sudoyuminstallepel-release-y# 启用 EPEL 仓库sudoyuminstalltomcat-y# 安装 Tomcat注意不同系统的包名可能略有差异可使用yum search tomcat查找。安装完成后配置文件默认在/etc/tomcat/程序主目录在/usr/share/tomcat/或/var/lib/tomcat/启动sudo systemctl start tomcat开机自启sudo systemctl enable tomcat访问http://你的服务器IP:8080应该能看见 Tomcat 小猫欢迎页。但此方式安装的版本可能较旧且定制性不强企业里更多用下面的解压安装。3.2 方法二解压二进制包安装推荐、所有 Linux 通用步骤1下载 Tomcat访问官网 https://tomcat.apache.org/ 选择左侧Download下的一个版本比如 Tomcat 9 或 10。找到Core下的tar.gz链接在服务器上用wget下载cd/tmpwgethttps://dlcdn.apache.org/tomcat/tomcat-9/v9.0.75/bin/apache-tomcat-9.0.75.tar.gz# 链接以实际为准右键复制链接即可步骤2解压到指定目录sudomkdir/opt/tomcatsudotar-zxvfapache-tomcat-9.0.75.tar.gz-C/opt/tomcat --strip-components1--strip-components1是把解压后第一层文件夹内的内容直接放到/opt/tomcat里避免路径嵌套。步骤3创建专用用户安全起见不要用 root 运行 Tomcat。sudogroupaddtomcatsudouseradd-s/bin/false-gtomcat-d/opt/tomcat tomcatsudochown-Rtomcat:tomcat /opt/tomcatsudochmodx /opt/tomcat/bin/*.sh步骤4手动启动测试sudo-utomcat /opt/tomcat/bin/startup.sh查看日志确认启动是否成功tail-f/opt/tomcat/logs/catalina.out看到Server startup in [xxx] milliseconds即启动成功。访问http://IP:8080验证。步骤5注册成 systemd 服务实现开机自启、systemctl 管理创建服务文件sudovi/etc/systemd/system/tomcat.service写入以下内容根据你的路径适当调整[Unit] DescriptionApache Tomcat Web Application Container Afternetwork.target [Service] Typeforking Usertomcat Grouptomcat EnvironmentJAVA_HOME/usr/lib/jvm/java-11-openjdk # 改为你的JAVA_HOME路径 EnvironmentCATALINA_PID/opt/tomcat/temp/tomcat.pid EnvironmentCATALINA_HOME/opt/tomcat EnvironmentCATALINA_BASE/opt/tomcat EnvironmentCATALINA_OPTS-Xms512M -Xmx1024M -server -XX:UseG1GC EnvironmentJAVA_OPTS-Djava.awt.headlesstrue -Djava.security.egdfile:/dev/./urandom ExecStart/opt/tomcat/bin/startup.sh ExecStop/opt/tomcat/bin/shutdown.sh [Install] WantedBymulti-user.target然后执行sudosystemctl daemon-reloadsudosystemctl start tomcatsudosystemctlenabletomcatsudosystemctl status tomcat之后就可以用systemctl stop tomcat等命令管理了。检查 JAVA_HOME 路径可以用readlink -f $(which java)找到 java 可执行文件再根据路径确定 JAVA_HOME通常是上一级目录。四、Windows 上安装 Tomcat解压版Windows 安装同样简单下载解压即可。步骤1下载 Windows 版 Tomcat官网下载页面选择Core下的64-bit Windows zip。比如apache-tomcat-9.0.75-windows-x64.zip。步骤2解压到方便的位置解压到C:\tomcat避免目录中有空格。步骤3配置环境变量可选但推荐新建系统变量CATALINA_HOME值为C:\tomcat编辑Path添加%CATALINA_HOME%\bin这样可以在命令行直接使用startup等命令。步骤4启动 Tomcat打开命令提示符进入C:\tomcat\bin目录cd C:\tomcat\bin startup.bat会弹出一个新命令行窗口显示启动日志不要关闭它。看到Server startup in xxx ms后打开浏览器访问http://localhost:8080小猫欢迎页就会出现。步骤5注册为 Windows 服务开机自启进入bin目录用管理员身份运行命令提示符执行service.bat install此时去“服务”services.msc里可以找到一个名为Apache Tomcat 9.0 Tomcat9的服务把它设为自动启动即可。卸载服务用service.bat remove。五、Tomcat 目录结构速览无论 Windows 还是 Linux解压后的目录都长得一样apache-tomcat/ ├── bin/ # 启动、停止脚本startup.sh, shutdown.sh, catalina.sh 等 ├── conf/ # 配置文件server.xml, web.xml, tomcat-users.xml 等 ├── lib/ # Tomcat 运行依赖的 jar 包 ├── logs/ # 日志文件catalina.out, localhost.log 等 ├── temp/ # 临时文件 ├── webapps/ # 部署 Web 应用的目录把 war 包或项目文件夹丢这里就能访问 └── work/ # 编译后的 JSP 文件缓存六、常用命令与脚本Linux 解压版在bin/目录下操作命令启动./startup.sh停止./shutdown.sh查看控制台日志tail -f ../logs/catalina.out检查配置语法没有专门命令配置错误启动时会报错Linux yum 安装 / systemd 管理操作命令启动sudo systemctl start tomcat停止sudo systemctl stop tomcat重启sudo systemctl restart tomcat查看状态sudo systemctl status tomcat查看日志sudo journalctl -u tomcat -f或看/var/log/tomcat/catalina.outWindows 版cmd 下进入bin目录操作命令启动startup.bat停止shutdown.bat查看日志直接看弹出的控制台窗口或logs/catalina.yyyy-mm-dd.log调试技巧如果启动一闪而过手动进入bin目录运行catalina.bat runWindows或./catalina.sh runLinux这样日志会打印在当前终端便于查错。七、核心配置详解重点所有配置文件都在conf/目录下我们主要关注三个。7.1 server.xml —— Tomcat 的骨架这个文件控制着 Tomcat 的整体结构包括端口、主机、连接器等。1关闭端口Serverport8005shutdownSHUTDOWNTomcat 监听 8005 端口用于接收关闭命令。一般不用动但要保证外部无法访问否则有被远程关掉的风险。2HTTP 连接器用户访问的入口Connectorport8080protocolHTTP/1.1connectionTimeout20000redirectPort8443/port“8080”Tomcat 默认端口浏览器就通过它访问。如果想改成 80需要 root 权限并修改此处。connectionTimeout“20000”连接超时时间毫秒。redirectPort“8443”当需要 HTTPS 时会自动跳转到这个端口配合 SSL 设置。常用优化参数可自行添加maxThreads500最大处理请求的线程数。acceptCount100当所有线程都在忙时允许排队的最大请求数。compressionon开启 HTTP 响应压缩。3AJP 连接器通常与 Apache 配合ConnectorprotocolAJP/1.3port8009secretRequiredfalse/如果不与老式 Apache 集成一般注释掉或删除。4虚拟主机定义Host 和 ContextHostnamelocalhostappBasewebappsunpackWARstrueautoDeploytrueValveclassNameorg.apache.catalina.valves.AccessLogValvedirectorylogsprefixlocalhost_access_logsuffix.txtpattern%h %l %u %tquot;%rquot;%s %b//Hostname域名localhost表示仅本机访问生产环境可改为真实域名。appBase应用存放的目录默认webapps。丢进去的.war文件会自动解压部署。autoDeploy为true时每次检测到webapps里有新文件或改动会自动重新部署。如何添加一个新站点在Host里面加Context元素即可Contextpath/myappdocBase/data/myappreloadabletrue/含义访问http://域名:8080/myapp时Tomcat 会去找/data/myapp目录下的程序。7.2 tomcat-users.xml —— 管理用户当你想通过浏览器进入 Tomcat 的Manager 管理界面用于远程部署、启停应用或Host Manager时就需要配置用户名和密码。编辑conf/tomcat-users.xml在tomcat-users标签内添加注意仅供测试生产环境务必使用强密码rolerolenamemanager-gui/rolerolenameadmin-gui/userusernameadminpasswordyour_passwordrolesmanager-gui,admin-gui/然后重启 Tomcat访问http://IP:8080/manager/html输入账号即可。安全提醒生产环境不要开放 Manager 给公网或配合强密码和 IP 限制。7.3 web.xml —— 默认应用的部署描述符位于conf/web.xml是所有应用的“公共配置”。一般不需要大改但可以开启目录列表功能调试用找到servlet中的listings参数改为trueinit-paramparam-namelistings/param-nameparam-valuetrue/param-value/init-param这样访问某个没有index.html的目录时就会列出文件。生产环境务必关掉。八、部署一个 Java Web 应用部署本质就是把项目放到 webapps 目录下Tomcat 会自动识别。方式1war 包部署最常用开发人员会给你一个.war文件比如myapp.war。将这个文件复制到webapps/目录下。Tomcat 检测到新 war 包会自动解压成一个同名文件夹如webapps/myapp/。访问路径http://服务器IP:8080/myapp/注意 myapp 是 war 文件名。热更新如果程序代码变了重新上传新的myapp.warTomcat 会先删掉旧的解压目录再解压新的无需重启但大型项目建议重启。方式2目录部署直接将项目文件夹复制到webapps/下比如你把一个名为hello的文件夹里面有WEB-INF等放入访问http://IP:8080/hello即可。方式3修改 Context 路径如果不希望应用名出现在 URL 里即访问根路径http://IP:8080/直接到你的应用可以在conf/Catalina/localhost/下创建一个ROOT.xml文件注意大小写内容如下ContextdocBase/data/myapp/然后把webapps/ROOT目录删掉重启 Tomcat。此时访问http://IP:8080就是你的应用了。九、Nginx Tomcat 组合拳实战这是公司最常用的架构Nginx 负责接收外部请求将静态文件直接返回动态请求转发给 Tomcat。配置示例Nginx 反向代理 Tomcat假设你的 Tomcat 在http://127.0.0.1:8080上运行。编辑 Nginx 配置文件nginx.conf或某个server块server { listen 80; server_name www.yourdomain.com; # 静态文件直接由 Nginx 处理 location /static/ { root /var/www/yourproject; # 静态文件实际路径 expires 7d; } # 其他请求全部转发给 Tomcat location / { proxy_pass http://127.0.0.1:8080; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } }重启 Nginx 后用户访问www.yourdomain.com实际由 Nginx 处理静态资源.jsp、/api/等动态请求才交给 Tomcat。这样做的优势Nginx 处理高并发、静态文件、SSL 终止。Tomcat 专注业务逻辑减轻压力。十、总结与学习路径建议环节LinuxWindows安装 JDKyum install java-11-openjdk-devel下载安装包配置 JAVA_HOME安装 Tomcat推荐解压到/opt/tomcat注册 systemd 服务解压到C:\tomcat注册 Windows 服务启动systemctl start tomcat或./startup.shstartup.bat部署应用复制 war 包到webapps/同左配置核心编辑conf/server.xml同左与 Nginx 配合Nginx 反代到本机 8080 端口同左建议你亲手完成的三个练习单机部署在虚拟机或自己电脑上从零装好 JDK 和 Tomcat改端口为9090看到小猫页面。部署一个程序找个最简单的sample.warTomcat 官方例子里有部署上去并成功访问。Nginx 联动在前面加一层 Nginx通过域名访问 Nginx再由 Nginx 反代到 Tomcat实现动静分离。至此你已经掌握了 Tomcat 从概念到生产部署的全部核心技能。