You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Azure App Service Linux环境Git部署应用失败求助(Windows正常)

解决Linux版Azure App Service部署WAR包后无法访问的问题

Windows与Linux版Azure App Service的Java运行环境逻辑完全不同——Windows基于IIS集成的Java runtime,Linux则用容器化的Tomcat/Jetty镜像,部署规则和路径要求差异是问题核心,按以下步骤排查解决:

1. 强制指定正确的Linux运行栈

Linux App Service必须明确配置匹配的Java运行栈,Terraform配置需对应调整:

  • 用azurerm_linux_web_app时,在site_config中定义运行栈参数:
site_config {
  java_version = "11"
  java_container = "TOMCAT"
  java_container_version = "9.0"
}
  • 用azurerm_app_service搭配Linux计划时,通过linux_fx_version指定运行栈:
site_config {
  linux_fx_version = "TOMCAT|9.0-java11" # 可用值可通过`az webapp list-runtimes --linux`查询
}

2. 修正WAR包部署路径

Linux下Git部署中心默认将WAR包放到/home/site/wwwroot,但Tomcat容器默认读取/home/site/wwwroot/webapps目录下的包,需通过应用设置调整:
在Terraform的app_settings中添加:

app_settings = {
  WEBSITE_WEBDEPLOY_USE_SCM = "false"
  TOMCAT_WEBAPPS_DIR = "/home/site/wwwroot/webapps"
}

3. 查看容器启动日志定位报错

部署成功但无法访问,几乎都是容器启动或应用初始化失败,必须查日志:

  • 登录Azure门户,进入目标App Service,左侧菜单选日志->容器日志,查看Tomcat启动时的具体报错(如依赖缺失、WAR包损坏、端口冲突等)。
  • 也可通过Terraform配置启用日志持久化,方便实时排查:
site_config {
  logs {
    application_logs {
      file_system {
        level = "Information"
      }
    }
    http_logs {
      file_system {
        retention_in_days = 7
        retention_in_mb = 100
      }
    }
  }
}

然后用命令实时查看日志:az webapp log tail --name <app-name> --resource-group <rg-name>

4. 验证WAR包的Linux兼容性

排查应用本身的跨平台问题:

  • 检查WAR包是否包含Windows特有的依赖(如.dll文件),替换为跨平台版本。
  • 本地用Docker运行对应版本的Tomcat镜像(如tomcat:9.0-jdk11),测试WAR包能否正常启动。

5. 确认端口配置

Linux App Service默认将外部请求转发到容器的8080端口,若应用硬编码了其他端口,需在app_settings中添加:

app_settings = {
  WEBSITES_PORT = "8080" # 替换为你的应用实际监听端口
}

内容的提问来源于stack exchange,提问作者Lekha

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.13 10:42:23