欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Tomcat后臺(tái)部署WAR包的完整流程

 更新時(shí)間:2025年07月28日 10:47:10   作者:Bruce_xiaowei  
Apache?Tomcat提供了一個(gè)基于Web的管理界面,允許管理員通過(guò)圖形化界面部署、管理Web應(yīng)用程序,本文我們將重點(diǎn)講解如何通過(guò)Manager?App部署WAR包,需要的朋友可以參考下

一、Tomcat管理后臺(tái)介紹

Apache Tomcat提供了一個(gè)基于Web的管理界面,允許管理員通過(guò)圖形化界面部署、管理Web應(yīng)用程序。這個(gè)功能主要通過(guò)兩個(gè)Web應(yīng)用實(shí)現(xiàn):

  • Manager App:用于部署、啟動(dòng)、停止、重新加載和刪除Web應(yīng)用程序
  • Host Manager:用于管理虛擬主機(jī)

我們將重點(diǎn)講解如何通過(guò)Manager App部署WAR包。

二、環(huán)境準(zhǔn)備

1. Tomcat版本要求

  • 建議使用Tomcat 8.5.x、9.x或10.x版本
  • 本文以Tomcat 9.0.85為例進(jìn)行演示
  • 下載地址:https://tomcat.apache.org/download-90.cgi

2. 系統(tǒng)環(huán)境

  • 操作系統(tǒng):Windows/Linux/macOS
  • Java版本:JDK 8或更高版本
  • 內(nèi)存:建議至少1GB可用內(nèi)存

三、配置Tomcat管理權(quán)限

1. 配置manager-gui角色和用戶(hù)

編輯conf/tomcat-users.xml文件,添加以下內(nèi)容:

<tomcat-users xmlns="http://tomcat.apache.org/xml"
              xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
              xsi:schemaLocation="http://tomcat.apache.org/xml tomcat-users.xsd"
              version="1.0">
    
    <!-- 添加管理角色 -->
    <role rolename="manager-gui"/>
    <role rolename="manager-script"/>
    <role rolename="manager-jmx"/>
    <role rolename="manager-status"/>
    
    <!-- 添加管理員用戶(hù) -->
    <user username="admin" password="StrongPassw0rd!" roles="manager-gui,manager-script,manager-jmx,manager-status"/>
    
</tomcat-users>

安全提示:生產(chǎn)環(huán)境中應(yīng)使用強(qiáng)密碼,并定期更換。

2. 配置訪(fǎng)問(wèn)限制(可選但推薦)

編輯webapps/manager/META-INF/context.xml文件,配置IP訪(fǎng)問(wèn)限制:

<?xml version="1.0" encoding="UTF-8"?>
<Context antiResourceLocking="false" privileged="true" >
  <Valve className="org.apache.catalina.valves.RemoteAddrValve"
         allow="127\.0\.0\.1|::1|YOUR_IP_ADDRESS" />
  <Manager sessionAttributeValueClassNameFilter="java\.lang\.(?:Boolean|Integer|Long|Number|String)|org\.apache\.catalina\.filters\.CsrfPreventionFilter\$LruCache(?:\$1)?|java\.util\.(?:Linked)?HashMap"/>
</Context>

YOUR_IP_ADDRESS替換為允許訪(fǎng)問(wèn)的IP地址。

四、準(zhǔn)備WAR包

1. 創(chuàng)建測(cè)試WAR包

創(chuàng)建一個(gè)簡(jiǎn)單的Web應(yīng)用示例:

# 創(chuàng)建目錄結(jié)構(gòu)
mkdir -p myapp/WEB-INF/classes
mkdir myapp/images

# 創(chuàng)建web.xml
cat > myapp/WEB-INF/web.xml << 'EOF'
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee 
         http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
         version="4.0">
    <display-name>My Test Application</display-name>
    <welcome-file-list>
        <welcome-file>index.html</welcome-file>
    </welcome-file-list>
</web-app>
EOF

# 創(chuàng)建index.html
cat > myapp/index.html << 'EOF'
<!DOCTYPE html>
<html>
<head>
    <title>My Test Application</title>
    <meta charset="UTF-8">
</head>
<body>
    <h1>Hello from My Test Application!</h1>
    <p>Deployed successfully at: <span id="time"></span></p>
    <script>
        document.getElementById("time").innerHTML = new Date().toString();
    </script>
</body>
</html>
EOF

# 打包成WAR文件
cd myapp
jar -cvf ../myapp.war *
cd ..

2. 驗(yàn)證WAR包結(jié)構(gòu)

# 查看WAR包內(nèi)容
jar -tf myapp.war

預(yù)期輸出:

index.html
WEB-INF/
WEB-INF/web.xml
WEB-INF/classes/

五、部署WAR包的三種方式

方式一:通過(guò)Web界面部署(推薦用于學(xué)習(xí))

  1. 啟動(dòng)Tomcat服務(wù)器
# Linux/Mac
bin/startup.sh

# Windows
bin\startup.bat
  1. 訪(fǎng)問(wèn)管理界面
  • 打開(kāi)瀏覽器訪(fǎng)問(wèn):http://localhost:8080/manager/html
  • 使用前面配置的用戶(hù)名和密碼登錄
  1. 部署WAR包
  • 在"Deploy"部分,選擇"WAR file to deploy"
  • 點(diǎn)擊"Choose File"選擇你的WAR文件
  • 點(diǎn)擊"Deploy"按鈕

方式二:通過(guò)Manager API部署(推薦用于自動(dòng)化)

使用curl命令通過(guò)REST API部署:

# 部署WAR包
curl -u admin:StrongPassw0rd! \
     -T myapp.war \
     "http://localhost:8080/manager/text/deploy?path=/myapp&update=true"

# 檢查部署狀態(tài)
curl -u admin:StrongPassw0rd! \
     "http://localhost:8080/manager/text/list"

# 重新加載應(yīng)用(如果已存在)
curl -u admin:StrongPassw0rd! \
     "http://localhost:8080/manager/text/reload?path=/myapp"

# 停止應(yīng)用
curl -u admin:StrongPassw0rd! \
     "http://localhost:8080/manager/text/stop?path=/myapp"

# 啟動(dòng)應(yīng)用
curl -u admin:StrongPassw0rd! \
     "http://localhost:8080/manager/text/start?path=/myapp"

# 卸載應(yīng)用
curl -u admin:StrongPassw0rd! \
     "http://localhost:8080/manager/text/undeploy?path=/myapp"

方式三:直接放置到webapps目錄(最簡(jiǎn)單)

# 復(fù)制WAR文件到webapps目錄
cp myapp.war $CATALINA_HOME/webapps/

# Tomcat會(huì)自動(dòng)解壓并部署
# 或者創(chuàng)建自動(dòng)部署目錄
mkdir $CATALINA_HOME/webapps/myapp
cp myapp.war $CATALINA_HOME/webapps/myapp/myapp.war

六、驗(yàn)證部署結(jié)果

1. 檢查應(yīng)用狀態(tài)

# 通過(guò)Manager API檢查
curl -u admin:StrongPassw0rd! "http://localhost:8080/manager/text/list"

輸出示例:

OK - Listed applications for virtual host localhost
/myapp:running:0:myapp
/manager:running:0:manager
/host-manager:running:0:host-manager
/ROOT:running:0:ROOT

2. 訪(fǎng)問(wèn)應(yīng)用

打開(kāi)瀏覽器訪(fǎng)問(wèn):http://localhost:8080/myapp/

應(yīng)該能看到"Hello from My Test Application!"頁(yè)面。

3. 檢查日志

查看Tomcat日志確認(rèn)部署過(guò)程:

# Linux/Mac
tail -f $CATALINA_HOME/logs/catalina.out

# Windows
type %CATALINA_HOME%\logs\catalina.out

七、常見(jiàn)問(wèn)題排查

1. 403 Access Denied錯(cuò)誤

原因:IP地址不在允許列表中

解決方案

<!-- 修改webapps/manager/META-INF/context.xml -->
<Valve className="org.apache.catalina.valves.RemoteAddrValve"
       allow="127\.0\.0\.1|::1|YOUR_IP|ANOTHER_IP" />

2. 401 Unauthorized錯(cuò)誤

原因:用戶(hù)名或密碼錯(cuò)誤

解決方案

  • 檢查conf/tomcat-users.xml中的用戶(hù)名和密碼
  • 確認(rèn)角色manager-gui已分配給用戶(hù)

3. 部署失?。簝?nèi)存不足

解決方案

# 增加JVM內(nèi)存
export CATALINA_OPTS="-Xms512m -Xmx1024m -XX:MaxPermSize=256m"
# 然后啟動(dòng)Tomcat

4. WAR包無(wú)法自動(dòng)部署

檢查項(xiàng)

  • 確認(rèn)WAR包格式正確
  • 檢查web.xml是否符合規(guī)范
  • 查看catalina.out日志中的具體錯(cuò)誤信息

八、安全最佳實(shí)踐

1. 生產(chǎn)環(huán)境安全配置

<!-- conf/tomcat-users.xml -->
<tomcat-users>
    <role rolename="manager-gui"/>
    <role rolename="manager-script"/>
    <user username="deploy-user" 
          password="$2a$10$hashedpassword" 
          roles="manager-script"/>
    <user username="admin-user" 
          password="$2a$10$anotherhashed" 
          roles="manager-gui"/>
</tomcat-users>

原則

  • 部署使用專(zhuān)用用戶(hù)(僅manager-script權(quán)限)
  • GUI管理使用另一用戶(hù)(manager-gui權(quán)限)
  • 使用強(qiáng)密碼并定期更換

2. 禁用不必要的管理應(yīng)用

如果不需要Host Manager,可以刪除或重命名:

mv webapps/host-manager webapps/host-manager.bak

3. 配置HTTPS

<!-- conf/server.xml -->
<Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol"
           maxThreads="150" SSLEnabled="true">
    <SSLHostConfig>
        <Certificate certificateKeystoreFile="conf/localhost-rsa.jks"
                     type="RSA" />
    </SSLHostConfig>
</Connector>

生成證書(shū):

keytool -genkeypair -alias localhost -keyalg RSA -keysize 2048 \
        -keystore conf/localhost-rsa.jks -validity 3650

九、自動(dòng)化部署腳本

創(chuàng)建一個(gè)自動(dòng)化部署腳本deploy.sh

#!/bin/bash

# 配置變量
TOMCAT_URL="http://localhost:8080"
USERNAME="admin"
PASSWORD="StrongPassw0rd!"
WAR_FILE="myapp.war"
CONTEXT_PATH="/myapp"

# 函數(shù):檢查應(yīng)用是否存在
check_app_exists() {
    local status=$(curl -s -u "$USERNAME:$PASSWORD" \
                    "$TOMCAT_URL/manager/text/list" | \
                    grep "$CONTEXT_PATH" || echo "not_found")
    
    if [[ "$status" != "not_found" ]]; then
        echo "exists"
    else
        echo "not_exists"
    fi
}

# 函數(shù):部署應(yīng)用
deploy_app() {
    echo "Deploying $WAR_FILE to $CONTEXT_PATH..."
    
    local response=$(curl -s -u "$USERNAME:$PASSWORD" \
                      -T "$WAR_FILE" \
                      "$TOMCAT_URL/manager/text/deploy?path=$CONTEXT_PATH&update=true")
    
    if [[ "$response" == *"OK"* ]]; then
        echo "Deployment successful!"
        return 0
    else
        echo "Deployment failed: $response"
        return 1
    fi
}

# 函數(shù):檢查部署狀態(tài)
check_status() {
    echo "Checking deployment status..."
    curl -u "$USERNAME:$PASSWORD" "$TOMCAT_URL/manager/text/list" | \
    grep "$CONTEXT_PATH"
}

# 主程序
main() {
    if [ ! -f "$WAR_FILE" ]; then
        echo "Error: WAR file '$WAR_FILE' not found!"
        exit 1
    fi
    
    local app_status=$(check_app_exists)
    
    if [ "$app_status" == "exists" ]; then
        echo "Application already exists. Will update..."
    else
        echo "Application does not exist. Will create new deployment..."
    fi
    
    if deploy_app; then
        echo "Verifying deployment..."
        sleep 2
        check_status
        echo "Deployment completed successfully!"
    else
        echo "Deployment failed!"
        exit 1
    fi
}

# 執(zhí)行主程序
main "$@"

使用方法:

chmod +x deploy.sh
./deploy.sh

十、高級(jí)部署技巧

1. 灰度發(fā)布

通過(guò)不同的上下文路徑實(shí)現(xiàn)灰度發(fā)布:

# 部署新版本到新路徑
curl -u admin:StrongPassw0rd! \
     -T myapp-v2.war \
     "http://localhost:8080/manager/text/deploy?path=/myapp-new&update=true"

# 測(cè)試新版本
curl http://localhost:8080/myapp-new

# 如果測(cè)試通過(guò),替換舊版本
curl -u admin:StrongPassw0rd! \
     "http://localhost:8080/manager/text/undeploy?path=/myapp"
     
curl -u admin:StrongPassw0rd! \
     -T myapp-v2.war \
     "http://localhost:8080/manager/text/deploy?path=/myapp&update=true"

2. 集群環(huán)境部署

對(duì)于Tomcat集群,可以使用以下策略:

# 定義集群節(jié)點(diǎn)
NODES=("node1:8080" "node2:8080" "node3:8080")

# 并行部署到所有節(jié)點(diǎn)
for node in "${NODES[@]}"; do
    curl -u admin:StrongPassw0rd! \
         -T myapp.war \
         "http://$node/manager/text/deploy?path=/myapp&update=true" &
done

# 等待所有部署完成
wait
echo "Deployed to all cluster nodes"

十一、監(jiān)控與維護(hù)

1. 監(jiān)控腳本

創(chuàng)建監(jiān)控腳本monitor.sh

#!/bin/bash

TOMCAT_URL="http://localhost:8080"
APP_PATH="/myapp"
CHECK_INTERVAL=60  # 檢查間隔(秒)

while true; do
    # 檢查應(yīng)用健康狀態(tài)
    HTTP_CODE=$(curl -s -o /dev/null -w "%{http_code}" "$TOMCAT_URL$APP_PATH")
    
    if [ "$HTTP_CODE" != "200" ]; then
        echo "$(date): Application is DOWN! HTTP Code: $HTTP_CODE"
        # 可以添加告警通知,如發(fā)送郵件或短信
        # send_alert "Application is down"
    else
        echo "$(date): Application is UP"
    fi
    
    sleep $CHECK_INTERVAL
done

2. 自動(dòng)化備份

#!/bin/bash

# 備份已部署的應(yīng)用
BACKUP_DIR="/opt/tomcat/backups"
DATE=$(date +%Y%m%d_%H%M%S)

mkdir -p "$BACKUP_DIR"

# 備份特定應(yīng)用
cp "$CATALINA_HOME/webapps/myapp.war" "$BACKUP_DIR/myapp_$DATE.war"
cp -r "$CATALINA_HOME/webapps/myapp" "$BACKUP_DIR/myapp_$DATE"

# 保留最近7天的備份
find "$BACKUP_DIR" -name "myapp_*" -mtime +7 -delete

十二、總結(jié)

通過(guò)以上詳細(xì)步驟,您已經(jīng)掌握了Tomcat后臺(tái)部署WAR包的完整流程:

  1. 基礎(chǔ)部署:通過(guò)Web界面或API部署WAR包
  2. 安全配置:合理配置用戶(hù)權(quán)限和訪(fǎng)問(wèn)控制
  3. 自動(dòng)化:使用腳本實(shí)現(xiàn)一鍵部署和監(jiān)控
  4. 生產(chǎn)實(shí)踐:遵循安全最佳實(shí)踐,確保系統(tǒng)穩(wěn)定

以上就是在Tomcat服務(wù)器上部署WAR包的完整流程的詳細(xì)內(nèi)容,更多關(guān)于Tomcat部署WAR包的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • IDEA和Tomcat服務(wù)器的整合過(guò)程

    IDEA和Tomcat服務(wù)器的整合過(guò)程

    這篇文章主要介紹了IDEA和Tomcat服務(wù)器的整合,本文分步驟通過(guò)圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-09-09
  • Tomcat 是如何管理Session的方法示例

    Tomcat 是如何管理Session的方法示例

    這篇文章主要介紹了Tomcat 是如何管理Session的方法示例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-11-11
  • Tomcat部署B(yǎng)olo動(dòng)態(tài)博客

    Tomcat部署B(yǎng)olo動(dòng)態(tài)博客

    這篇文章主要介紹了Tomcat部署B(yǎng)olo,我的服務(wù)器的鏡像是Alibaba Cloud Linux 3,全面兼容RHEL/CentOS 8生態(tài),Bolo需要JavaEE環(huán)境,不能選擇最新的Tomcat10,需要Tomcat9或者Tomcat8,感興趣的朋友跟隨小編一起看看吧
    2022-01-01
  • Java+Tomcat 環(huán)境部署及安裝過(guò)程圖解

    Java+Tomcat 環(huán)境部署及安裝過(guò)程圖解

    這篇文章主要介紹了Java+Tomcat 環(huán)境部署及安裝過(guò)程圖解,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-05-05
  • tomcat服務(wù)器宕機(jī)解決方案

    tomcat服務(wù)器宕機(jī)解決方案

    這篇文章主要介紹了tomcat服務(wù)器宕機(jī)解決方案,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-07-07
  • 詳解Tomcat是如何實(shí)現(xiàn)異步Servlet的

    詳解Tomcat是如何實(shí)現(xiàn)異步Servlet的

    這篇文章主要介紹了詳解Tomcat是如何實(shí)現(xiàn)異步Servlet的,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-10-10
  • 修改Tomcat運(yùn)行時(shí)jvm編碼問(wèn)題

    修改Tomcat運(yùn)行時(shí)jvm編碼問(wèn)題

    這篇文章主要介紹了修改Tomcat運(yùn)行時(shí)jvm編碼問(wèn)題,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-01-01
  • tomcat 6.0.20在一個(gè)機(jī)器上安裝多個(gè)服務(wù)的方法

    tomcat 6.0.20在一個(gè)機(jī)器上安裝多個(gè)服務(wù)的方法

    當(dāng)前前提是你已經(jīng)可以同時(shí)運(yùn)行他們了,他們的端口不能相同,這里只是解釋如何把它們做成服務(wù)
    2009-08-08
  • tomcat關(guān)于配置servlet的url-pattern的問(wèn)題思路詳解

    tomcat關(guān)于配置servlet的url-pattern的問(wèn)題思路詳解

    這篇文章主要介紹了tomcat關(guān)于配置servlet的url-pattern的問(wèn)題詳解,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-05-05
  • Tomcat 5.5 數(shù)據(jù)庫(kù)連接池配置

    Tomcat 5.5 數(shù)據(jù)庫(kù)連接池配置

    我用的數(shù)據(jù)庫(kù)是MySQL5.5,所以首先要把MySQL的JDBC驅(qū)動(dòng)程序拷貝到Tomcat安裝目錄的/common/lib下和你自己網(wǎng)站的/WEB-INF/lib下。
    2009-08-08

最新評(píng)論