简介:面向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 Manager
WAS8.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 响应文件里决定“装成什么样”的核心参数
静默安装的响应文件是一个 XML,IM 的-c参数指向它。下面是一份最小可用模板:
<?xml version="1.0" encoding="UTF-8"?> <agent-input> <server> <repository location='/was/repo-base'/> </server> <install modify='false'> <offering id='com.ibm.websphere.ND.v85' version='8.5.5012.20160208_0447' profile='IBM WebSphere Application Server V8.5'/> </install> <profile id='IBM WebSphere Application Server V8.5' installLocation='/opt/IBM/WebSphere/AppServer'> <data key='user.wasjava' value='java8'/> <data key='user.installNative' value='false'/> <data key='user.leaveExistingProfile' value='false'/> </profile> </agent-input>这里repository location告诉 IM 去哪里找安装文件;offering里的id和version共同锁定安装的产品版本,profile标签指定安装路径。最重要的参数是profile下的三个data键,它们决定运行环境:
| 参数键 | 取值 | 说明 |
|---|---|---|
user.wasjava | java8/java7 | 选择 WAS 使用的 JDK 版本,8.5.5.5 之后可选 Java 8,老项目要确认应用兼容性 |
user.installNative | true/false | 是否安装本地原生组件,纯 Java 应用一般设 false,避免需要 gcc 依赖 |
user.leaveExistingProfile | true/false | 已有 profile 是否保留,全新安装选 false 即可 |
modify='false'表示这是全新安装而不是修改现有安装,升级补丁时这个值不需要改。整份 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.wasjava=java8 \ -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,40p'versionInfo.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 /tmp,IM 解包时需要两倍于安装包大小的临时空间 |
| 日志出现中文乱码 | 系统 locale 不是英文 | 执行脚本前export LANG=en_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,这条命令本身就是版本追溯的依据。
本文还有配套的精品资源,点击获取