Windows XP Windows 7 Windows 2003 Windows Vista Windows 綜合教學 Linux 系統教學
Windows 10 Windows 8 Windows 2008 Windows NT Windows Server 電腦軟體教學

Linux Tomcat 一鍵維護腳本:停止、清理、部署、啟動全自動化

編輯:Linux 系統常見問題解答

腳本適用場景

  • Tomcat 7/8/9 手動部署 WAR 檔流程標準化
  • 需頻繁重新部署、清理日誌與暫存檔的開發/測試環境

腳本內容 tomcat_redeploy.sh

#!/bin/bash
# ===== 變數區 =====
WEBAPP_DIR="/usr/share/tomcat7/webapps"
WAR_FILE="ROOT.war"
BACKUP_WAR="ROOT.war.bak.$(date +%F_%H%M%S)"
TOMCAT_BIN="/usr/share/tomcat7/bin"
LOG_FILE="${TOMCAT_BIN}/../logs/catalina.out"

# ===== 1. 優雅關閉 Tomcat =====
echo "Stopping Tomcat..."
"${TOMCAT_BIN}/shutdown.sh"
sleep 5

# 強制終止殘留進程
PIDS=$(ps aux | grep '[o]rg.apache.catalina.startup.Bootstrap' | awk '{print $2}')
if [ -n "$PIDS" ]; then
    echo "Force killing residual PIDs: $PIDS"
    kill -9 $PIDS
fi

# ===== 2. 清理舊部署與日誌 =====
echo "Cleaning old deployment..."
rm -rf "${WEBAPP_DIR}/ROOT"
rm -f "${WEBAPP_DIR}/${WAR_FILE}"
rm -f "${LOG_FILE}"

# ===== 3. 部署新 WAR =====
if [ -f "${WAR_FILE}" ]; then
    echo "Deploying ${WAR_FILE}..."
    cp "${WAR_FILE}" "${WEBAPP_DIR}/${WAR_FILE}"
else
    echo "ERROR: ${WAR_FILE} not found in current directory!" >&2
    exit 1
fi

# ===== 4. 啟動 Tomcat =====
echo "Starting Tomcat..."
"${TOMCAT_BIN}/startup.sh"
sleep 10

# ===== 5. 驗證啟動狀態 =====
if ps aux | grep -q '[o]rg.apache.catalina.startup.Bootstrap'; then
    echo "Tomcat restarted successfully."
else
    echo "WARNING: Tomcat may have failed to start. Check logs."
fi

使用說明

  1. 將腳本與 ROOT.war 放在同一目錄
  2. chmod +x tomcat_redeploy.sh
  3. 執行 ./tomcat_redeploy.sh

關鍵改進點(相對原始碼片段)

  • 使用 ps aux | grep '[o]rg.apache.catalina... 避免 grep 自身進程
  • 新增 sleep 等待進程終止/啟動
  • 備份原 WAR 檔(可選)
  • 錯誤檢查與非零退出碼
  • 變數化路徑,易於移植不同 Tomcat 版本

系統服務化建議

生產環境建議將 Tomcat 註冊為 systemd 服務(/etc/systemd/system/tomcat.service),由系統管理生命週期,腳本僅負責部署邏輯。

Copyright © Windows教程網 All Rights Reserved