在 Ubuntu 服務器部署 Java Web 應用時,Tomcat 是最主流的 Servlet 容器選擇。本文記錄從 JDK 安裝、Tomcat 部署、環境變量配置、服務管理到開機自啟的完整操作步驟,基於 Ubuntu 20.04+ LTS 版本驗證。
# 更新包索引
sudo apt update
# 安裝 OpenJDK 11/17/21 LTS 版本
sudo apt install openjdk-17-jdk -y
# 驗證安裝
java -version
# 輸出示例:
# openjdk version "17.0.8" 2023-07-18
# OpenJDK Runtime Environment (build 17.0.8+7-Ubuntu-1ubuntu120.04)
# OpenJDK 64-Bit Server VM (build 17.0.8+7-Ubuntu-1ubuntu120.04, mixed mode, sharing)
# 查找 JDK 安裝路徑
readlink -f $(which java)
# 輸出類似:/usr/lib/jvm/java-17-openjdk-amd64/bin/java
# JAVA_HOME 為:/usr/lib/jvm/java-17-openjdk-amd64
# 永久生效:編輯 /etc/profile
sudo vim /etc/profile
# 文件末尾添加
export JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
# 立即生效
source /etc/profile
# 驗證
echo $JAVA_HOME
# 切換到 /opt 目錄
cd /opt
# 下載 Tomcat 9/10(從官網獲取最新鏈接)
sudo wget https://dlcdn.apache.org/tomcat/tomcat-10/v10.1.18/bin/apache-tomcat-10.1.18.tar.gz
# 解壓
sudo tar -xzf apache-tomcat-10.1.18.tar.gz
# 重命名便於管理
sudo mv apache-tomcat-10.1.18 tomcat10
# 創建專用用戶(安全最佳實踐)
sudo useradd -r -m -U -d /opt/tomcat10 -s /bin/false tomcat
sudo chown -R tomcat:tomcat /opt/tomcat10
sudo chmod +x /opt/tomcat10/bin/*.sh
# 編輯 /etc/profile 追加
sudo vim /etc/profile
export CATALINA_HOME=/opt/tomcat10
export CATALINA_BASE=/opt/tomcat10
export PATH=$PATH:$CATALINA_HOME/bin
source /etc/profile
# 1. 修改端口(避免衝突 8080)
sudo vim /opt/tomcat10/conf/server.xml
# 修改 為 8080 或其他
# 2. 管理界面訪問授權(可選)
sudo vim /opt/tomcat10/conf/tomcat-users.xml
# 添加用戶角色
#
#
#
# 3. 允許遠程訪問管理界面(生產環境建議關閉或配置 IP 白名單)
sudo vim /opt/tomcat10/webapps/manager/META-INF/context.xml
# 註釋掉 Valve 限制或添加 allow 規則
sudo vim /etc/systemd/system/tomcat.service
文件內容:
[Unit]
Description=Apache Tomcat 10 Servlet Container
After=network.target
[Service]
Type=forking
User=tomcat
Group=tomcat
Environment=JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64
Environment=CATALINA_HOME=/opt/tomcat10
Environment=CATALINA_BASE=/opt/tomcat10
Environment=CATALINA_PID=/opt/tomcat10/temp/tomcat.pid
Environment=CATALINA_OPTS=-Xms512M -Xmx1024M -server -XX:+UseG1GC
ExecStart=/opt/tomcat10/bin/startup.sh
ExecStop=/opt/tomcat10/bin/shutdown.sh
Restart=on-failure
RestartSec=10
[Install]
WantedBy=multi-user.target
# 重載 systemd
sudo systemctl daemon-reload
# 啟動並設置開機自啟
sudo systemctl start tomcat
sudo systemctl enable tomcat
# 常用操作
sudo systemctl status tomcat # 查看狀態
sudo systemctl stop tomcat # 停止
sudo systemctl restart tomcat # 重啟
sudo journalctl -u tomcat -f # 查看實時日誌
https://your-server-ip:8080https://ip:8080/manager/html| 現象 | 可能原因 | 解決方案 |
|---|---|---|
| 啟動失敗 | 端口被佔用 | netstat -tlnp | grep 8080 檢查並殺死進程或改端口 |
| 403 禁止訪問管理頁 | IP 限制 | 修改 context.xml 允許訪問或配置反向代理 |
| 中文亂碼 | 編碼未統一 | server.xml Connector 添加 URIEncoding="UTF-8" |
| 內存溢出 | 堆內存不足 | 調整 CATALINA_OPTS -Xmx 參數 |
| 權限錯誤 | 文件屬主問題 | chown -R tomcat:tomcat /opt/tomcat10 |
-Xms -Xmx、啟用 G1GC、配置 GC 日誌context.xml 配置 JNDI 數據源,避免應用層管理連接logrotate 管理 catalina.out 防止磁盤撐爆
# 一鍵啟動生產級容器
docker run -d \
--name tomcat10 \
--restart unless-stopped \
-p 8080:8080 \
-v /opt/tomcat10/webapps:/usr/local/tomcat/webapps \
-v /opt/tomcat10/logs:/usr/local/tomcat/logs \
-v /opt/tomcat10/conf:/usr/local/tomcat/conf \
-e JAVA_OPTS="-Xms512m -Xmx1024m" \
tomcat:10.1-jdk17
掌握原生部署流程有助於理解容器化背後的原理,生產環境強烈建議使用 Docker 或 Kubernetes 編排管理,實現不可變基礎設施與藍綠部署。