当前位置: 首页 > news >正文

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 文件

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:用户认证与管理

  1. 编辑用户配置文件 /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
  2. 重启服务生效:
    systemctl restart tomcat
    
  3. 访问 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)
  • 异常处理确保请求健壮性

关键总结

  1. Servlet 容器:Tomcat 是运行 Java Web 应用的核心环境,通过 Catalina 管理 Servlet 生命周期
  2. 环境依赖:Java 应用需 JRE/JDK,Tomcat 安装自动部署 OpenJDK JRE
  3. 访问控制:防火墙必须开放 8080 端口;用户权限通过 tomcat-users.xml 配置
  4. 应用管理:Manager App 提供 Web 界面管理应用状态(启动/停止/部署)
  5. 持续集成:Jenkins 作为 Servlet 应用,可独立运行或托管于 Tomcat

技术细节总结

关键术语说明
ServletJava Web应用核心组件,动态处理HTTP请求/响应
WAR文件Web应用归档格式(类比JAR),包含Servlet、JSP、配置文件等
TomcatApache轻量级Servlet容器,支持JSP编译、HTTP连接管理
CI/CDJenkins实现持续集成/持续部署,自动化测试、编译与发布

注:

  • Jenkins部署补充:若需在Tomcat中部署Jenkins,需下载 jenkins.war 并放入 /var/lib/tomcat/webapps/,通过 http://<IP>:8080/jenkins 访问
  • 安全建议:生产环境需配置HTTPS,避免密码明文存储(如使用 tomcat-users.xml 加密)
http://www.dtcms.com/a/539888.html

相关文章:

  • Linux小课堂: Tomcat容器中部署Jenkins的完整流程与关键技术要点
  • 本地部署消息中间件 RabbitMQ 并实现外网访问 (Linux 版本)
  • Kafka在Spring Boot生态中的浅析与应用
  • 南京网站建设与维护英文购物网站模板下载
  • Linux网络编程:进程间关系和守护进程
  • 在 Ubuntu 上使用 Docker 部署思源笔记:一份详尽的实践教程以及常见错误汇总
  • 劳务网站有做吗公众号文章采集wordpress
  • Linux中,vi(vim)编辑器大部分快捷键
  • ADUM5201CRWZ-RL双通道数字隔离器 ADI亚德诺半导体 集成电路IC芯片解析
  • Ubuntu texlive安装后无法编译中文论文解决方法
  • UniversalSmartStateFilter:统一状态过滤器的架构设计与实现
  • 四旋翼机器人手臂路径规划
  • 5G专网平台客户案例分享:基于可编程5G的智慧电网巡检原型系统
  • 做网站现在什么尺寸合适深圳刚刚突然宣布
  • 基于深度学习与OCR研发的报关单识别接口技术解析
  • Power Apps:预览SharePoint文档库的PDF文档
  • ElasticSearch-基础
  • 常州市网站制作娶妻为什么不娶外贸女
  • MySQL 窗口函数全解析:NTILE() 函数深度指南
  • 【大模型与智能体论文】REACT:协同语言模型中的推理与行动
  • 攻克兼容、安全、零中断的“不可能三角”:电科金仓异构多活架构交出集团化医院信创最佳答卷!
  • Duckdb rusty_sheet插件使用心得
  • PyTorch torch.ones()张量创建详解
  • 菜鸟教程网站建设lazy load wordpress
  • 湖南 中小企业 网站建设百度做网站推广
  • 基于小波变换的图像阈值去噪MATLAB实现
  • 网站建设怎么收费网站优化有哪些类型
  • GitHub 与 Gitee 多平台 SSH Key 配置指南
  • 中原郑州网站建设中国建设银行信用卡
  • c++学习学习学习