使用源码编译安装 Tomcat

安装

本文将详细介绍如何在 Linux 系统上通过源码编译安装 Apache Tomcat,包括直接下载 Java 二进制包并设置 Java 环境变量的全过程。

一、环境准备

1. 系统要求

  • 操作系统:CentOS 7/8、Ubuntu 18.04/20.04 等主流 Linux 发行版
  • 网络连接:需要访问互联网以下载源码和依赖包
  • 权限要求 :具备 root 或具有 sudo 权限的用户

2. 基础工具安装

在开始之前,确保安装了必要的工具。

CentOS/RHEL 系统
bash 复制代码
sudo yum update -y
sudo yum install -y wget tar gzip unzip
Ubuntu/Debian 系统
bash 复制代码
sudo apt update
sudo apt install -y wget tar gzip unzip

二、安装 Java 环境

1. 下载 Java 二进制包

您可以从 OpenJDK 或 Oracle 官方网站下载 Java 二进制包。这里以 OpenJDK 11 为例。

bash 复制代码
# 创建目录以存放 Java 包
mkdir ~/java
cd ~/java

# 下载 OpenJDK 11 二进制包
wget https://download.java.net/java/GA/jdk11/13/GPL/openjdk-11.0.2_linux-x64_bin.tar.gz

2. 解压 Java 包

bash 复制代码
# 解压到 /usr/local/java 目录
sudo mkdir -p /usr/local/java
sudo tar -zxvf openjdk-11.0.2_linux-x64_bin.tar.gz -C /usr/local/java

# 重命名目录
sudo mv /usr/local/java/jdk-11.0.2 /usr/local/java/jdk11

3. 配置环境变量

为了使系统识别 Java,需要设置 JAVA_HOME 和更新 PATH

bash 复制代码
# 编辑 /etc/profile 或创建新的环境变量文件
sudo vim /etc/profile.d/java.sh

添加以下内容:

bash 复制代码
export JAVA_HOME=/usr/local/java/jdk11
export PATH=$PATH:$JAVA_HOME/bin

保存后,使配置生效:

bash 复制代码
source /etc/profile.d/java.sh

4. 验证 Java 安装

bash 复制代码
java -version

输出应类似于:

复制代码
openjdk version "11.0.2" 2019-01-15
OpenJDK Runtime Environment (build 11.0.2+9)
OpenJDK 64-Bit Server VM (build 11.0.2+9, mixed mode)

三、安装 Apache Ant

Tomcat 的源码编译需要 Apache Ant 工具。

1. 安装 Ant

CentOS/RHEL 系统
bash 复制代码
sudo yum install -y ant
Ubuntu/Debian 系统
bash 复制代码
sudo apt install -y ant

2. 验证 Ant 安装

bash 复制代码
ant -version

输出类似于:

复制代码
Apache Ant(TM) version 1.10.5 compiled on July 10 2018

四、下载和编译 Tomcat 源码

1. 下载 Tomcat 源码

bash 复制代码
mkdir ~/tomcat-source
cd ~/tomcat-source

# 下载 Tomcat 9.0.72 源码
wget https://downloads.apache.org/tomcat/tomcat-9/v9.0.72/src/apache-tomcat-9.0.72-src.tar.gz

# 解压
tar -zxvf apache-tomcat-9.0.72-src.tar.gz
cd apache-tomcat-9.0.72-src

2. 编译 Tomcat 源码

bash 复制代码
# 使用 Ant 编译
ant deploy

编译过程可能需要几分钟,成功后,编译结果位于 output/build 目录。

五、安装和配置 Tomcat

1. 移动编译好的 Tomcat

bash 复制代码
sudo mv output/build /usr/local/tomcat9

2. 创建 Tomcat 用户

bash 复制代码
# 创建用户组和用户
sudo groupadd tomcat
sudo useradd -s /bin/false -g tomcat -d /usr/local/tomcat9 tomcat

# 修改目录权限
sudo chown -R tomcat:tomcat /usr/local/tomcat9

3. 设置环境变量

bash 复制代码
# 编辑 /etc/profile.d/tomcat.sh
sudo vim /etc/profile.d/tomcat.sh

添加以下内容:

bash 复制代码
export CATALINA_HOME=/usr/local/tomcat9
export PATH=$PATH:$CATALINA_HOME/bin

使配置生效:

bash 复制代码
source /etc/profile.d/tomcat.sh

六、启动 Tomcat 服务

1. 手动启动

tomcat 用户身份启动服务:

bash 复制代码
sudo su - tomcat

# 启动 Tomcat
$CATALINA_HOME/bin/startup.sh

2. 验证服务状态

bash 复制代码
ps -ef | grep tomcat

3. 访问测试

在浏览器中访问:

复制代码
http://<服务器IP>:8080

如果看到 Tomcat 的默认页面,表示安装成功。

七、配置 Tomcat 为系统服务

1. 创建 Systemd 服务文件

bash 复制代码
sudo vim /etc/systemd/system/tomcat.service

添加以下内容:

ini 复制代码
[Unit]
Description=Apache Tomcat Web Application Container
After=network.target

[Service]
Type=forking

User=tomcat
Group=tomcat

Environment=JAVA_HOME=/usr/local/java/jdk11
Environment=CATALINA_PID=/usr/local/tomcat9/temp/tomcat.pid
Environment=CATALINA_HOME=/usr/local/tomcat9
Environment=CATALINA_BASE=/usr/local/tomcat9
Environment='CATALINA_OPTS=-Xms512M -Xmx1024M -server -XX:+UseG1GC'

ExecStart=/usr/local/tomcat9/bin/startup.sh
ExecStop=/usr/local/tomcat9/bin/shutdown.sh

[Install]
WantedBy=multi-user.target

2. 重新加载 Systemd 配置

bash 复制代码
sudo systemctl daemon-reload

3. 管理 Tomcat 服务

bash 复制代码
# 启动服务
sudo systemctl start tomcat

# 查看状态
sudo systemctl status tomcat

# 设置开机自启
sudo systemctl enable tomcat

八、优化配置

1. 调整 JVM 参数

编辑 $CATALINA_HOME/bin/setenv.sh

bash 复制代码
sudo vim $CATALINA_HOME/bin/setenv.sh

添加:

bash 复制代码
CATALINA_OPTS="-Xms1024M -Xmx2048M -server -XX:+UseG1GC"

2. 配置字符编码

编辑 server.xml

bash 复制代码
sudo vim $CATALINA_HOME/conf/server.xml

<Connector> 标签中添加 URIEncoding="UTF-8"

xml 复制代码
<Connector port="8080" protocol="HTTP/1.1"
           connectionTimeout="20000"
           redirectPort="8443"
           URIEncoding="UTF-8" />

3. 配置防火墙

CentOS 7/8 使用 firewalld
bash 复制代码
sudo firewall-cmd --permanent --add-port=8080/tcp
sudo firewall-cmd --reload
Ubuntu 使用 ufw
bash 复制代码
sudo ufw allow 8080/tcp
sudo ufw reload

九、部署 Web 应用

1. 自动部署

.war 包复制到 $CATALINA_HOME/webapps 目录,Tomcat 会自动解压和部署。

2. 手动部署

启用 Tomcat 管理后台,编辑 tomcat-users.xml

bash 复制代码
sudo vim $CATALINA_HOME/conf/tomcat-users.xml

添加用户和角色:

xml 复制代码
<role rolename="manager-gui"/>
<user username="admin" password="your_password" roles="manager-gui"/>

十、常见问题解决

1. 无法访问管理后台

解决方法:

  • 确保已在 tomcat-users.xml 中配置了用户和角色
  • 检查防火墙设置,确保端口未被阻塞

2. 服务无法启动或立即停止

解决方法:

  • 检查日志文件 $CATALINA_HOME/logs/catalina.out,查看具体错误信息
  • 确认 JAVA_HOMECATALINA_HOME 设置正确
  • 检查端口是否被占用
相关推荐
jimy12 小时前
安卓里运行Linux
linux·运维·服务器
爱凤的小光3 小时前
Linux清理磁盘技巧---个人笔记
linux·运维
耗同学一米八4 小时前
2026年河北省职业院校技能大赛中职组“网络建设与运维”赛项答案解析 1.系统安装
linux·服务器·centos
知星小度S5 小时前
系统核心解析:深入文件系统底层机制——Ext系列探秘:从磁盘结构到挂载链接的全链路解析
linux
2401_890443025 小时前
Linux 基础IO
linux·c语言
智慧地球(AI·Earth)6 小时前
在Linux上使用Claude Code 并使用本地VS Code SSH远程访问的完整指南
linux·ssh·ai编程
老王熬夜敲代码7 小时前
解决IP不够用的问题
linux·网络·笔记
zly35007 小时前
linux查看正在运行的nginx的当前工作目录(webroot)
linux·运维·nginx
QT 小鲜肉7 小时前
【Linux命令大全】001.文件管理之file命令(实操篇)
linux·运维·前端·网络·chrome·笔记
问道飞鱼8 小时前
【Linux知识】Linux 虚拟机磁盘扩缩容操作指南(按文件系统分类)
linux·运维·服务器·磁盘扩缩容