Linux小课堂: JavaWeb 应用环境配置与 Tomcat 安装指南
JavaWeb 应用架构核心概念
- Servlet 是遵守 Java Servlet API 规范的 Java Web 应用程序,用于动态生成 HTML
- 其实现方式分为两类:
- 纯 Java 代码编译:直接编写 Java 类并编译为 Servlet
- JSP(JavaServer Pages)转换:通过 HTML 页面嵌入 Java 代码,由 JSP 编译器转换为 Servlet 字节码
- JSP 本质是 Servlet 的抽象层,通过编译生成
_jsp.java文件并编译为.class文件
- JSP 本质是 Servlet 的抽象层,通过编译生成
Servlet 需在 Servlet 容器中运行。Tomcat(Apache 软件基金会开源项目)是主流 Servlet 容器,亦可作为轻量级 Web 应用服务器。其核心组件包括:
- Catalina:Servlet 容器,负责执行 Servlet
- Coyote:HTTP 连接器(微型 Web 服务器),将请求转发至 Catalina,处理网络通信(默认端口 8080)
- Jasper:JSP 编译器,负责编译 JSP 文件
技术细节总结:
- Servlet 以 WAR(Web Archive) 文件部署(类比 JAR 的 Java 归档格式)
- Tomcat 默认端口为
8080,配置文件路径为/etc/tomcat/tomcat.conf
持续集成工具与 Java 环境依赖
Jenkins 是流行的持续集成(CI)工具,用于自动化测试、编译和部署。其特性包括:
- 基于 Java 开发,需 JRE(Java Runtime Environment) 或 JDK(Java Development Kit) 支持。
- 可与版本管理工具(Git/SVN)及构建工具(Maven/Gradle)集成。
- 部署方式:
- 独立运行(内置 Winstone Servlet 容器)。
- Tomcat 托管(通用方案,本指南采用)。
Java 环境配置逻辑:
- Tomcat 安装依赖 JRE,但开发需 JDK。
- 通过 OpenJDK 提供免费 Java 环境(Oracle JDK 需授权)。
- 验证命令:
# 检查 Java 版本 java -version # 检查编译器(JDK 安装后生效) javac -version
Tomcat 安装与配置实践
步骤 1:安装 Tomcat 及依赖
# 安装 Tomcat(自动附带 JRE)
yum install tomcat # 验证安装
tomcat version # 输出示例:Tomcat 7.0.76 / JVM 1.8.0_232 安装管理组件及文档
yum install tomcat-webapps tomcat-admin-webapps tomcat-docs-webapp
步骤 2:配置 Java 开发环境(可选)
若需 JDK(开发环境),显式安装 OpenJDK:
安装 OpenJDK 开发套件
sudo yum install java-1.8.0-openjdk-devel.x86_64 验证环境
java -version # 检查 JRE
javac -version # 检查 JDK 编译器
步骤 3:启动服务与端口配置
# 启动 Tomcat
systemctl start tomcat # 设置开机自启
systemctl enable tomcat# 验证状态:Active (running)
systemctl status tomcat# 开放防火墙端口
firewall-cmd --zone=public --add-port=8080/tcp --permanent
firewall-cmd --reload# 验证端口开放
firewall-cmd --list-ports # 应包含 8080/tcp
关键配置:
- 主配置文件:
/etc/tomcat/tomcat.conf(可设置JAVA_HOME)。 - 端口修改:编辑
/etc/tomcat/server.xml,定位<Connector port="8080">。
访问 Tomcat 控制台
通过 http://<服务器IP>:8080 访问。若页面异常:
- 未安装
tomcat-webapps时,默认页面缺失 - 未开放端口时,连接被防火墙阻断
步骤 3:用户认证与管理
- 编辑用户配置文件
/etc/tomcat/tomcat-users.xml:<!-- 取消注释并修改角色/密码 --> <tomcat-users><role rolename="admin-gui,manager-gui"/> <user username="admin" password="123456" roles="admin-gui,manager-gui"/> </tomcat-users>- 注意:
manager-gui角色授权访问 Manager App;admin-gui授权访问 Host Manager
- 注意:
- 重启服务生效:
systemctl restart tomcat - 访问
http://<IP>:8080/manager/html,使用账户admin/123456登录
验证与运维管理
- 访问控制台:
- 主页:
http://<服务器IP>:8080 - 管理页:
http://<服务器IP>:8080/manager/html
- 主页:
- 应用管理:
- 应用部署目录:
/var/lib/tomcat/webapps/(示例:docs,examples) - 通过管理页启停应用(如停止
sample服务将返回 HTTP 404)
- 应用部署目录:
- 操作示例:
- 启动/停止应用:通过 Manager App 控制状态
- 部署新应用:上传 WAR 文件至
webapps目录
补充代码示例:Servlet 实现
若需通过 NestJS 应用调用 Tomcat 服务,使用 axios 发起 HTTP 请求:
import { Controller, Get } from '@nestjs/common';
import axios from 'axios';@Controller('tomcat')
export class TomcatController {private readonly tomcatBaseUrl = 'http://localhost:8080';@Get('apps')async listDeployedApps() {try {const response = await axios.get(`${this.tomcatBaseUrl}/manager/text/list`, {auth: { username: 'admin', password: '123456' }, // Tomcat 管理员凭据params: { path: '/' },});return response.data; // 返回部署的应用列表 } catch (error) {throw new Error(`Tomcat request failed: ${error.message}`);}}
}
代码说明:
- 通过
/manager/text/list接口获取 Tomcat 应用列表(需manager-gui角色) - 使用
axios处理 HTTP 基础认证(Basic Auth) - 异常处理确保请求健壮性
关键总结
- Servlet 容器:Tomcat 是运行 Java Web 应用的核心环境,通过 Catalina 管理 Servlet 生命周期
- 环境依赖:Java 应用需 JRE/JDK,Tomcat 安装自动部署 OpenJDK JRE
- 访问控制:防火墙必须开放 8080 端口;用户权限通过
tomcat-users.xml配置 - 应用管理:Manager App 提供 Web 界面管理应用状态(启动/停止/部署)
- 持续集成:Jenkins 作为 Servlet 应用,可独立运行或托管于 Tomcat
技术细节总结
| 关键术语 | 说明 |
|---|---|
| Servlet | Java Web应用核心组件,动态处理HTTP请求/响应 |
| WAR文件 | Web应用归档格式(类比JAR),包含Servlet、JSP、配置文件等 |
| Tomcat | Apache轻量级Servlet容器,支持JSP编译、HTTP连接管理 |
| CI/CD | Jenkins实现持续集成/持续部署,自动化测试、编译与发布 |
注:
- Jenkins部署补充:若需在Tomcat中部署Jenkins,需下载
jenkins.war并放入/var/lib/tomcat/webapps/,通过http://<IP>:8080/jenkins访问 - 安全建议:生产环境需配置HTTPS,避免密码明文存储(如使用
tomcat-users.xml加密)
