WAS8.5静默安装实战:imcl命令与节点联邦配置全解析
简介面向WebSphere Application Server运维与实施人员的WAS 8.5静默安装及补丁升级完整步骤文档覆盖Linux环境下安装包准备、目录结构规划、Installation Manager与WAS 8.5.5静默安装、管理概要与应用概要创建、Web管理控制台启动、Node节点配置以及补丁静默安装和静默卸载的完整流程适合需要批量部署或无人值守安装WAS的中高级运维工程师参考。文档为1个docx文件压缩包大小约144KB内容按安装前置、静默安装、补丁升级、静默卸载等阶段组织包含repository.config修改、小版本号获取、从服务器重复部署等关键操作说明目录结构清晰可对照步骤快速执行。该资源已有1639人学习配套提供WAS安装介质与补丁包的网盘下载地址能够帮助读者在真实环境中少走弯路是一份可直接用于生产环境部署与排错的实用手册。1. WAS8.5 静默安装把人工点击变成可复用命令部署 WebSphere Application Server 8.5很多人第一反应是打开图形安装向导一路 Next。但生产服务器上往往连 X11 都没有多个节点要装同一套小版本和补丁图形操作不仅慢还容易因为某一步勾选不一致导致后续集群联邦失败。WAS8.5 静默安装的本质是把原本在向导里完成的交互选项全部转换成 imcl 命令参数和 repository.config 配置项这样既可以在命令行直接执行也可以放进批处理作业统一跑。这套链路适用于 IBM WebSphere ND 8.5.5 及其补丁场景运维人员只要把介质准备、仓库配置、概要创建和节点注册四步理顺多台机器重复执行就行。2. 安装介质准备与 Installation Manager 静默部署WAS 8.5 的静默安装不是一条命令结束。先做介质规划再部署 Installation Manager 这个管理母体。静默安装参数看似分散其实都围绕“介质在哪、装到哪、License 是否接受”三个问题。普通软件的静默安装参数通常只有一个/S而 WAS 的静默安装参数分布在仓库配置和 imcl 命令里入口并不集中。2.1 介质清单与三个目录的划分先整理安装包。WAS8.5 在 Linux 上至少需要三类介质Installation Manager 安装包、WAS_ND 主安装介质、WAS 补丁包。supplements 介质里是 IBM HTTP Server 和插件如果暂时不建 Web 服务器可以只保留介质不做安装。上传目录介质内容解压后要用的文件/opt/was8.5/agentIM 安装包 agent.installer.linux.gtk.x86_64_*.zipinstallc/opt/was8.5/wassourceWAS_ND_V8.5.5_?_OF_3.zip 三卷包repository.config、WAS 组件元数据/opt/was8.5/wasupdateWAS 补丁包分卷 8.5.5-WS-WAS-FP013-part*.zip补丁 repository.config目录分开的原因很直接imcl 安装命令通过 -repositories 参数引用某个目录下的 repository.config如果主安装源和补丁源混在一起后续 updateAll 扫描时会把已安装包再次排进更新序列容易在依赖判断上出错。三个目录划分好后执行解压。注意 WAS_ND 分卷包和补丁包的分卷必须各自解压到同一个目录否则 repository 只能看到最后一个分卷的内容另外两个分卷的元数据会缺失。cd /opt/was8.5 mkdir -p agent wassource wasupdate unzip -n agent.installer.linux.gtk.x86_64_1.8.5000.20160506_1125.zip -d agent cd wassource unzip -n WAS_ND_V8.5.5_1_OF_3.zip unzip -n WAS_ND_V8.5.5_2_OF_3.zip unzip -n WAS_ND_V8.5.5_3_OF_3.zip cd /opt/was8.5/wasupdate unzip -n 8.5.5-WS-WAS-FP013-part1.zip unzip -n 8.5.5-WS-WAS-FP013-part2.zip-n参数是不覆盖已有文件解压脚本重跑时不会把已解压文件搞坏。如果介质包较大建议先对每个分卷做 md5 校验再解压能避免分卷缺失导致的“找不到 package”问题。提示WAS_ND 分卷的编号在官网下载时通常是 1_OF_3、2_OF_3 这样的命名若解压后找不到 repository.config优先检查分卷是否齐全。2.2 installc 静默安装 Installation ManagerWAS 本体和补丁都由 Installation Manager 统一管理。先装 IM再通过 IM 的 imcl 工具去做后续操作。这里需要明确安装 IM 用 installc它和 imcl 不在同一个阶段出现。cd /opt/was8.5/agent ./installc -installationDirectory /opt/IMS/eclipse -acceptLicenseinstallc是 IM 在 Linux 下的静默安装入口-installationDirectory指定 IM 自己的安装位置-acceptLicense表示接受 license不填这条会卡在交互确认。这里没有加-dataDirectory的话IM 会把配置放在系统默认目录生产上建议显式指定例如-dataDirectory /opt/IBM/IBMIMData方便后续迁移。另外installc和imcl不是同一个程序。installc只负责安装 IM 本身imcl在 IM 安装完成后运行于 /opt/IMS/eclipse/tools 下用来安装 WAS、补丁和卸载产品。很多初次接触的人把 installc 当作安装 WAS 的命令执行到一半发现只是装了个 IM 管理工具这是静默安装里第一个容易踩的坑。2.3 校验 IM 是否安装成功安装完成后可以查看安装目录确认 /opt/IMS/eclipse/tools/imcl 存在。同时执行一下 imcl -version可以快速验证 IM 进程能否正常启动。ls -l /opt/IMS/eclipse/tools/imcl /opt/IMS/eclipse/tools/imcl -version上面代码输出会列出 IM 版本号。如果命令找不到多半是安装目录不对或者 installc 解压不完整。此时应检查 /opt/was8.5/agent 下是否有 agent 目录有些版本解压后还有一层目录包裹需要先找到正确的 installc。3. 小版本号读取与 repository.config 静默参数拆分IM 就绪后进入 WAS8.5 静默安装的核心环节。整个操作围绕“读取 package id”和“让安装过程以非交互方式运行”展开。这一阶段的静默安装参数不是一两条命令行标志而是分散在安装命令和 repository.config 两个位置需要同步配置。3.1 用 imcl listAvailablePackages 读取安装包标识WAS_ND 在 IM 仓库里的标识是一长串例如 com.ibm.websphere.ND.v85_8.5.5000.20130514_1044。这个标识被称为小版本号后面安装和卸载都要原样使用。不能靠记忆写死直接从仓库读最稳。cd /opt/IMS/eclipse/tools ./imcl listAvailablePackages -repositories /opt/was8.5/wassource/repository.config命令的作用是扫描 -repositories 指定的仓库列出所有可安装包的完整 ID。输出类似com.ibm.websphere.ND.v85_8.5.5000.20130514_1044如果输出为空先检查 repository.config 里记录的路径是否能访问再看看 WAS_ND 三个分卷是否都已解压到 /opt/was8.5/wassource。还有一种情况是分卷解压后元数据目录不完整可以用 find 命令看有没有 repository.configfind /opt/was8.5/wassource -name repository.config -maxdepth 3如果查到多个 repository.configimcl 读取时只认 -repositories 参数里指的那个文件。此时需要确认路径是否指向正确的索引文件。3.2 repository.config 静默参数逐项拆解拿到 package id 后还需要修改 /opt/was8.5/wassource/repository.config把安装过程的自动化选项写进去。这个文件虽然名义上是仓库索引但在 WAS 静默安装里承担了 response file 的角色。按项目文档的做法在文件中追加以下内容-OPT silentInstallLicenseAcceptancetrue -OPT allowNonRootSilentInstalltrue -OPT disableOSPrereqCheckingtrue -OPT installTypeinstallNew -OPT featurenoFeature -OPT installLocation/opt/IBM/WebSphere/AppServer -OPT profileTypenone -OPT PROF_enableAdminSecurityfalse下面用表格把这批静默安装参数拆开说明参数取值实际意义silentInstallLicenseAcceptancetrue跳过 License 交互确认allowNonRootSilentInstalltrue允许非 root 用户运行安装disableOSPrereqCheckingtrue关闭操作系统版本前置检测installTypeinstallNew全新安装不是覆盖或增量featurenoFeature不加载示例应用installLocation/opt/IBM/WebSphere/AppServerWAS 安装的目标路径profileTypenone安装时不生成概要文件PROF_enableAdminSecurityfalse不启用管理端安全生产环境里 WebSphere 控制台通常必须设置管理员密码但这里先置为 false是因为静默安装阶段不处理安全控制台安全留给后续 Web 管理页面去配置。如果在这里设置为 true又要额外给 imcl 传入 admin 用户和密码参数链路会更长且密码会出现在命令行进程中。disableOSPrereqChecking这个参数在处理新内核版本或者补丁版本时很有用。系统检测失败时 imcl 会直接退出跳过检测可以避免一些“已知不受支持”但实际可用的环境被卡住。但这也意味着安装前要自己确认 glibc、文件系统大小等前置条件不能完全依赖跳过检测就能一定跑起来。3.3 执行 imcl install 安装 WAS8.5配置完成后执行安装命令cd /opt/IMS/eclipse/tools ./imcl install com.ibm.websphere.ND.v85_8.5.5000.20130514_1044 \ -repositories /opt/was8.5/wassource/repository.config \ -installationDirectory /opt/IBM/WebSphere/AppServer \ -sharedResourcesDirectory /opt/IBM/IMShared \ -acceptLicense这条命令把install后的 package id 当作安装对象-repositories指向仓库配置文件-installationDirectory指定 WAS 安装位置-sharedResourcesDirectory定位 IM 共享资源目录-acceptLicense避免 license 询问。这里有几个容易出错的地方。第一package id 必须与 listAvailablePackages 输出完全一致大小写和版本号不能有差异否则报 not found 错误。第二-installationDirectory应该与 repository.config 里的 installLocation 保持一致如果不一致以命令行参数为最终生效值但会造成日志和后续补丁升级时目录识别混乱。第三安装过程默认不输出 debug 信息失败时建议加-log /tmp/was-install.xml记录完整日志方便排查。补充一句如果安装包里有多个 fix packimcl install只会装基础包补丁要单独用 updateAll 处理。安装后想快速确认可以看 /opt/IBM/WebSphere/AppServer 下是否出现了 bin、profiles 等目录。4. manageprofiles 创建 Dmgr 与 AppSvr 概要及节点联邦WAS 本体安装结束install 阶段已完成。下面要做的不是直接部署应用而是创建概要文件并接入管理节点。概要文件决定实例是充当管理角色还是应用角色。静默安装到这里才真正遇到最容易出错的地方hostname 怎么填端口怎么对齐先启动哪个进程。4.1 创建 Dmgr 管理概要管理概要对应 WebSphere Deployment Manager它是整个集群的管理中心。在安装目录下执行 manageprofiles.shcd /opt/IBM/WebSphere/AppServer/bin ./manageprofiles.sh -create \ -profileName Dmgr01 \ -profilePath /opt/IBM/WebSphere/AppServer/profiles/Dmgr01 \ -templatePath /opt/IBM/WebSphere/AppServer/profileTemplates/dmgr \ -hostname was-master.example.com-profileName是概要的逻辑名-profilePath是概要的实际物理路径-templatePath必须选择 dmgr 模板而不是 default 模板-hostname显式指定主服务器主机名。这个参数特别重要如果不填系统会取本地 hostname一旦服务器重启或 DNS 配置变化控制台地址和节点间通信会随之失效。注意不要把 hostname 留空让系统自动获取。生产环境里因 DNS 配置引发的节点通信故障多数来源于这个参数缺失。创建完成后在 profiles 目录下能看到 Dmgr01。管理概要会默认占用 8879部署管理器监听端口和 9060管理控制台端口。这几个端口需要提前在防火墙放行否则后面从节点 addNode 时连不上主服务器。4.2 创建 AppSvr 应用概要管理概要只有控制台业务实例要跑在应用概要中。应用概要使用 default 模板创建cd /opt/IBM/WebSphere/AppServer/bin ./manageprofiles.sh -create \ -profileName AppSvr01 \ -profilePath /opt/IBM/WebSphere/AppServer/profiles/AppSvr01 \ -templatePath /opt/IBM/WebSphere/AppServer/profileTemplates/default \ -hostName was-master.example.com \ -nodeName was-node-01 \ -serverName server1与 Dmgr 概要的区别在于这里多了-nodeName和-serverName两个参数。-nodeName是这个应用节点注册到 Deployment Manager 时使用的标识一个集群里必须唯一不能用两台机器配置成同一个 nodeName。-serverName是该节点下默认应用服务器的名字通常填 server1后续启动命令startServer.sh server1会用到。如果这台机器上还要再建多个应用概要注意 hostname 不要写本机短名。短名只有当前机器能解析Deployment Manager 在另一台机器上会无法解析导致节点同步失败。4.3 启动顺序与 addNode 节点联邦主服务器和从服务器的启动顺序有严格要求先启动 Dmgr再启动应用节点最后用 addNode 把节点注册进管理域。如果不先启动 DmgraddNode 会直接连接失败。# 在主服务器上启动 Dmgr /opt/IBM/WebSphere/AppServer/profiles/Dmgr01/bin/startManager.sh # 在主服务器上把本机应用概要接入管理节点 /opt/IBM/WebSphere/AppServer/profiles/AppSvr01/bin/addNode.sh 10.0.90.22 8879 -username admin -password adminaddNode.sh后面的两个参数是 Deployment Manager 的 IP 和端口默认端口为 8879。-username和-password是控制台管理员账号。因为 repository.config 里把PROF_enableAdminSecurity设为 false此时管理安全还没启用这里用 admin/admin 只是一种过渡方式。如果 Dmgr 上后续启用了安全所有 addNode 都要改用启用后的密码不然联邦直接失败。注意addNode.sh要在应用概要的 bin 目录下执行不是在 WAS 全局 bin 目录。它会把该节点的配置文件同步到 Dmgr。节点加入后控制台上会出现一个 node agent。此时还需要启动节点和服务器# 启动节点进程 nodeagent /opt/IBM/WebSphere/AppServer/profiles/AppSvr01/bin/startNode.sh # 启动节点下的应用服务器 /opt/IBM/WebSphere/AppServer/profiles/AppSvr01/bin/startServer.sh server1startNode.sh 启动的是 node agent负责与 Dmgr 通信startServer.sh 启动的才是跑应用的 server。很多人在安装后只启动 server没启动 node agent控制台上节点状态会一直显示“未同步”或“停止”。4.4 主从服务器的部署差异搭建集群时通常是一台主服务器加一到多台从服务器。主服务器同时安装 Dmgr01 和 AppSvr01从服务器只安装 AppSvr01不需要创建管理概要。角色安装/创建内容需要启动的进程主服务器Dmgr01 AppSvr01startManager.sh、startNode.sh、startServer.sh从服务器仅 AppSvr01startNode.sh、startServer.sh多台服务器的 hostname 必须不同这是集群内节点区分的基础。如果 hostname 相同Dmgr 在做节点同步时会认为两台机器是同一个节点后注册的节点会顶掉先注册的节点。批量部署时脚本里必须把 hostname 作为外部参数传进来。在从服务器上执行 addNode 时同样指向主服务器的 IP 和 8879 端口。防火墙不是全部关闭也可以白名单放行必要端口。端口清单可以归纳为下表端口用途8879Deployment Manager 节点引导9060Web 管理控制台9090HTTP 传输端口9809节点 agent 与 Dmgr 通信创建完成后在主服务器的 profiles 目录下可以同时看到 Dmgr01 和 AppSvr01而从服务器的 profiles 目录下只有 AppSvr01。这个目录差异可以直接用来判断有没有误建管理概要。5. 补丁 updateAll 静默升级与 versionInfo 验证WAS 8.5 安装完成后通常还需要把补丁打到 Fix Pack 级别。补丁升级同样走 imcl关键是用 updateAll 而不是 install。针对 FP013 的场景先把补丁分卷解压到 /opt/was8.5/wasupdate保证里面 repository.config 存在再执行cd /opt/IMS/eclipse/tools ./imcl updateAll \ -repositories /opt/was8.5/wasupdate/repository.config \ -installationDirectory /opt/IBM/WebSphere/AppServer \ -acceptLicenseupdateAll的语义是扫描指定仓库里的所有可用更新并对 installationDirectory 目录下已安装的包依次升级。这里使用 updateAll 而不是 install 的好处是不需要手写补丁包 ID补丁包的标识和基础包不同如果写错 ID 会返回“未安装此产品”。升级前建议先停掉 Dmgr 和应用服务器避免文件被进程占用。生产环境中补丁升级应在克隆出的节点上先验证再批量应用到其余节点。升级完成用版本命令确认cd /opt/IBM/WebSphere/AppServer/bin ./versionInfo.sh输出会包含基础版本、Build Level、Fix Pack 等信息。重点关注 Product Edition 和 Fix Pack 两行FP013 应在 Fix Pack 中体现。如果 Fix Pack 仍然为空最常见原因是 updateAll 找不到补丁仓库这时检查 wasupdate 目录下 repository.config 的路径是否与命令参数一致。卸载的场景相对少但脚本化环境中偶尔要重建节点可以直接卸载并保留 profile 目录。卸载命令cd /opt/IMS/eclipse/tools ./imcl uninstall com.ibm.websphere.ND.v85_8.5.5000.20130514_1044 \ -installationDirectory /opt/IBM/WebSphere/AppServer卸载后 /opt/IBM/WebSphere/AppServer 会被删除但 profiles 下可能残留概要目录重建安装后旧概要会影响新节点建议卸载前把 profiles 目录改名备份。还有一点补丁升级后 package id 不会变卸载命令里仍然填基础包 ID这点与直觉可能不符。确认一段静默安装是否成功除了看命令退出码还可以从两个入口查看日志IM 日志默认在 /var/ibm/InstallationManager/logsWAS 安装日志在 /opt/IBM/WebSphere/AppServer/logs/install。配合 grep 查找 ERROR 是快速定位失败原因的方式。本文还有配套的精品资源点击获取