ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

AWC2406安装复盘:Deployment Center编排与部署脚本避坑

AWC2406安装复盘:Deployment Center编排与部署脚本避坑

简介:面向Teamcenter实施与运维人员的AWC2406安装配置文档,围绕使用Deployment Center完成部署这一典型场景展开,适合需要搭建测试环境、复现安装流程或查漏补缺的初中级工程师参考。压缩包内仅含1个docx文档,整体约4.67MB,内容集中、便于随查随用。文档以要点式记录关键前置条件、界面入口与结果校验,覆盖安装前的主机名与网络设置准备、JDK17.0.3及许可服务和SQL Server2019等基础依赖,也涉及安装介质入库、日志排查、环境创建与软件选择、Active Workspace Client与Gateway、Corporate Server、Database Server等组件的配置顺序,以及部署脚本生成等关键环节,并特别提示数据库与TC密码的符号限制等易错点。已有312人学习下载。读者可借此快速建立AWC2406部署的整体脉络,定位介质添加失败、组件状态未完成、部署包查找等常见问题,作为官方文档之外的速查笔记和排错参考。

1. 某台测试机上的AWC2406安装复盘:Deployment Center把零散动作收成一条链

某实验室的测试机在AWC2406安装时,手工装完JDK、License Server 4和SQL Server 2019后,最容易翻车的不是某个组件装不上,而是Teamcenter Deployment Center这条编排链路没对齐:介质有没有进存储库、环境Env_Tc的组件状态是不是100%、生成的deploy.bat参数有没有带对。它解决的是把零散安装动作收束成可复现脚本的问题,适合要在一台或几台Windows主机上复现AWC2406部署的从业者。下面按我实际踩坑后重走的顺序拆,先把基线打牢,再进存储库、环境、组件和脚本。

2. 装前基线:主机名、hosts、防火墙与JDK17的落点

2.1 主机名与hosts的对照表怎么落地

安装笔记里黑色底纹覆盖的主机名是示例值,落到自己环境要逐台替换,不能直接照抄。主机名一旦进入Deployment Center生成的环境配置,后面再改会牵动License、数据库连接和AWC网关地址,返工成本很高。我一般先画一张角色对照表,把应用机、数据库机、网关机分开,再统一改主机名和hosts。示例可以按下面这种粒度写,IP段用测试环境自己的规划,不要照搬。

角色示例主机名hosts行示例说明
应用与部署中心tc-app0110.10.10.21 tc-app01装Deployment Center和TC组件
数据库tc-db0110.10.10.22 tc-db01SQL Server 2019实例所在机
AWC网关awc-gw0110.10.10.23 awc-gw01Active Workspace Gateway
Web层tc-web0110.10.10.24 tc-web01Teamcenter Web Tier

改主机名用PowerShell最稳,改完必须重启再继续装。下面这段只改名字,不碰域和网络配置;如果机器已经加域,先确认改名不会影响域信任。

# 以管理员身份运行,把 tc-app01 换成规划表中的主机名 Rename-Computer -NewName "tc-app01" -Restart

逻辑说明:Rename-Computer只改计算机名,-Restart让改名立即生效,避免后面装JDK和Deployment Center时还读到旧名称。参数说明:-NewName取对照表里的短主机名,建议不超过15个字符,不要带下划线和中文;-Restart会直接重启,执行前保存好手头工作。

hosts文件建议用追加方式写,不要整段覆盖,尤其是机器上已有其他解析记录时。下面这段会取当前机第一个非回环IPv4地址,把“IP+主机名”追加到hosts,适合单机测试;多机环境还是按对照表手工写更可控。

# 以管理员身份运行,先备份hosts Copy-Item C:\Windows\System32\drivers\etc\hosts C:\Windows\System32\drivers\etc\hosts.bak $hostName = $env:COMPUTERNAME $ip = (Get-NetIPAddress -AddressFamily IPv4 | Where-Object {$_.IPAddress -notlike '127.*'} | Select-Object -First 1).IPAddress "$ip`t$hostName" | Out-File -FilePath C:\Windows\System32\drivers\etc\hosts -Append -Encoding ascii

逻辑说明:先备份hosts,再用当前计算机名和IPv4地址拼一行解析记录,编码用ascii避免记事本写入BOM导致解析异常。参数说明:$env:COMPUTERNAME是当前主机名;-notlike '127.*'排除回环地址;-Append保证不覆盖已有内容。多机环境把$hostName和$ip换成对照表里的值逐条追加,最后用ping tc-db01和ping awc-gw01各验一次。

提示:hosts改完先别急着装Deployment Center,用ping -4 主机名确认解析到IPv4地址,避免后面组件连到IPv6地址上。

2.2 防火墙、IPv6与JDK17.0.3的检查顺序

测试环境里我通常先关防火墙、禁用网卡IPv6,再装JDK17.0.3,顺序反了容易出现“JDK装完但Deployment Center服务起不来”的假故障。关防火墙只适合隔离的测试网,生产环境要按端口放行,不能照搬。禁用IPv6也要先确认远程桌面和监控没有走IPv6,否则断连后只能去机房。

# 以管理员身份运行;网卡名先用 Get-NetAdapter 查 Set-NetFirewallProfile -Profile Domain,Public,Private -Enabled False Disable-NetAdapterBinding -Name "以太网" -ComponentID ms_tcpip6 Get-NetAdapterBinding -Name "以太网" | Where-Object {$_.ComponentID -eq "ms_tcpip6"}

逻辑说明:第一条关闭域、公用、专用三套防火墙配置;第二条解绑指定网卡的IPv6协议;第三条回读绑定状态,确认Enabled为False。参数说明:-Name "以太网"要换成Get-NetAdapter里看到的实际网卡名;-ComponentID ms_tcpip6是IPv6协议绑定标识,不要改成其他组件。

JDK装完后不要只看安装向导的完成页,要在新开的CMD里验版本。Deployment Center和TC组件依赖JAVA_HOME,路径里不要带中文和特殊符号,版本按输入里的17.0.3对齐。

# 新开管理员PowerShell,设置机器级JAVA_HOME [Environment]::SetEnvironmentVariable("JAVA_HOME","C:\Program Files\Java\jdk-17.0.3","Machine") [Environment]::SetEnvironmentVariable("Path",$env:Path + ";%JAVA_HOME%\bin","Machine") java -version

逻辑说明:SetEnvironmentVariable写机器级变量,避免只对当前窗口生效;第二行把%JAVA_HOME%\bin追加到Path;最后用java -version验证输出为17.0.3。参数说明:"Machine"表示系统级;JDK路径按实际安装目录改,但目录名尽量保持jdk-17.0.3这种短格式。设置完关掉所有CMD窗口重开,否则旧窗口读不到新变量。

2.3 License Server 4与SQL Server 2019的最小可用验证

License Server 4和SQL Server 2019不要等Deployment Center报错才回头查,装完就先做最小验证。License服务看服务状态和端口,SQL看版本、认证模式和1433端口。下面先查许可相关服务,服务名按实际安装结果过滤,不要硬编码不存在的名字。

# 查许可相关服务状态 Get-Service | Where-Object {$_.Name -match 'license|flex' -or $_.DisplayName -match 'license'} | Format-Table Name,DisplayName,Status,StartType

逻辑说明:用名称和显示名双条件过滤,避免只匹配英文服务名漏掉显示名里的License。参数说明:-match是正则匹配,license|flex覆盖常见许可服务命名;Format-Table只影响展示,不影响结果。看到服务不是Running就先启动,再看启动类型是不是自动。

SQL Server 2019装完后,用sqlcmd验版本和认证模式。Teamcenter常用做法是启用混合认证并固定1433端口,实例名和排序规则按官方文档和现场规范来,不要凭感觉选。

-- 在SQL Server所在机用sqlcmd执行 SELECT SERVERPROPERTY('ProductVersion') AS ProductVersion, SERVERPROPERTY('Edition') AS Edition, SERVERPROPERTY('IsIntegratedSecurityOnly') AS WindowsOnly;

逻辑说明:第一条查产品版本,第二条查版本类型,第三条查是否只允许Windows认证;WindowsOnly=0表示混合认证已开。参数说明:ProductVersion应能对上SQL Server 2019的版本线;Edition按实际授权显示;WindowsOnly为1时要在SQL配置里改混合认证并重启实例。

端口验证用Test-NetConnection,从应用机打到数据库机,避免只在本机通、跨机不通。

# 从tc-app01打tc-db01的1433 Test-NetConnection -ComputerName tc-db01 -Port 1433

逻辑说明:Test-NetConnection会同时做解析和TCP握手,TcpTestSucceeded为True才算通。参数说明:-ComputerName写hosts里的主机名,顺便验证解析;-Port 1433按SQL实例实际监听端口改。不通时先查SQL TCP/IP协议是否启用,再查防火墙和端口占用。

注意:Deployment Center里配置Database Server和TC密码时不允许特殊符号,后面第5章会单独拆;这里装SQL时先把测试密码定成纯字母数字,能省一轮返工。

3. 把介质塞进Teamcenter Deployment Center存储库:路径、日志与活动介质

3.1 介质解压路径为什么要短

AWC2406介质解压到D:\DeploymentCenter\repository\software下面,路径尽量短不是洁癖,是Windows路径长度和repotool扫描共同决定的。解压时多套一层同名目录、目录名带空格或中文,后面存储库添加介质就容易出现“文件在但活动介质不出现”。我一般把目标目录控制在三层以内,例如software\AWC2406,不要写成software\AWC2406\AWC2406\disk1。

# 以管理员身份运行;源包按实际介质名改 $src = "D:\media\AWC2406.zip" $dst = "D:\DeploymentCenter\repository\software\AWC2406" Expand-Archive -Path $src -DestinationPath $dst -Force

逻辑说明:Expand-Archive把介质解到短路径下,-Force允许覆盖上次失败的残留文件。参数说明:$src是介质压缩包位置,不要放在网络盘;$dst固定到存储库software下,目录名用版本号;-Force会覆盖同名文件,执行前确认目标目录没有要保留的手工改动。

解压完先看目录层级,确认没有出现同名嵌套。下面这条只列两层,够判断介质根目录是不是直接落在AWC2406下。

# 检查解压后的目录层级 Get-ChildItem D:\DeploymentCenter\repository\software\AWC2406 -Depth 2 | Select-Object FullName,PSIsContainer

逻辑说明:-Depth 2限制递归深度,避免刷屏;PSIsContainer区分目录和文件。参数说明:路径按实际解压目录改;如果看到AWC2406\AWC2406这种嵌套,把内层内容上移一层再继续。介质里常见的disk目录、setup文件以实际包为准,不要自行改名。

3.2 登录存储库添加介质与活动状态确认

登录Deployment Center后进软件存储库,添加介质,再看活动介质列表。界面操作不复杂,关键是添加后不要只看“上传完成”,要回到存储库列表确认状态是活动。下面先确认本机Deployment Center相关服务在跑,服务名按实际安装结果过滤,不要硬编码。

# 查Deployment Center相关服务 Get-Service | Where-Object {$_.DisplayName -match 'deployment|repotool|tc'} | Format-Table Name,DisplayName,Status,StartType

逻辑说明:用显示名过滤部署中心和存储库工具服务,确认不是停止状态。参数说明:deployment|repotool|tc是宽匹配,实际服务名可能不同;Status为Running、StartType为Automatic才算就绪。服务没起时先启动,再刷新浏览器。

添加介质的操作顺序我习惯固定成下面几步,避免漏掉“更新选定的软件”:

  1. 登录Deployment Center,进入软件存储库。
  2. 点击添加介质,选择D:\DeploymentCenter\repository\software\AWC2406下的介质根目录。
  3. 等待解析完成,回到存储库列表刷新。
  4. 确认介质状态为活动,版本显示与AWC2406一致。
  5. 如果列表里出现重复条目,先删掉失败条目再重加,不要两个版本同时挂着。

提示:添加介质时不要同时挂AWC2406和其他版本,环境里选软件时容易选错;测试机上只保留当前要装的活动介质最省心。

3.3 添加失败看repotool日志的排查路径

添加介质失败时,界面提示通常很笼统,真正的黑匣子在D:\DeploymentCenter\webserver\repotool\logs。我一般先按时间倒序找最新日志,再看末尾100行,重点搜ERROR、Failed、extract、repository这些词。下面这段先列最新三个日志文件,不直接打开一大堆。

# 找最新repotool日志 Get-ChildItem D:\DeploymentCenter\webserver\repotool\logs -Filter *.log | Sort-Object LastWriteTime -Descending | Select-Object -First 3 FullName,LastWriteTime,Length

逻辑说明:按最后写入时间倒序,取最近三个,先看时间和大小判断是不是本次操作产生的日志。参数说明:-Filter *.log只匹配日志;-First 3避免一次列太多;Length为0说明日志没写进去,要查服务账户权限。

找到文件后看尾部,不要全文通读。下面这条把最后120行拉出来,配合关键字过滤。

# 把路径换成上一步查到的日志文件 $log = "D:\DeploymentCenter\webserver\repotool\logs\repotool.log" Get-Content $log -Tail 120 | Select-String -Pattern "ERROR|Failed|extract|repository|permission"

逻辑说明:-Tail 120只看尾部,Select-String过滤关键行,减少噪音。参数说明:$log换成实际文件名;关键字按报错调整,压缩包损坏可以加checksum,权限问题可以加denied。看到路径过长就回3.1缩路径,看到权限拒绝就给repotool服务账户加software目录读权限。

常见失败原因我归成四类:解压路径太长或嵌套、压缩包传输损坏、服务账户对repository\software没有读权限、同一介质重复添加。处理顺序是先缩路径重解压,再校验包大小,再查权限,最后清重复条目。不要一上来重装Deployment Center,多数时候日志已经指出问题在介质侧。

4. 创建Env_Tc环境:软件、选项、应用程序与组件的顺序

4.1 创建环境与概述改名

介质变成活动介质后,下一步是创建环境。环境名我习惯用Env_Tc,短、能一眼看出是TC测试环境,后面部署脚本目录也会带这个名字。创建后进入环境,点添加,再在概述里改名称。改名要趁组件还没配完,配到一半再改容易让已生成的配置对不上。

# 确认部署脚本目录下出现Env_Tc Get-ChildItem D:\DeploymentCenter\repository\deploy_scripts -Directory | Select-Object Name,LastWriteTime

逻辑说明:环境创建后会在deploy_scripts下生成对应目录,用目录名反查环境是否落盘。参数说明:路径按实际Deployment Center安装位置改;-Directory只列目录;看到Env_Tc且时间戳是本次操作,说明环境已建立。没有出现时先回界面确认环境是否保存成功。

概述里除了名称,还要核对主机名、域、时区这些基础项。主机名必须是2.1里改完并重启后的名字,不能还是安装前的旧名。时区不一致会让日志时间对不上,排错时很别扭。改完点保存,再刷新一次页面,确认名称没有回退。

4.2 选软件、更新选定软件、转至选项

回到部署软件,在可用软件里选AWC2406对应介质,点“更新选定的软件”,再确认已选软件列表里有正确内容。这里的动作顺序不能省:先选、再更新、再核对、再转至选项。只选不点更新,后面组件配置读不到介质;选错版本,组件状态会卡住。

核对项期望值说明
可用软件AWC2406与活动介质版本一致
已选软件列表包含AWC2406不能为空或带旧版本
更新动作已点击更新选定的软件未更新则组件读不到介质
选项页已勾选对应选项按现场规范勾,不照抄
环境保存已保存环境选项不保存则生成脚本缺配置

转至选项后,勾选对应选项再保存环境选项。选项会影响生成脚本里的端口、认证和组件开关,测试环境可以按最小可用勾,生产要按规范来。勾完不要直接跳部署,先回概述和软件页各刷一次,确认选择没丢。页面之间来回切时偶尔会丢未保存状态,血泪经验是每改一页就点一次保存。

4.3 应用程序与组件的配置顺序

应用程序页添加可用应用程序,选择后点“更新选定的应用程序”,再点“转至组件”。组件页按顺序配,每个组件点开填详细信息,状态到100%再下一个。输入里给的组件顺序可以作为清单,但实际界面有依赖箭头时以箭头为准;Database Server通常要先于Corporate Server完成连接测试,不然后面组件会反复报数据库连不上。

顺序组件配置重点
1Active Workspace Client BuilderAWC构建参数、主机名
2Active Workspace Gateway网关地址、端口
3Corporate ServerTC服务端参数
4Database ServerSQL主机、实例、库名、密码
5FSC文件存储卷路径
6FSC Group卷组配置
7FSC Keys密钥相关配置
8Indexer索引服务参数
9Indexing Engine索引引擎连接
10Licensing Server许可服务地址
11Microservice Node微服务节点
12Server Manager服务管理器
13Server Manager Cluster Configuration集群配置
14Teamcenter Web Tier (Java EE)Web层Java EE配置

每个组件点右侧的展开按钮能看到更细的配置项,填完保存再刷新,状态从灰变黄再变绿。状态卡在90%左右时先看该组件日志和数据库连通性,不要急着删环境重建。所有组件到100%后再点“转至部署”,这时才会出现生成安装脚本的入口。组件没全绿就生成脚本,后面deploy.bat大概率跑一半停。

注意:Database Server和TC的密码在Deployment Center里不允许! @ $ % = & ' " ^ : ; . _ < > ( ) { }这些特殊符号,TEM里允许带,但环境配置阶段先统一用纯字母数字,能避开大半密码类报错。

5. 部署脚本与避坑排查:deploy.bat参数、日志与五条翻车记录

5.1 deploy.bat的参数与解压路径

所有组件100%后,点转至部署,再点生成安装脚本。生成成功会给部署说明,部署包在D:\DeploymentCenter\repository\deploy_scripts\Env_Tc\install下,文件名形如deploy_XXX.zip。不要直接在install目录里双击解压,先解到独立短路径,再用管理员CMD进去跑。

# 找到最新部署包并解压到短路径 $zip = Get-ChildItem "D:\DeploymentCenter\repository\deploy_scripts\Env_Tc\install\deploy_*.zip" | Sort-Object LastWriteTime -Descending | Select-Object -First 1 Expand-Archive -Path $zip.FullName -DestinationPath "D:\deploy\Env_Tc" -Force

逻辑说明:按时间取最新部署包,避免拿到旧环境生成的zip;解压到D:\deploy\Env_Tc短路径,减少bat内部路径拼接问题。参数说明:deploy_*.zip匹配部署包命名;-Force覆盖上次解压残留;目标路径不要带空格和中文。解压后应能看到deploy.bat和配套目录。

以管理员身份打开CMD,进入解压路径再执行。下面命令里的账号密码是输入里给的示例值,实际按环境改;-softwareLocation必须指向存储库software目录,不是介质解压子目录。

:: 以管理员身份运行CMD,不要双击bat cd /d D:\deploy\Env_Tc deploy.bat -dcusername=dcadmin -dcpassword=dcadmin -softwareLocation=D:\DeploymentCenter\repository\software

逻辑说明:cd /d先切盘符再切目录,避免当前目录不对导致找不到配置;deploy.bat带三个参数启动部署。参数说明:-dcusername和-dcpassword是Deployment Center登录账号,密码含特殊符号时先改成纯字母数字;-softwareLocation是存储库software根路径,末尾不要多写反斜杠。执行后不要关窗口,控制台输出就是第一手排错信息。

5.2 五条踩坑记录:现象、原因、解决

第一条:添加介质一直失败,界面只提示添加失败。现象是存储库列表刷不出活动介质,repotool日志尾部出现解压异常。原因是介质解压路径太长或出现同名嵌套,repotool扫描不到根目录。解决是把介质重新解到D:\DeploymentCenter\repository\software\AWC2406,确保没有AWC2406\AWC2406嵌套,再重新添加。

第二条:组件状态卡在90%左右,Database Server反复报连接失败。现象是SQL端口通、账号也对,但组件就是不过。原因是Database Server或TC密码里带了! @ $ %这类特殊符号,Deployment Center校验不通过。解决是把密码改成纯字母数字重新填,TEM里允许特殊符号不代表这里允许,两个地方的规则要分开记。

第三条:deploy.bat一闪而过,像没执行。现象是双击后窗口秒关,部署日志也没生成。原因是没用管理员CMD,或者解压路径带空格没加引号。解决是用管理员身份打开CMD,先cd /d到解压目录,再按完整参数执行;路径有空格时给路径加英文双引号。

第四条:环境里选不到活动介质。现象是存储库明明有介质,部署软件页可用软件为空。原因是介质版本和Deployment Center 2406不匹配,或者添加后没刷新存储库缓存。解决是先核对介质版本,再回存储库重新添加一次,刷新页面后重新选软件;仍不出现就看repotool日志里有没有版本识别失败。

第五条:AWC登录失败,但TC服务看着都起来了。现象是浏览器打不开AWC,或者打开后报网关错误。原因是hosts没覆盖全部主机名、防火墙没关或AWC网关端口没放行。解决是按2.1的对照表逐条ping主机名,确认解析到IPv4;测试环境确认防火墙已关,生产按端口放行;再用Test-NetConnection打网关端口。

5.3 日志定位与复装前清理

部署脚本跑失败时,先找日志再动手重装。除了repotool日志,部署包解压目录下也可能生成部署日志,常见做法是先看控制台最后几十行,再按时间搜当前目录的*.log。下面这条从存储库日志目录递归找最新五个日志,适合确认是不是介质侧先出的问题。

# 递归找最新日志,先定位再打开 Get-ChildItem D:\DeploymentCenter\webserver\repotool\logs -Recurse -Filter *.log | Sort-Object LastWriteTime -Descending | Select-Object -First 5 FullName,LastWriteTime,Length

逻辑说明:递归覆盖子目录,按时间倒序取前五个,先锁定本次操作时间窗内的文件。参数说明:-Recurse会进子目录;-First 5可按需改;Length为0时查服务账户写权限。打开日志后先搜ERROR和Exception,再看错误前20行,通常能看到触发动作。

复装前不要直接删repository,先把deploy_scripts\Env_Tc备份出来,再停掉相关服务,检查端口占用。下面这条查1433、8080、7001三个常见端口,按实际环境改端口列表。

# 查常见端口占用,避免复装时端口冲突 Get-NetTCPConnection -State Listen | Where-Object {$_.LocalPort -in 1433,8080,7001} | Select-Object LocalAddress,LocalPort,OwningProcess

逻辑说明:只列监听状态,找出占用端口的进程号,再用Get-Process -Id确认是不是旧服务。参数说明:-in后面的端口按现场实际改;OwningProcess是PID;不要直接杀进程,先确认是不是SQL、TC或AWC相关服务。复装前把旧环境备份、端口清干净,比装到一半再回头查省时间。

6. 装完别急着交付:三条验证线与一个复装习惯

装完AWC2406后,我一般按“服务、端口、登录”三条线验,不靠界面上的100%就当成功。服务线看TC、AWC、SQL、License相关服务是否Running;端口线从应用机打数据库1433、Web层和网关端口;登录线用部署说明里给出的AWC地址实际登一次,别只在本机浏览器缓存里点。

验证线动作通过标准
服务查TC、AWC、SQL、License服务关键服务Running,启动类型自动
端口从应用机打DB 1433、Web和网关端口TcpTestSucceeded为True
登录用部署说明里的AWC地址登录能进登录页并完成一次认证

服务检查可以用一条宽匹配先扫一遍,再针对没起来的具体查。下面这条只做初筛,匹配不到不代表没装,按实际服务名补过滤词。

# 初筛关键服务,按实际服务名补充匹配词 Get-Service | Where-Object {$_.Status -eq 'Running' -and $_.DisplayName -match 'teamcenter|active workspace|sql|license'} | Format-Table Name,DisplayName,Status

逻辑说明:先看运行中的关键服务,缩小排查范围;没列出来的服务再单独查。参数说明:-match里的词按现场显示名补;Status -eq 'Running'只列运行中,停止的会漏掉,需要单独查停止项。端口验证用Test-NetConnection逐条打,别只在一台机器上测。

复装习惯是我从几次返工里换来的:每次装AWC2406前,先把主机名、hosts、密码字符集三件事写进一张检查表,装完把deploy_scripts\Env_Tc整个备份,再把介质路径和部署包路径记在环境说明里。从那以后我每次点“生成安装脚本”之前,都强制走一遍主机名解析、组件状态、密码字符集这三项,不再凭记忆。希望帮到你。

本文还有配套的精品资源,点击获取

RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进