使用源码编译安装 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 设置正确
  • 检查端口是否被占用
相关推荐
尼克_张17 分钟前
tomcat配合geoserver安装及使用
java·tomcat
醇氧1 小时前
ab (Apache Bench)的使用
linux·学习·centos·apache
moneyxjj2 小时前
Linux各种解压命令汇总
linux·运维·服务器
白白♛~2 小时前
网络管理之---3种网络模式配置
linux·服务器·网络
GOTXX2 小时前
NAT、代理服务与内网穿透技术全解析
linux·网络·人工智能·计算机网络·智能路由器
陈yanyu3 小时前
Linux - 弯路系列3:安装和编译libvirt-4.5.0及虚拟网卡virbr0(virbr0-nic)创建
linux·运维·服务器
feng68_3 小时前
Linux编辑/etc/fstab文件不当,不使用快照;进入救援模式
linux
码农研究僧3 小时前
详细分析ip addr show 查看网络配置的命令
linux·tcp/ip·ip addr show
码狂☆3 小时前
ubuntu连接orangepi-zero-2w桌面的几种方法
linux·ubuntu