资讯动态

WebLogic 14.1.1.0.0 Linux静默安装与建域排错实战

发布时间:2026/9/29 4:44:30 来源:尧图企业网站定制
WebLogic 这套中间件在国内的企业存量是真的大银行、保险、电信、能源、政企的老系统里到处都能见到它的影子。虽说现在新项目大多往云原生、容器化方向走了可维护老系统的这波人还是得老老实实装它、打补丁、重装域。14.1.1.0.0 是 WebLogic 14c 这条线的一个正式版本也是目前还在持续提供补丁的版本之一很多单位的国产化替代或者系统迁移项目第一步就是把原来跑在旧机器上的 WebLogic 迁到新采购的 Linux 服务器上安装这一步就绕不过去。这篇东西我按照自己在几台 CentOS、麒麟、统信 UOS 上反复折腾的经验把从选安装包、准备系统、静默安装、建域一直到启动、排错的完整链路捋一遍写清楚每一步为什么这么做、参数为什么要这么填。刚接触 WebLogic 的朋友可以照着抄装过 12c 但没碰过 14c 的朋友可以直接跳到建域和排错那几节那里面的坑最多。1. 先把版本、JDK和安装包选清楚别一上来就下错文件很多人装 WebLogic 出问题根子不在命令敲错而是第一步文件就选错了。Oracle 对中间件的版本命名和安装包划分有自己一套逻辑不看清楚很容易下到不带 JDK 的包、下到跟操作系统位数不匹配的包甚至下到只是补丁集而不是完整安装包。这一节我把选型这件事讲透后面会顺很多。1.1 14.1.1.0.0 到底是个什么版本和12c差在哪WebLogic Server 14.1.1.0.0 属于 Oracle Fusion Middleware 14.1.1 这个产品线圈内习惯叫它 14c。它是继 12.2.1.4 之后的一个大版本最大的变化是把底层规范从 Java EE 切到了 Jakarta EE 8包名路径从javax.*变成了jakarta.*。这个变化对纯运维装机的人来说影响不大但如果你要在上面部署老应用尤其是那些依赖 jar 里写死了javax.servlet的 war 包就得留个心眼可能会遇到类加载找不到的情况。从安装的角度看14c 相比 12c 有几个明显区别安装器对 JDK 版本的要求更严了12c 时代随便一个 JDK 8 就能跑14c 要求 JDK 8 至少在 1.8.0_291 以上或者直接上 JDK 11安装包体积也变了通用包generic大概 1.1GB 到 1.2GB再一个是模板位置和 WLST 脚本的默认路径跟 12c 略有不同这个在建域那节会细说。需要强调的是14.1.1.0.0 这个版本号后面通常还会跟一个小版本号比如 14.1.1.0.0 是初始版后面官方会出 14.1.1.0.0 的补丁集PSU版本号会显示成类似 14.1.1.0.0.221101 这样的日期编码。装的时候建议直接把最新的 PSU 打上或者至少装完立刻打补丁不然有些安全扫描会飘红。1.2 JDK 怎么选别拿系统自带的凑合WebLogic 14.1.1.0.0 官方认证的 JDK 是 Oracle JDK 81.8.0_291 及以上和 Oracle JDK 1111.0.11 及以上另外也认证了部分 OpenJDK 发行版。我给的建议是如果你的应用是老的 Spring 3.x、4.x 那一套稳妥起见用 JDK 8如果是新一点的 Spring Boot可以直接上 JDK 11。别贪新用 JDK 1714.1.1.0.0 这个版本对 JDK 17 并没有完整认证装上去能跑起来但保不齐哪个角落出问题。这里有一个特别容易踩的坑很多 Linux 发行版自带一个openjdk是系统包管理器装的路径在/usr/lib/jvm/下面。你直接java -version看是能用的但那个 JDK 版本往往偏低或者是 headless 版本缺少安装器图形界面需要的 AWT 相关库。WebLogic 安装器在图形模式下要用到 Swing 组件headless JDK 会直接报错。所以我的做法永远是单独下载官方 JDK 放到/u01/app/jdk这种独立目录然后通过JAVA_HOME明确指过去不去动系统默认的 java。还有一个细节是 32 位和 64 位的问题。现在服务器基本都是 64 位下载 JDK 的时候选x64的包uname -m看到x86_64就对了。别下成 ARM64 的除非你的服务器是鲲鹏、飞腾这类国产 ARM 架构那反而必须下 aarch64 版本。这个在国产化项目里很常见先确认 CPU 架构再下包能省一大堆事。1.3 安装包种类和目录规划一次说清Oracle 的下载页面上WebLogic 一般提供两个东西一个是“Generic”通用包文件名类似fmw_14.1.1.0.0_wls_lite_generic.jar另一个是带 JDK 的包或者是一个 zip 压缩包解压出来还是一个 generic jar。我的建议是直接用 generic 包JDK 自己单独管这样 JDK 升级、打补丁都独立不会跟中间件绑死。关于目录规划我按一套标准来你照着改路径就行用途目录说明JDK/u01/app/jdk单独放软链到具体版本Middleware HomeORACLE_HOME/u01/app/oracle/product/14.1.1/wls安装主体域目录DOMAIN_HOME/u01/app/oracle/domains/base_domain业务域跟ORACLE_HOME分开Oracle 清单目录/u01/app/oracle/oraInventory静默安装必须提前指定安装介质临时目录/home/oracle/install放 jar 包和响应文件把 ORACLE_HOME 和 DOMAIN_HOME 分开是我一直坚持的做法。原因很实际升级的时候只要换 ORACLE_HOME 就行域配置和部署的应用原地不动反过来要重建域也不会把中间件本体弄坏。很多人图省事装在同一个目录后面打补丁的时候两边互相牵扯非常难受。磁盘空间上安装本体大约占 2.5GB 到 3GB不含 JDKJDK 大概 300MB 到 500MB每个域初始 300MB 左右加上日志和临时文件会涨。建议/u01单独挂一个分区至少留 30GB 起步生产环境留 50GB 以上日志写起来是很凶的。2. 系统层面的准备工作这些不做后面全是坑安装包和 JDK 准备好之后别急着敲java -jar。Linux 上跑中间件系统层面有几项准备工作是必须要做的尤其是用 root 装还是用普通用户装、文件句柄限制、临时目录空间这几件事。这一节做完后面基本上就是一路顺。2.1 建用户、建组、给目录授权WebLogic 官方文档明确说了不要用 root 运行安装器和服务器这是有道理的。root 跑中间件一旦出问题权限会失控日志、临时文件的属主全变成 root后面用普通用户就起不来了。所以第一步是创建专门的用户和组。习惯上沿用 Oracle 那一套组叫oinstall用户叫oracle。groupadd oinstall useradd -g oinstall -m -d /home/oracle -s /bin/bash oracle passwd oracle建完用户把目录创建好并授权。注意chown的时候要用-R递归而且要在解压安装包之前做不然你后面还得再改一次属主。mkdir -p /u01/app/oracle/product/14.1.1/wls mkdir -p /u01/app/oracle/domains mkdir -p /u01/app/oracle/oraInventory mkdir -p /home/oracle/install chown -R oracle:oinstall /u01/app/oracle chown -R oracle:oinstall /home/oracle/install这里有个细节/u01这个顶层目录本身的属主最好也设成oracle:oinstall或者至少保证 oracle 用户对它有写权限。我有一次在麒麟系统上装/u01是 root 建的权限是 755安装器要往/u01/app/oracle/oraInventory写东西的时候报了权限拒绝排查了半小时才发现是上层目录没开权限。注意如果你所在的环境强制要求用 root 装那装完之后一定要把 ORACLE_HOME、oraInventory 和域目录的属主统一改回 oracle否则服务器启动时会因为配置文件只读而失败。2.2 文件句柄、进程数和临时目录三件套WebLogic 会开大量的 socket 和文件句柄Ubuntu 这类发行版默认的ulimit -n只有 1024跑起来很容易报 “Too many open files”。所以第一件事是调文件句柄和进程数限制。在/etc/security/limits.conf里加上oracle soft nofile 65536 oracle hard nofile 65536 oracle soft nproc 16384 oracle hard nproc 16384改完要重新登录 oracle 用户才生效用ulimit -n验证一下是不是 65536。如果用的是 systemd 管理那还得注意 systemd 的默认限制会覆盖 limits.conf得在 service 文件里单独加LimitNOFILE65536。第二件事是临时目录。安装器默认使用/tmp解压和安装过程中会往里面写不少东西/tmp如果是个小分区有些系统只给 2GB中途会报“空间不足”。两个办法一是临时把JAVA_TOOL_OPTIONS指到别处二是干脆扩/tmp。我一般用前者mkdir -p /home/oracle/tmp export JAVA_TOOL_OPTIONS-Djava.io.tmpdir/home/oracle/tmp这个环境变量设上之后安装器和后面的 WLST 都会用新目录很省心。第三件事说一下内核参数。网上很多 WebLogic 安装教程会让你去改kernel.shmmax、kernel.shmall这一堆其实那些是 Oracle 数据库的要求WebLogic 作为纯 Java 应用并不需要共享内存段。改多了反而有风险还可能跟同机器上其他应用冲突。我的做法是只确认fs.file-max够大就行sysctl -w fs.file-max6815744 echo fs.file-max6815744 /etc/sysctl.conf2.3 解压安装包、配环境变量顺带说下乱码问题安装包下载下来通常是个 zip上传到服务器后要解压。这里就涉及到一个经常被问的问题zip 里的中文文件名解压出来是乱码。WebLogic 的安装包本身里面文件名都是英文的一般不会乱码但如果你一次解压一批从 Windows 打包过来的文件就很容易中招。原因是 zip 在 Windows 下默认用 GBK 编码存文件名而 Linux 的unzip默认按 UTF-8 解析。解决办法有两个一是解压时显式指定编码unzip -O GBK fmw_14.1.1.0.0_wls_lite_Disk1_1of1.zip二是直接改 locale。解压前先确认环境变量locale export LANGen_US.UTF-8 export LC_ALLen_US.UTF-8这里顺便提醒安装 WebLogic 的时候强烈建议把 locale 设成en_US.UTF-8不要设成zh_CN.GBK。图形化安装界面在某些中文 locale 下会出现字体缺失、按钮显示不全的问题静默安装虽然不看界面但日志里如果有非 ASCII 字符也可能出幺蛾子。语言用英文不丢人装完再切回来就行。解压出fmw_14.1.1.0.0_wls_lite_generic.jar之后配置好 JDK 环境变量。用 oracle 用户编辑~/.bash_profileexport JAVA_HOME/u01/app/jdk export PATH$JAVA_HOME/bin:$PATH export MW_HOME/u01/app/oracle/product/14.1.1/wlsjava -version确认一下版本能正常输出再往下走。3. 两种安装方式实战图形化和静默WebLogic 的安装器支持图形模式和静默模式两种。本地有显示器或者能开 X11 转发的图形化装起来直观服务器只有 SSH 的老老实实用静默。我把两种都写一遍你按场景选。我个人更推荐静默因为可复现、可脚本化装十台机器一个命令就搞定。3.1 图形化安装的完整点击路线图形化模式直接跑cd /home/oracle/install java -jar fmw_14.1.1.0.0_wls_lite_generic.jar如果你是通过 SSH 连的服务器而且没配 X11 转发会收到一句 “Cant connect to X11 window server”这是最常见的报错。解决方式是本地装个 X serverWindows 上用 XmingmacOS 自带 XQuartzSSH 登录时加-X参数服务器上echo $DISPLAY能看到值就说明转发通了。进了界面之后大致的步骤是欢迎页直接下一步自动更新跳过生产环境不要开自动更新安装位置选/u01/app/oracle/product/14.1.1/wls安装类型有三个选项WebLogic Server、Coherence、Complete with Examples做生产就选第一个Complete with Examples会带一堆示例代码占地方还容易有安全扫描告警JDK 选择时把JAVA_HOME指到独立装的 JDK然后就是安装进度条大概五到十分钟。图形化最容易出问题的地方是安装类型选错。Complete with Examples这个选项装出来的域会带examples相关的应用安全扫描经常因为里面的示例 servlet 报漏洞。生产环境一律选不带 examples 的类型。3.2 静默安装oraInst.loc和响应文件怎么写静默安装是重头戏也是我实际用得最多的方式。它需要两个文件一个是清单文件oraInst.loc一个是响应文件.rsp。这两个文件的内容写错了安装器会给出很含糊的报错所以我把每行的含义都标出来。先写oraInst.loc放在/home/oracle/install/下inventory_loc/u01/app/oracle/oraInventory inst_groupoinstallinventory_loc是 Oracle 记录“本机装了哪些 Oracle 产品”的中央清单目录同一台机器上如果还装了 Oracle 数据库它会共用这个目录所以别随便乱指。inst_group是安装组跟前面建的用户组对应。再写响应文件wls.rsp[ENGINE] Response File Version1.0.0.0.0 [GENERIC] ORACLE_HOME/u01/app/oracle/product/14.1.1/wls INSTALL_TYPEWebLogic Server DECLINE_SECURITY_UPDATEStrue SECURITY_UPDATES_VIA_MYORACLESUPPORTfalse这里的关键是ORACLE_HOME要跟你前面建好并授权的目录完全一致一个小写字母都不能错错了安装到一半才报很浪费时间。DECLINE_SECURITY_UPDATEStrue表示不订阅安全更新邮件这样安装过程不会来烦你。INSTALL_TYPEWebLogic Server就是前面说的不带 examples 的类型。两个文件准备好之后用 oracle 用户执行cd /home/oracle/install java -jar fmw_14.1.1.0.0_wls_lite_generic.jar \ -silent \ -responseFile /home/oracle/install/wls.rsp \ -invPtrLoc /home/oracle/install/oraInst.loc \ -jreLoc /u01/app/jdk \ -logLevel debug参数解释一下-silent声明静默模式-responseFile和-invPtrLoc分别指响应文件和清单文件-jreLoc显式指定安装用的 JDK这一步很重要因为如果 PATH 里有系统自带的 java安装器可能用错版本-logLevel debug让日志写详细点万一失败好排查。安装日志默认在/u01/app/oracle/oraInventory/logs/下面按时间戳命名。提示静默安装如果中途失败第二次重跑之前一定要把 ORACLE_HOME 里的残留清干净同时把 oraInventory 里的相关记录也清掉否则会报“目标位置已存在”。最稳妥的办法是删掉 ORACLE_HOME 整个目录再重新执行。3.3 装完先别急着建域验证一下再走安装完成之后先做几个检查确认装好了再建域省得后面域建不起来分不清是哪个环节的问题。第一步看目录结构和文件是否齐全ls -l /u01/app/oracle/product/14.1.1/wls正常的目录里应该有wlserver、oracle_common、oui、OPatch这几个。wlserver是核心oracle_common放公共库和 WLST 脚本OPatch是打补丁用的工具这几个缺一不可。第二步看版本信息cat /u01/app/oracle/product/14.1.1/wls/inventory/registry.xml | grep -A2 WebLogic Server或者直接跑$ORACLE_HOME/oui/bin/viewInventory.sh能看到 WebLogic Server 的版本和安装时间。第三步确认 WLST 能起来/u01/app/oracle/product/14.1.1/wls/oracle_common/common/bin/wlst.sh能进到wls:/offline提示符就说明公共库没问题exit()退出。这三步过了安装这关就算稳了。4. 创建域WLST脚本与关键参数安装只是架好了中间件本体真正跑业务还要建域。域Domain你可以理解成一个“配置容器”里面装着管理服务器、受管服务器、数据源、JMS、部署的应用等等。WebLogic 支持图形化建域和 WLST 脚本建域生产环境我一律用脚本因为配置可以版本化、可以复用。4.1 模板选型与WLST脚本逐行拆解14.1.1 里建域用的模板在$ORACLE_HOME/wlserver/common/templates/wls/目录下常用的两个wls.jar是基础模板带管理服务器和一个基础结构wls_restricted.jar是精简模板不含示例。这里我们用wls.jar它已经够干净了。WLST 建域脚本createDomain.py我是这样写的readTemplate(/u01/app/oracle/product/14.1.1/wls/wlserver/common/templates/wls/wls.jar) cd(/) cmo.setName(base_domain) cd(/Security/base_domain/User/weblogic) cmo.setPassword(YourStrongPwd123) setOption(OverwriteDomain, true) setOption(ServerStartMode, prod) setOption(JavaHome, /u01/app/jdk) writeDomain(/u01/app/oracle/domains/base_domain) closeTemplate() exit()逐行解释一下为什么这么写。readTemplate加载模板注意路径是wlserver下面不是oracle_common14c 和 12c 在这一点上是一致的。cd(/)之后再cmo.setName()是给域起名字这个名字会体现在目录名和一些配置里。cd(/Security/.../User/weblogic)是找到默认的管理员用户WebLogic 的管理员账号名固定是weblogic改不了只能改密码。密码这里要设复杂点WebLogic 从 12c 开始就强制密码复杂度至少 8 位且必须同时包含大写字母、小写字母和数字否则建域时会直接报错。setOption(ServerStartMode, prod)这个选项很关键。它决定服务器是用生产模式还是开发模式启动。开发模式会自动部署一堆示例应用还会开自动部署目录安全扫描必挂。生产模式不会自动部署性能参数也更合理。一定要用 prod。setOption(JavaHome, ...)把 JDK 路径写死到域配置里避免以后环境变量变了域起不来。writeDomain输出域目录OverwriteDomaintrue表示如果目录已存在就覆盖这个在反复调试的时候很有用但生产环境第一次建完就把它设成 false 或者不设防止误覆盖。执行脚本/u01/app/oracle/product/14.1.1/wls/oracle_common/common/bin/wlst.sh createDomain.py看到Domain Created Successfully!就说明域建好了。整个过程大概一两分钟。4.2 域目录结构与你必须改的setDomainEnv.sh域建好之后目录结构大致是这样路径作用$DOMAIN_HOME/bin启动脚本startWebLogic.sh 等$DOMAIN_HOME/config核心配置config.xml 在这里$DOMAIN_HOME/servers各个服务器的运行目录和日志$DOMAIN_HOME/security域级安全配置$DOMAIN_HOME/init-info建域时的记录信息config.xml是域的“总纲”所有资源定义都在里面但是不要直接手改这个文件改错了服务器起不来还没有备份。要改配置要么通过管理控制台要么用 WLST 在线连上去改要么用离线 WLST。接下来是内存参数。默认建出来的域JVM 参数是-Xms256m -Xmx512m这个值跑生产是绝对不够的。要改的是$DOMAIN_HOME/bin/setDomainEnv.sh找到这一段if [ ${USER_MEM_ARGS} ! ] ; then MEM_ARGS${USER_MEM_ARGS} export MEM_ARGS else MEM_ARGS-Xms256m -Xmx512m -XX:MaxMetaspaceSize256m fi有两种改法。一是直接改上面的默认值二是通过环境变量覆盖。我推荐第二种在setDomainEnv.sh前面加一段USER_MEM_ARGS-Xms4096m -Xmx4096m -XX:MaxMetaspaceSize512m -XX:UseParallelGC export USER_MEM_ARGS这样做的好处是把内存配置跟脚本解耦将来升级或者重装脚本不会把你的改动冲掉。至于给多少合适管理服务器本身不怎么干重活2GB 到 4GB 就够了受管服务器跑业务按应用的实际内存占用给一般 4GB 到 8GB。-Xms和-Xmx建议设成一样大避免运行过程中堆反复扩容收缩带来抖动。Metaspace 在 JDK 8 之后取代了永久代默认是无限但受物理内存约束显式设个上限可以防止类加载泄漏拖垮整台机器。还有一个坑是-XX:UseParallelGC这个选项。14.1.1 默认用的垃圾回收器在不同 JDK 下可能不一样如果前面 JDK 选的是 11默认会是 G1。到底用哪个得结合你的应用特点做压测别盲目照搬。上面这个参数只是个起点。4.3 DemoIdentity.jks 是什么密码和替换时机这个点几乎每个装过 WebLogic 的人都问过域目录或者$WL_HOME/server/lib/下面那对DemoIdentity.jks和DemoTrust.jks是干什么的密码是多少简单说这两个是演示用的身份密钥库和信任密钥库。DemoIdentity.jks里放的是服务器自己的一对自签名证书和私钥DemoTrust.jks里放的是信任的 CA 列表。它们的作用是让你在没有任何正式证书的情况下也能把服务器的 SSL 端口默认 7002跑起来方便开发测试。DemoIdentity.jks的密钥库口令是公开固定的官方文档里写明了默认就是DemoIdentityKeyStorePassPhrase这一类演示口令私钥口令也是对应的默认值。但这里必须强调这套演示密钥库绝对不能用于生产。原因很直接私钥口令是公开的任何人拿到这套文件都能冒充你的服务器SSL 加密形同虚设。生产环境的正确做法是用自己的证书替换掉演示密钥库。具体是在管理控制台里进到Environment Servers AdminServer Keystores把 Keystore 类型从Demo Identity and Demo Trust改成Custom Identity and Java Standard Trust或者Custom Identity and Custom Trust然后指定你自己的 JKS 文件路径和口令。替换完重启服务器生效。这一步最好在建完域、第一次启动之前就规划好因为涉及 SSL 端口的监听配置事后补做要动的地方多一些。另外如果你在启动日志里看到关于 DemoIdentity 的告警比如提示证书即将过期或者口令校验失败先别慌检查一下是不是被人改过这个文件的内容。默认情况下它是能一直用的只是浏览器打开 7002 会提示证书不受信任这属于正常现象。5. 启动管理服务器与节点管理器域建好了接下来就是启动。管理服务器AdminServer是整个域的入口先把它拉起来其他受管服务器才有地方注册。节点管理器NodeManager是另一套东西负责在物理机上拉起和监控受管服务器进程。这一节把两个都讲清楚。5.1 前台启动、日志观察和boot.properties第一次启动建议用前台方式能直接看到日志输出出问题好判断。切换成 oracle 用户进到域的 bin 目录cd /u01/app/oracle/domains/base_domain/bin ./startWebLogic.sh第一次启动会提示你输入用户名和密码就是建域时设的weblogic和那个密码。输入正确之后会开始起服务最后看到Server state changed to RUNNING就说明起来了。这时候会占用第一个终端想验证的话另开一个 SSH 窗口浏览器访问http://服务器IP:7001/console就能进管理控制台。每次启动都手输密码太麻烦解决办法是配置boot.properties。在$DOMAIN_HOME/servers/AdminServer/security/目录下创建这个文件usernameweblogic passwordYourStrongPwd123注意这个目录可能不存在需要先mkdir -p。第一次启动之后WebLogic 会自动把里面的明文密码加密掉你再看文件内容就变成{AES}...开头的密文了属主也变成只有 oracle 可读这是正常的安全机制。启动过程中要盯几个关键日志点Server state changed to STARTING之后会加载一堆模块如果卡在某个地方不动超过两分钟多半是内存不够或者某个配置文件有问题看到Server state changed to RUNNING之后如果又回退到 FAILED要去$DOMAIN_HOME/servers/AdminServer/logs/AdminServer.log里翻最后的异常堆栈。5.2 后台启动和内存参数的验证确认前台能起来之后改成后台运行。后台启动不能简单用因为那样 SSH 一断进程就跟着挂了。正确的做法是用nohup加输出重定向cd /u01/app/oracle/domains/base_domain/bin nohup ./startWebLogic.sh /dev/null 21 输出重定向到/dev/null是因为 WebLogic 自己会把日志写到servers/AdminServer/logs/下面前台输出意义不大。启动之后用ps -ef | grep weblogic能看到 Java 进程或者更直接一点看端口netstat -tlnp | grep 7001有监听就是起来了。想确认内存参数真的生效了可以在启动日志开头找一段 JVM 启动参数打印或者用jps -l找到进程号之后jinfo -flags pid看实际生效的-Xmx。这里有个经验如果内存给得比较大比如 8GB 以上启动时间会明显变长因为 JVM 要预先分配和初始化。这种情况下别急着判断它挂了多等几分钟。另外如果服务器物理内存紧张-Xmx设得超过实际可用内存会触发 swap整个机器都会卡得不偿失。设之前先用free -g看看实际有多少。5.3 节点管理器的配置与启动受管服务器Managed Server的启动有两种方式一种在管理控制台里点“启动”底层其实就是通过 NodeManager 去拉进程另一种是在服务器上手动跑startManagedWebLogic.sh。生产环境用 NodeManager 管理更方便能自动重启挂掉的进程。NodeManager 的配置文件在$WL_HOME/server/nodemanager/nodemanager.properties关键几项ListenAddress0.0.0.0 ListenPort5556 DomainsFile/u01/app/oracle/domains/base_domain/nodemanager/nodemanager.domains LogFile/u01/app/oracle/domains/base_domain/nodemanager/nodemanager.log NodeManagerHome/u01/app/oracle/domains/base_domain/nodemanager SecureListenerfalseListenAddress设成0.0.0.0表示监听所有网卡如果服务器有多张网卡并且想限定只走内网就改成内网 IP。ListenPort默认 5556注意防火墙要放行这个端口而且这个端口只能内网访问别暴露出去。SecureListenerfalse表示不启用 SSL内网环境一般够用涉密环境要设成 true 并配好证书。DomainsFile这个文件里记录了本机有哪些域NodeManager 靠它来定位受管服务器。启动节点管理器cd /u01/app/oracle/domains/base_domain/bin nohup ./startNodeManager.sh /dev/null 21 启动后在管理控制台里进到Environment Machines新建一台机器指向这个 NodeManager然后在Environment Servers里新建受管服务器并把它分配到刚才那台机器上之后就能在控制台里一键启动了。注意NodeManager 必须用它自己目录下per-domain的那份配置不要用$WL_HOME/server/nodemanager下全局的那份。全局的那份是给所有域共用的一旦里面配的路径跟当前域对不上会出现启动受管服务器时报“找不到域”的问题。6. 常见报错与排查实录前面流程走顺了其实装起来很快但实际环境里总会遇到各种报错。这一节我把这么多年踩过的坑整理成表格和案例遇到问题可以直接对照着查。6.1 安装阶段报错速查表报错信息大概率原因解决办法Cant connect to X11 window server没有图形环境或 DISPLAY 未配改用静默安装或配 X11 转发INST-07004: 无法访问指定位置ORACLE_HOME 路径不存在或没权限提前 mkdir 并 chown 给 oracle空间不足 / No space left on device/tmp 分区太小设置 JAVA_TOOL_OPTIONS 指定临时目录java: command not foundJAVA_HOME 未配或 PATH 没包含配好 .bash_profile 后重新登录Unsupported major.minor version安装器用的 JDK 版本太低用 -jreLoc 显式指定新版 JDK安装到 90% 卡住不动磁盘 IO 慢或网络存储抖动耐心等别急着 kill目标位置已存在产品清单oraInventory 里有残留记录清理 ORACLE_HOME 和清单记录后重装这个表里最后一条特别常见。静默安装失败重试的时候如果不清理干净安装器会认为这个 OH 已经被占用了直接拒绝安装。清理的办法是把 ORACLE_HOME 目录整个删掉然后去oraInventory/ContentsXML/inventory.xml里把对应的条目删掉实在不确定就整个 oraInventory 重建。6.2 启动阶段报错速查报错信息原因分析处理方式Address already in use7001 或其他端口被占netstat -tlnp找到进程处理掉或改端口The WebLogic Server did not start up properly配置错误或内存不足看 AdminServer.log 最后的异常boot.properties 密码错误密码不匹配或文件权限不对删掉重新生成确认属主是 oracleServer state changed to FAILED数据源连不上、应用部署失败等逐条看日志里的 ERROR 和 Caused byToo many open files文件句柄限制没调调 limits.conf重启会话Unable to create new native thread进程/线程数限制太低调 nproc检查 pid_max“Address already in use”这个我遇到过特别无语的一次装完 WebLogic 起服务报 7001 被占查了半天发现是之前某个人用python -m http.server 7001开了个临时文件服务忘了关。所以排查端口问题的时候netstat -tlnp的输出要一条条看清楚别只看到端口被占就以为是自己程序的问题。排查启动问题一个通用思路先看AdminServer.log里第一个ERROR或者第一个Caused by顺着堆栈往下找根因。日志是按时间顺序追加的从头看。如果日志太大用grep -n ERROR AdminServer.log | head定位行号再看那一段的上下文。6.3 几个实战心得第一装之前先确认系统时间和时区。WebLogic 的日志、证书有效期、会话超时都跟时间挂钩。服务器时间如果偏了几小时甚至几天会出现证书“未生效”这种莫名其妙的报错。用timedatectl确认一下该同步同步。第二国产化环境麒麟、统信 UOS、欧拉上装 WebLogic最大的坑往往不是 WebLogic 本身而是 JDK 的兼容性。这些系统自带的多是 OpenJDK版本可能比较旧或者被打过补丁。我的建议是别用系统自带的从官方渠道下对应的 aarch64 或 x86_64 JDK 包独立安装。另外国产系统上libaio、numactl这些依赖库有时候默认没装提前yum install或apt install装上能省很多事。第三安装和建域的全过程最好写成脚本。装一次可能不觉得但如果你要同时部署测试、预发、生产三套环境或者以后迁移服务器有脚本就是几分钟的事。我一般会维护一个install_wls.sh把 JDK 解压、环境变量、静默安装、WLST 建域、目录授权全部串起来参数抽出来静默安装的响应文件和建域脚本都做成模板改几个变量就能复用。第四装完之后记得做一次完整的“冷启动演练”把服务器重启确认 WebLogic 和 NodeManager 都能自动起来。这需要配置好开机自启或者至少把启动命令写进 systemd 的 service 文件。很多团队装完直接就用了等哪天服务器真的重启才发现哪个服务没配自启半夜被叫起来手忙脚乱。第五日志和临时文件要定期清。$DOMAIN_HOME/servers/AdminServer/logs下面的日志默认会滚动但历史文件不会自动删/tmp下的wlstTemp、nodeManager相关临时目录也会越堆越多。配个简单的 cron每天把 30 天前的日志删掉能避免磁盘被写满这种低级故障。我在实际给几个单位做迁移的时候发现WebLogic 14.1.1.0.0 这一版在 CentOS 7 上的表现比在更新的系统上还稳主要原因是系统的老库跟 JDK 8 搭配更成熟。如果你们公司没有强制的国产化要求clustering 场景下这仍然是个省心的组合。要是必须上国产 OS那 JDK 一定要单独准备别指望系统的包管理装出来的那个能用。另外补丁这件事别拖装完第一件事就是把 OPatch 更新到最新再把最新的 PSU 打上很多启动阶段的小毛病其实在补丁里已经修掉了只是你不知道而已。

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑