使用源码编译安装 Tomcat
安装
本文将详细介绍如何在 Linux 系统上通过源码编译安装 Apache Tomcat,包括直接下载 Java 二进制包并设置 Java 环境变量的全过程。
一、环境准备
1. 系统要求
- 操作系统:CentOS 7/8、Ubuntu 18.04/20.04 等主流 Linux 发行版
- 网络连接:需要访问互联网以下载源码和依赖包
- 权限要求:具备
root
或具有sudo
权限的用户
2. 基础工具安装
在开始之前,确保安装了必要的工具。
CentOS/RHEL 系统
sudo yum update -y
sudo yum install -y wget tar gzip unzip
Ubuntu/Debian 系统
sudo apt update
sudo apt install -y wget tar gzip unzip
二、安装 Java 环境
1. 下载 Java 二进制包
您可以从 OpenJDK 或 Oracle 官方网站下载 Java 二进制包。这里以 OpenJDK 11 为例。
# 创建目录以存放 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 包
# 解压到 /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
。
# 编辑 /etc/profile 或创建新的环境变量文件
sudo vim /etc/profile.d/java.sh
添加以下内容:
export JAVA_HOME=/usr/local/java/jdk11
export PATH=$PATH:$JAVA_HOME/bin
保存后,使配置生效:
source /etc/profile.d/java.sh
4. 验证 Java 安装
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 系统
sudo yum install -y ant
Ubuntu/Debian 系统
sudo apt install -y ant
2. 验证 Ant 安装
ant -version
输出类似于:
Apache Ant(TM) version 1.10.5 compiled on July 10 2018
四、下载和编译 Tomcat 源码
1. 下载 Tomcat 源码
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 源码
# 使用 Ant 编译
ant deploy
编译过程可能需要几分钟,成功后,编译结果位于 output/build
目录。
五、安装和配置 Tomcat
1. 移动编译好的 Tomcat
sudo mv output/build /usr/local/tomcat9
2. 创建 Tomcat 用户
# 创建用户组和用户
sudo groupadd tomcat
sudo useradd -s /bin/false -g tomcat -d /usr/local/tomcat9 tomcat
# 修改目录权限
sudo chown -R tomcat:tomcat /usr/local/tomcat9
3. 设置环境变量
# 编辑 /etc/profile.d/tomcat.sh
sudo vim /etc/profile.d/tomcat.sh
添加以下内容:
export CATALINA_HOME=/usr/local/tomcat9
export PATH=$PATH:$CATALINA_HOME/bin
使配置生效:
source /etc/profile.d/tomcat.sh
六、启动 Tomcat 服务
1. 手动启动
以 tomcat
用户身份启动服务:
sudo su - tomcat
# 启动 Tomcat
$CATALINA_HOME/bin/startup.sh
2. 验证服务状态
ps -ef | grep tomcat
3. 访问测试
在浏览器中访问:
http://<服务器IP>:8080
如果看到 Tomcat 的默认页面,表示安装成功。
七、配置 Tomcat 为系统服务
1. 创建 Systemd 服务文件
sudo vim /etc/systemd/system/tomcat.service
添加以下内容:
[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 配置
sudo systemctl daemon-reload
3. 管理 Tomcat 服务
# 启动服务
sudo systemctl start tomcat
# 查看状态
sudo systemctl status tomcat
# 设置开机自启
sudo systemctl enable tomcat
八、优化配置
1. 调整 JVM 参数
编辑 $CATALINA_HOME/bin/setenv.sh
:
sudo vim $CATALINA_HOME/bin/setenv.sh
添加:
CATALINA_OPTS="-Xms1024M -Xmx2048M -server -XX:+UseG1GC"
2. 配置字符编码
编辑 server.xml
:
sudo vim $CATALINA_HOME/conf/server.xml
在 <Connector>
标签中添加 URIEncoding="UTF-8"
:
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443"
URIEncoding="UTF-8" />
3. 配置防火墙
CentOS 7/8 使用 firewalld
sudo firewall-cmd --permanent --add-port=8080/tcp
sudo firewall-cmd --reload
Ubuntu 使用 ufw
sudo ufw allow 8080/tcp
sudo ufw reload
九、部署 Web 应用
1. 自动部署
将 .war
包复制到 $CATALINA_HOME/webapps
目录,Tomcat 会自动解压和部署。
2. 手动部署
启用 Tomcat 管理后台,编辑 tomcat-users.xml
:
sudo vim $CATALINA_HOME/conf/tomcat-users.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_HOME
和CATALINA_HOME
设置正确 - 检查端口是否被占用