Tomcat 安装

一、Tomcat 下载

官网:Apache Tomcat® - Welcome!

1.1.下载安装包

下载安装包:

bash 复制代码
wget https://dlcdn.apache.org/tomcat/tomcat-9/v9.0.102/bin/apache-tomcat-9.0.102.tar.gz

安装 javajdk。

bash 复制代码
yum install java-1.8.0-openjdk.x86_64 -y

/etc/alternatives/jre_openjdk/ 是 OpenJDK JRE 的符号链接管理目录,通过 update-alternatives 实现版本切换。其内容指向实际安装的 JRE 路径,便于系统统一管理 Java 环境。

/etc/alternatives/jre_openjdk/ 目录作用

  • alternatives 系统:Linux 系统通过 update-alternatives 工具管理多个可替换的软件版本,例如 Java、Python 等。

  • JRE 指向 :jre_openjdk 条目指向当前系统默认的 OpenJDK JRE(Java Runtime Environment)。

  • 符号链接管理:该目录下的文件实际是符号链接,指向具体的 JRE 安装路径。

bash 复制代码
/etc/alternatives/jre_openjdk/
├── bin/                # 符号链接到JRE的二进制目录(如java、javac等)
├── include/            # 符号链接到JRE的头文件
├── lib/                # 符号链接到JRE的核心库(rt.jar等)
├── man/                # 符号链接到JRE的手册页
└── ...其他资源文件...

1.2.解压

因为 tomcat 直接可用,所以直接解压到相应的目录。

bash 复制代码
tar xzf apache-tomcat-9.0.102.tar.gz -C /usr/local

1.3.启动

进入目录,创建软连接,便于操作,启动服务。

bash 复制代码
cd /usr/local/
ln -s apache-tomcat-9.0.102 tomcat  # 创建软连接
cd /usr/local/tomcat/bin/           # 进入二进制目录
bash startup.sh                     # 运行启动脚本,启动服务

浏览器可访问到 Tomcat,安装成功。


二、配置 Tomcat 启动脚本

在 /usr/local/tomcat/conf/tomcat.conf 文件中设置 JAVA_HOME=/etc/alternatives/jre_openjdk/,其作用和背后的原因主要有以下几点:

作用

  • 指定 Java 运行环境路径:JAVA_HOME 是一个环境变量,Tomcat 作为 Java 应用服务器,需要知道 Java 运行时环境(JRE)或者 Java 开发工具包(JDK)的安装路径。通过设置 JAVA_HOME,Tomcat 可以找到 Java 解释器(java 命令)以及相关的类库,从而能够正常启动和运行基于 Java 编写的 Web 应用程序。

  • 确保一致性:当在系统中存在多个 Java 版本时,明确指定 JAVA_HOME 可以确保 Tomcat 始终使用预期的 Java 版本来运行,避免因默认 Java 版本的改变而导致的兼容性问题或运行错误。

选择 /etc/alternatives/jre_openjdk/ 路径的原因

  • 系统级 Java 版本管理:在许多 Linux 系统中,/etc/alternatives 目录是 update-alternatives 工具的一部分,这个工具用于管理系统中可替换的软件版本。/etc/alternatives/jre_openjdk/ 通常是一个符号链接,它指向系统当前默认的 OpenJDK JRE 安装目录。通过使用这个符号链接,即使系统中 Java 版本发生了更新或切换,/etc/alternatives/jre_openjdk/ 会自动更新到新的默认 Java 版本路径,从而保证 Tomcat 能够使用最新的默认 Java 环境,而无需手动修改 JAVA_HOME 的值。

  • 灵活性和兼容性:使用 /etc/alternatives/jre_openjdk/ 路径可以让系统管理员方便地在不同的 Java 版本之间进行切换,而不会影响 Tomcat 的配置。例如,如果需要将系统的 Java 版本从 OpenJDK 11 升级到 OpenJDK 17,只需要使用 update-alternatives 工具更新默认的 Java 版本,/etc/alternatives/jre_openjdk/ 会自动指向新的 Java 安装目录,Tomcat 可以继续正常运行。

bash 复制代码
vim /usr/local/tomcat/conf/tomcat.conf    # 创建文件写入以下内容
​
JAVA_HOME=/etc/alternatives/jre_openjdk/

2.1.封装 Tomcat 启动和停止操作

作用

  1. 封装 Tomcat 启动和停止操作
  • /usr/bin/tomcat 文件实际上是一个简单的 shell 脚本,它的主要作用是将 Tomcat 的启动和停止操作进行封装。脚本中使用了 case 语句来根据用户传入的第一个参数(即 $1)来决定执行相应的操作:

    • 当传入的参数是 start 时,脚本会执行 /usr/local/tomcat/bin/startup.sh,这是 Tomcat 自带的启动脚本,用于启动 Tomcat 服务器。

    • 当传入的参数是 stop 时,脚本会执行 /usr/local/tomcat/bin/shutdown.sh,这是 Tomcat 自带的停止脚本,用于停止 Tomcat 服务器。

  1. 提供统一的操作接口
  • 通过这个脚本,用户可以使用更简洁、统一的命令来启动和停止 Tomcat。例如,用户可以直接在命令行中输入 tomcat start 来启动 Tomcat,输入 tomcat stop 来停止 Tomcat,而不需要每次都记住并输入完整的 startup.sh 或 shutdown.sh 脚本路径。

为什么要提前编辑此文件

  • 1. 方便 systemd 服务管理

    • 在编写 systemd 服务单元文件 /lib/systemd/system/tomcat.service 时,systemd 服务单元文件需要指定服务的启动和停止命令。如果不提前封装这个脚本,systemd 服务单元文件中需要直接指定 /usr/local/tomcat/bin/startup.sh 和 /usr/local/tomcat/bin/shutdown.sh 作为启动和停止命令,这样会使 systemd 服务单元文件的配置相对复杂。而使用封装好的 /usr/bin/tomcat 脚本,systemd 服务单元文件可以更简洁地指定启动和停止命令。
  • 2. 便于后续维护和扩展

    • 如果后续需要对 Tomcat 的启动或停止操作进行修改,例如在启动前添加一些环境变量的设置,或者在停止后进行一些清理工作,只需要修改 /usr/bin/tomcat 脚本即可,而不需要修改 systemd 服务单元文件。这样可以提高代码的可维护性和可扩展性。
  • 3. 符合脚本封装和模块化的思想

    • 将相关的操作封装到一个脚本中,符合编程中模块化和封装的思想,使代码结构更加清晰,易于管理。同时,也方便在不同的场景下复用这个脚本,例如在自动化部署脚本中使用。
bash 复制代码
vim /usr/bin/tomcat
​
#!/bin/bash
case $1 in
  start)
  /usr/local/tomcat/bin/startup.sh
  ;;
  stop)
  /usr/local/tomcat/bin/shutdown.sh
esac

给脚本设置可执行权限。

bash 复制代码
chmod +x /usr/bin/tomcat 

2.2.编写系统服务脚本

编写系统服务脚本。

bash 复制代码
vim /lib/systemd/system/tomcat.service
​
[Unit]
Description=Tomcat
After=syslog.target network.target
​
[Service]
Type=forking
EnvironmentFile=/usr/local/tomcat/conf/tomcat.conf
ExecStart=/usr/bin/tomcat start
ExecStop=/usr/bin/tomcat stop
PrivateTmp=true
User=tomcat
Group=tomcat
​
[Install]
WantedBy=multi-user.target

创建系统用户。

bash 复制代码
useradd -s /sbin/nologin -M tomcat

修改目录文件权限。

bash 复制代码
chown -R tomcat.tomcat /usr/local/tomcat/

重新加载 systemd 服务管理器配置。

bash 复制代码
systemctl daemon-reload

三、启动服务

bash 复制代码
systemctl start tomcat.service

查看服务状态。

浏览器可访问。

相关推荐
紧跟先前的步伐1 小时前
Go AI Agent 实战 03|Token、上下文窗口与模型调用成本
java·人工智能·golang
const_qiu2 小时前
第四章 00:开篇 —— 从「会聊天」到「记得住、会干活、能协作」
java·开发语言·人工智能·python
Wang's Blog2 小时前
Java 项目实战: 交友项目 - 个人资料管理的更新接口实现与坑
java·开发语言·交友
Promising_GEO2 小时前
GEE实战02期:从卫星波段开始:利用 Sentinel-2 自己计算 NDVI
java·sentinel·遥感·空间分析
大文说跨境2 小时前
亚马逊多账号管理浏览器怎么选?云登/紫鸟/AdsPower 对比
java·前端·自动化
CoderYanger2 小时前
Java EE 进阶:4.Spring Web MVC 入门(第一弹)
java·开发语言·前端·spring·面试·java-ee·mvc
顽疲2 小时前
java springboot vue 养老系统源码详解:请假 care_leave 销假与床位停费日扣实践
java·vue.js·spring boot
XIAEE3 小时前
一个即时通讯项目是怎么长出来的:(Spring Boot 3 + Vue 3 微前端 + 悟空 IM + LiveKit)
java·spring
n87653 小时前
Playwright Java WEB UI 自动化实现框架与逻辑
java·前端·ui
Java_AI工程师3 小时前
Spring4 / SpringBoot1.x 老项目想接入 AI?不用升级框架!3 套无痛落地方案
java·人工智能·spring boot