十年匠心定制 · 商业建站与技术教学双线并行 咨询热线:400-886-1026 service@lmnt.cn
ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

WAS8.5静默安装与补丁升级实战:基于imcl的自动化部署指南

WAS8.5静默安装与补丁升级实战:基于imcl的自动化部署指南 简介面向WebSphere应用服务器运维人员与中间件管理员提供WAS 8.5在Linux环境下的静默安装与补丁升级完整操作指引。资源为单个Word文档共144KB内容从安装介质准备、目录结构规划入手逐一说明Installation Manager静默安装、repository.config配置、WAS安装命令执行、管理概要与应用概要创建、Web管理控制台启动、Node节点及Server启动等环节并补充补丁静默安装与静默卸载方法兼顾部署、升级与维护场景。文档结构清晰步骤与命令明确适合需要批量部署或自动化运维的团队直接对照执行可有效减少图形界面操作带来的误配置与重复工作。目前已有1639人浏览学习可作为内部部署规范、培训材料或排错速查手册帮助快速完成WAS环境初始化与版本更新。1. 为什么生产环境要选 WAS8.5 静默安装机房新到的十几台 Linux 服务器负责部署 WAS8.5 中间件但安全策略禁掉了 X11 转发图形安装向导根本起不来工期只给了半天。这是生产环境最常见的状况安装发生在没有显示器、没有浏览器、只有 SSH 的跳板机上能用的就是命令行。WAS8.5 静默安装本质上是用 IBM Installation Manager 的imcl工具把一个 XML 响应文件里“选安装包、选目录、接受许可”的交互全部参数化升级补丁也是同一条路只是把offering的版本号从基础版换成补丁版。这套方案适合中间件运维、SRE 和交付团队尤其适合几十套环境批量部署和后续补丁基线拉齐的场景。2. 静默安装前的三件套账号目录、Installation Manager、响应文件仓库2.1 用 install 命令先装好 Installation ManagerWAS8.5 的介质包里并不直接把imcl放到系统 PATH 里第一步永远是先装 Installation Manager下文简称 IM。IM 自己的安装程序是一个名为install的可执行文件通常解压安装介质后就能看到。在 Linux 上用下面的命令完成 IM 的静默安装/was/install -acceptLicense -showVerboseProgress -log /was/logs/im-install.xml-acceptLicense表示跳过许可确认少了它静默模式会直接退出-showVerboseProgress让安装进度实时打到终端而不是憋到最后-log必须指向一个.xml后缀的文件IM 的结果日志只认这种格式。安装完成后确认/opt/IBM/InstallationManager/eclipse/tools/imcl存在这就是后面所有操作的入口。这里要特别提醒IM 安装目录的属主就是之后 WAS 的属主。多数生产环境会单独建一个中间件账号例如wasadmin让它拥有/opt/IBM的写权限。不要用root运行imcl再让普通账号跑 WAS安装完的目录权限很难一次改干净后续打补丁时会出现怪异的“文件不可写”错误。2.2 从安装介质解压出可被 imcl 识别的仓库WAS8.5 的安装包和补丁包通常是 zip 或 tar.gz 格式解压后才能被 IM 当作仓库使用。仓库的判定标准是解压目录下存在repository.config或diskTag.inf文件而不是随便一个放满 rpm 的目录。建议把介质解压到独立路径比如/was/repo-base放 8.5 基础安装包/was/repo-fp12放补丁包两个仓库互不干扰。解压后用imcl自带命令验证仓库是否可读/opt/IBM/InstallationManager/eclipse/tools/imcl listAvailablePackages -repositories /was/repo-base这条命令会把仓库里所有可安装的包 ID 和版本号列出来输出类似com.ibm.websphere.ND.v85_8.5.5012.20160208_0447。注意这个版本串后面写响应文件时version字段必须和它完全一致多一个字符都会报“找不到包”。建议把输出保存到文件它就是当前介质的“内容清单”。2.3 响应文件里决定“装成什么样”的核心参数静默安装的响应文件是一个 XMLIM 的-c参数指向它。下面是一份最小可用模板?xml version1.0 encodingUTF-8? agent-input server repository location/was/repo-base/ /server install modifyfalse offering idcom.ibm.websphere.ND.v85 version8.5.5012.20160208_0447 profileIBM WebSphere Application Server V8.5/ /install profile idIBM WebSphere Application Server V8.5 installLocation/opt/IBM/WebSphere/AppServer data keyuser.wasjava valuejava8/ data keyuser.installNative valuefalse/ data keyuser.leaveExistingProfile valuefalse/ /profile /agent-input这里repository location告诉 IM 去哪里找安装文件offering里的id和version共同锁定安装的产品版本profile标签指定安装路径。最重要的参数是profile下的三个data键它们决定运行环境参数键取值说明user.wasjavajava8/java7选择 WAS 使用的 JDK 版本8.5.5.5 之后可选 Java 8老项目要确认应用兼容性user.installNativetrue/false是否安装本地原生组件纯 Java 应用一般设 false避免需要 gcc 依赖user.leaveExistingProfiletrue/false已有 profile 是否保留全新安装选 false 即可modifyfalse表示这是全新安装而不是修改现有安装升级补丁时这个值不需要改。整份 XML 准备好后可以先扔进/was/response/目录统一管理避免每次安装都在命令行里手搓长参数。3. 用 imcl 执行 WAS8.5 静默安装并读穿安装日志3.1 静默安装的最小命令与两种写法响应文件就绪后执行安装命令/opt/IBM/InstallationManager/eclipse/tools/imcl \ -c /was/response/install-was85.xml \ -log /was/logs/was-install-$(date %Y%m%d-%H%M).xml \ -acceptLicense \ -showVerboseProgress-c指定响应文件IM 会解析里面的仓库和 offering 信息-log指定本次安装的详细日志-acceptLicense在命令行再确认一次许可。执行过程中如果某个步骤失败imcl不会弹交互提示而是直接终止并写日志所以-showVerboseProgress建议一直开着至少能知道卡在哪一步。另一种写法是把关键参数直接放在命令行不单独写 XML/opt/IBM/InstallationManager/eclipse/tools/imcl install \ com.ibm.websphere.ND.v85_8.5.5012.20160208_0447 \ -repositories /was/repo-base \ -installationDirectory /opt/IBM/WebSphere/AppServer \ -properties user.wasjavajava8 \ -acceptLicense \ -showVerboseProgress \ -log /was/logs/was-install-direct.xml两种写法本质一样区别在于维护形态直接写参数适合一次性安装用-c响应文件适合多套环境因为版本号、仓库路径、安装目录都收口在一个文件里。生产环境建议选后者但要注意响应文件里如果有相对路径IM 会以当前工作目录为基准解析脚本里最好先cd到固定目录再执行。3.2 怎么确认安装真的成功版本与目录验证安装命令返回 0 不代表万事大吉IM 的日志文件和 WAS 的版本信息都要过一遍。IM 执行结果记录在-log指定的 XML 里可以用 grep 直接查关键字grep -E result.*0|ERROR|WARNING /was/logs/was-install-*.xml如果 XML 末尾的result标签内是0说明 IM 认为安装成功。接着验证 WAS 本身是否可用/opt/IBM/WebSphere/AppServer/bin/versionInfo.sh | sed -n 1,40pversionInfo.sh输出里关注 Product 名称和 Build Level例如8.5.5012.20160208_0447中的5012代表 8.5.5.12。再检查 profile 是否创建成功/opt/IBM/WebSphere/AppServer/bin/manageprofiles.sh -listProfiles如果列表为空说明产品装上了但 profile 没建应用还没法直接跑。静默安装时 profile 的创建可以通过响应文件里的 profile 定义完成也可以在安装后单独执行manageprofiles.sh -create两者不冲突。3.3 安装阶段最常见的 5 个报错与处理对照表静默安装实际报错时imcl的错误码比其他中间件友好因为日志里同时有错误码和描述文本。以下是生产环境里出现频率最高的几类错误码/现象典型原因处理方式CRIMA1051仓库里找不到所需包仓库路径不对或介质没解压完整检查repository.config是否存在重新解压安装包CRIMA1162找不到指定 offering响应文件里的id/version与仓库清单不一致跑一次imcl listAvailablePackages复制输出里的完整 ID权限不足导致写入失败用错用户执行imcl确认当前用户是安装目录属主且 shell 环境无 sudo 包裹进度条卡在 70% 附近不动磁盘空间不够或/tmp被占满df -h /opt /tmpIM 解包时需要两倍于安装包大小的临时空间日志出现中文乱码系统 locale 不是英文执行脚本前export LANGen_US.UTF-8这里有一个容易踩的坑CRIMA1162 在 8.5.5.x 的某些 IM 版本里错误描述会提示“在 service repositories 里找不到”新手会以为是网络问题去配代理实际就是版本号写错了。先跑listAvailablePackages核对不要凭记忆手敲。4. WAS8.5 升级补丁的静默安装从下载仓库到回滚4.1 Fix Pack、Cumulative Fix 与 iFix先分清补丁类型WAS8.5 的补丁体系里日常接触最多的是三类Fix Pack常规修复包按月或季度发布版本号从 8.5.5.0 递增到 8.5.5.x、Cumulative Fix在最新 Fix Pack 之上追加的安全修复集合、iFix针对单个问题的临时修复包版本号通常是问题编号。升级补丁的优先级建议是先看基础 Fix Pack再评估 Cumulative Fix最后才考虑 iFix。原因很简单Fix Pack 是经过全量回归的iFix 的适用范围窄装错场景反而引入新问题。补丁下载同样是压缩包解压到独立目录例如/was/repo-fp15。下载时要注意匹配操作系统平台WAS8.5 的 Linux 补丁包区分 x86_64 和 ppc64解压前先确认介质说明里的平台标识。4.2 静默打补丁的命令imcl install 一个“高版本号”在 IM 的世界里打补丁和装新产品的操作路径完全一致都是imcl install只是offering的版本号换成补丁版本。假设当前环境是 8.5.5.12要升到 8.5.5.15先看一下补丁仓库里的准确版本号然后执行/opt/IBM/InstallationManager/eclipse/tools/imcl install \ com.ibm.websphere.ND.v85_8.5.5015.20160610_1537 \ -repositories /was/repo-fp15 \ -installationDirectory /opt/IBM/WebSphere/AppServer \ -acceptLicense \ -showVerboseProgress \ -log /was/logs/upgrade-fp15.xml这个命令的核心是第 2 行的完整 offering ID它是“产品名_基础版本号_补丁版本号”的拼接。执行前建议先停掉所有 WAS 进程避免二进制文件被占用。IM 支持原地升级不需要先卸载旧版本它会把差异文件替换掉。补丁安装时有两个参数值得额外关注-installFixesOnly -installOfferingUpdates-installFixesOnly表示只安装修复包不允许跨大版本变更-installOfferingUpdates则让它自动扫描安装目录里所有可用的补丁并全部安装。日常操作我一般不用-installOfferingUpdates因为会把仓库里的所有补丁一次性打进去而有些 iFix 是需要评估后才能上的。手动指定版本号虽然多一步但可控性高。4.3 升级前后比对版本与回滚 WAS8.5 补丁的操作升级前先拍快照这是所有补丁操作的前提。对 WAS8.5 来说配置备份和文件备份分开做# 1. 备份配置文件 /opt/IBM/WebSphere/AppServer/bin/backupConfig.sh \ -username wasadmin -password changeit \ -backupFile /was/backup/config-8.5.5.12.zip # 2. 记录当前版本 /opt/IBM/WebSphere/AppServer/bin/versionInfo.sh /was/logs/version-before.txt # 3. 停服后整目录打包 cd /opt/IBM tar -czf /was/backup/was-85512-$(date %F).tar.gz WebSphere升级完成后对比版本信息/opt/IBM/WebSphere/AppServer/bin/versionInfo.sh | grep Build Level如果 Build Level 从之前的8.5.5012.*变成8.5.5015.*说明 Fix Pack 已经生效。应用启动验证通过后再考虑删除备份包。如果升级后应用出现兼容性问题需要回滚到旧补丁有两个方案。方案一是用imcl uninstall单独卸载补丁/opt/IBM/InstallationManager/eclipse/tools/imcl uninstall \ com.ibm.websphere.ND.v85_8.5.5015.20160610_1537 \ -installationDirectory /opt/IBM/WebSphere/AppServer \ -acceptLicense方案二是直接把之前打的 tar 包解压回去。两个方案里imcl uninstall更干净但它依赖 IM 的仓库记录tar 包回滚最保险但要注意解压后的属主和权限不能被覆盖掉。生产环境我通常两个都保留优先用imcl uninstall失败再走 tar。5. 把静默安装和升级补丁脚本化的 4 个运维细节把这套流程放回日常运维里最怕的是每次安装都手敲一遍参数。以下是四个值得固化的细节。5.1 用模板加 sed 维护版本号而不是维护一整份 XML响应文件里 90% 的内容是固定的唯一频繁变化的是offering version。把install-was85.xml写成模板版本号位置放占位符sed s/__VERSION__/${TARGET_VERSION}/ \ /was/response/install-template.xml /tmp/install-current.xml这样仓库换新补丁时只改一个环境变量不需要打开 XML 编辑器手工对齐标签。这里要注意的是sed替换后要确认文件里没有残留__VERSION__加一行 grep 校验更稳妥。5.2 在管道脚本里保留 imcl 的退出码与日志imcl的退出码不像普通 shell 命令那么直观它返回 0 表示执行成功非 0 表示失败但错误码本身不区分阶段。脚本里一定要配合set -euo pipefail确保中间某一步失败时后续操作不会继续执行。日志文件名里带时间戳方便归档LOG_FILE/was/logs/was-$(date %Y%m%d-%H%M).xml这里有一个细节imcl -log指定的文件后缀必须是.xml否则 IM 会拒绝生成日志。很多初写的脚本在这里栽跟头日志文件后缀写成了.log报错才反应过来。5.3 升级补丁前先备份配置和安装目录补丁升级最怕的不是升级失败而是升级成功后配置丢失。backupConfig.sh备份的是 WAS 配置tar 包备份的是整个安装目录两者缺一不可。备份命令放进升级脚本的前置步骤比手动执行可靠得多。具体命令在 4.3 已经给出这里只需要把它固化成脚本里的一个函数备份失败则中止升级。5.4 用 imcl listAvailablePackages 生成可追溯的版本清单升级完补丁后把仓库清单写入文件留档/opt/IBM/InstallationManager/eclipse/tools/imcl \ listAvailablePackages -repositories /was/repo-fp15 \ /was/logs/repo-fp15-inventory.txt这份清单记录了当时补丁仓库里所有的包版本将来排查环境漂移时拿它和实际安装版本一比对就能定位问题。把版本清单、响应文件、安装日志三个文件放在同一个目录一套环境的“出身”就完整了。下一台机器克隆环境时只需要换 IP 和 hostname这条命令本身就是版本追溯的依据。本文还有配套的精品资源点击获取
返回列表