
在 Linux 上装 WebLogic 14.1.1.0.0是很多做中间件运维、Java 应用交付、以及信创环境适配的同学绕不过去的一道坎。它是 Oracle 官方中间件产品线的 14c 版本承载 Java EE 8 / Jakarta EE 8 那一套规范企业里常见的 WAR、EAR 包、JMS 消息、数据源、集群、JDBC 多数据源这些能力都跑在它上面。之所以说是保姆级是因为绝大多数生产服务器根本不给你图形界面你必须全程命令行把安装做完而 WebLogic 的静默安装又有几个特别容易翻车的点——JDK 版本卡得死、响应文件字段一个都不能少、inventory 目录和运行用户权限对不上就报一堆看不懂的错。这篇内容我按真实交付的顺序来写从版本选型、主机准备、JDK 落地、静默安装、WLST 建域一直到启动验证和踩坑速查适合第一次上手的新人也适合装过 12c 但被 14.1.1 的目录分离搞懵的老运维。1. 装之前先把三个前提定死版本、JDK、目录我见过太多人在这一步偷懒结果后面花三倍时间返工。WebLogic 的安装不是下载解压跑脚本那么随意它的版本、JDK、目录规划之间是强耦合的前期十分钟想清楚能省掉后面两小时的排查。1.1 WebLogic 14.1.1.0.0 到底吃哪些 JDK这一版对 JDK 的要求比其他中间件严格得多。它只认证 JDK 8 和 JDK 11 两个大版本JDK 8 要求 8u241 及以上实际在官方认证矩阵里给到的通常是 8u251、8u261 这类较新的补丁号JDK 11 要求 11.0.7 及以上。JDK 17、JDK 21 在这个版本上是跑不起来的安装程序可能会走到一半直接甩一句不受支持的 JRE 版本也可能装完了启动时抛Unsupported class file major version。提示JDK 17 是从 WebLogic 14.1.2 那一代才开始进入官方认证范围的别拿新 JDK 硬套 14.1.1。具体支持的补丁号以你手上那份官方认证矩阵为准因为它会随季度补丁更新。另一个容易被忽略的点是 JDK 供应商。生产环境我建议直接用 Oracle JDK 对应版本或者用官方认证矩阵里明确列出过的第三方 OpenJDK 发行版自己随手抓一个社区编译的 JDK 11 小版本可能因为加密算法实现差异导致后面密钥库读取报错这类问题排查起来非常耗时间。1.2 域目录跟安装目录要不要分开14.1.1 相比 12c 早期版本最大的结构变化是把产品安装目录和域目录彻底解耦了。产品安装目录也就是我们常说的 ORACLE_HOME / WLS_HOME只放二进制和模板权限可以设成只读域目录DOMAIN_HOME放配置、日志、安全文件、部署包是真正会频繁读写的部分。为什么要这么设计因为在传统部署里大家习惯把域建在安装目录下面升级的时候不敢动一升级就得重新建域、重新配数据源非常痛苦。拆开之后产品目录可以被多个域共用升级时替换产品目录、域目录原样保留回滚成本也低得多。所以我给你的建议是安装目录放在/u01/app/oracle/product/14.1.1/wls域目录单独放到/u01/app/weblogic/domains/base_domain两个目录最好在同一台机器但分属不同的挂载点或者至少不同的父目录方便单独做备份。1.3 安装包选 Lite 还是完整版14.1.1 这一代官方提供了两种安装包形态。一种是 Lite 版本安装包体积小、装完只包含 WebLogic Server 和 Coherence 这些核心组件用INSTALL_TYPEWebLogic Server就可以另一种是完整的 Fusion Middleware 通用安装包带了示例和更多可选组件装出来几个 GB。如果你的目标就是跑一个标准的 Java Web 应用、不做 SOA 和 Portal 那一套Lite 包足够了装得快、攻击面小、后续打补丁也省事。只有当你确实需要示例代码、或者要装其它 Fusion Middleware 组件时才去用完整包。这个选择要在下载阶段就定下来因为它直接决定了响应文件里INSTALL_TYPE怎么写。2. Linux 主机侧的准备用户、目录、内核参数一次配齐主机侧的准备工作看起来琐碎但它决定了你后面安装是一路回车还是一路报错。我习惯把这一步拆成资源检查、用户目录、系统参数三块一次做完再动手装 JDK。2.1 检查系统资源、时区与主机名解析磁盘空间先看安装目录预留 10GB 以上、域目录预留 10GB 以上比较稳因为域跑起来之后日志、临时文件、部署包都会涨。内存方面测试环境 4GB 能跑生产域按应用规模给一般建议整机至少 8GB 起步因为 AdminServer 加上受管服务器至少要吃 2GB 的堆。/tmp分区单独说一句安装程序在解压阶段会往/tmp写大量临时文件如果/tmp只有几百 MB 而且是独立分区安装会以空间不足失败报错信息还不直白。你可以用df -h /tmp先确认有 1GB 以上余量。然后是主机名解析。这一条是 WebLogic 启动慢的头号嫌疑犯AdminServer 启动时会对自己做一次主机名反查如果/etc/hosts里没有本机主机名对应的条目它会等 DNS 超时看起来就像卡在启动不动。先执行hostname拿到主机名然后确认/etc/hosts里有类似192.168.10.21 wls-node01这样一行。时间同步同样重要尤其是后面要做集群和 SSL 通信时节点间时间差太大会导致证书握手失败用date对一下必要时把时间同步服务配好。2.2 建用户建组建目录不建议用 root 装、用 root 跑。规范做法是建一个专用的运行用户安装、建域、启停全部用它避免后期日志文件和密钥库权限混乱。groupadd -g 1001 weblogic useradd -u 1001 -g weblogic -m -d /home/weblogic -s /bin/bash weblogic echo weblogic:YourPass2024 | chpasswd目录结构我一般这样规划四个目录各司其职mkdir -p /u01/app/oracle/product/14.1.1/wls mkdir -p /u01/app/weblogic/domains mkdir -p /u01/app/oraInventory chown -R weblogic:weblogic /u01/app chmod -R 775 /u01/app这里有个细节oraInventory是 Oracle 安装体系通用的中央目录用来记录这台机器上装了哪些 Oracle 产品。WebLogic 虽然是独立产品但安装程序仍然会读写它。如果你在同一个用户下装过别的 Oracle 产品比如数据库客户端这个目录可能已经存在那就直接复用别重新建否则会出现多个 inventory 互相覆盖的诡异情况。2.3 ulimit、SELinux、防火墙该关的关该开的开文件句柄数是 WebLogic 最容易踩的系统级限制。默认ulimit -n在很多发行版上只有 1024域跑起来之后一旦并发上来就会报Too many open files日志里还会伴随一堆连接异常。建议直接提到 65536。cat /etc/security/limits.conf EOF weblogic soft nofile 65536 weblogic hard nofile 65536 weblogic soft nproc 16384 weblogic hard nproc 16384 EOF注意limits.conf对通过 systemd 启动的服务不生效后面第 7 节用 systemd 托管时还要在 unit 文件里再写一遍LimitNOFILE这个坑我在生产上踩过现象就是手工启动好好的做成服务就报句柄耗尽。SELinux 和防火墙看你所在环境的安全基线。如果基线允许测试阶段可以把 SELinux 设为 permissive避免路径访问被拦生产环境则应该保留 enforcing 并针对性放行而不是一关了之。防火墙只需要放开你实际使用的管理端口和业务端口比如后面的 7001。管理控制台端口千万不要无差别地对公网开放这一点后面还会强调。3. JDK 落地与环境变量别在这步埋雷JDK 这一步我单独拉出来讲是因为后面所有环节——安装、建域、启动、打补丁——全都依赖JAVA_HOME指向同一个 JDK一旦指向漂移故障现象会非常迷惑。3.1 JDK 安装与校验把 JDK 压缩包放到/u01/app/jdk/下面解压、改属主。目录名建议带版本号方便日后并存多个 JDK 版本mkdir -p /u01/app/jdk tar -zxvf jdk-11.0.20_linux-x64_bin.tar.gz -C /u01/app/jdk/ chown -R weblogic:weblogic /u01/app/jdk ls -ld /u01/app/jdk/jdk-11.0.20解压完一定要做两件事一是确认bin/java可执行二是运行时验证版本号。/u01/app/jdk/jdk-11.0.20/bin/java -version输出里会显示openjdk version 11.0.20这类信息。如果你看到的是1.8.0_xxx说明解压的是 JDK 8 包别慌14.1.1 用 JDK 8 也完全没问题只是要确认补丁号在 8u241 以上。注意如果解压后出现中文文件名乱码通常是压缩包用了 GBK 编码或者系统 locale 不对。用tar -zxvf xxx.tar.gz --force-local或者先export LANGen_US.UTF-8再解压遇到文件名带特殊字符unzip的话加-O UTF-8参数。3.2 环境变量写哪里环境变量建议写成系统级 profile 片段放在/etc/profile.d/weblogic.sh这样该机器上所有需要的用户登录后都能拿到一致的环境cat /etc/profile.d/weblogic.sh EOF export JAVA_HOME/u01/app/jdk/jdk-11.0.20 export ORACLE_HOME/u01/app/oracle/product/14.1.1/wls export WLS_HOME$ORACLE_HOME/wlserver export DOMAIN_HOME/u01/app/weblogic/domains/base_domain export PATH$JAVA_HOME/bin:$PATH export LANGen_US.UTF-8 EOF chmod 644 /etc/profile.d/weblogic.shLANG这一行不是可选项。安装程序生成的日志、域启动的日志、控制台输出的中文全都依赖 locale。实测在LANG为空或POSIX的环境里日志里中文会变成一堆问号之后排查问题基本靠猜。UTF-8 是这一代产品的默认编码别用 GBK否则后面-Dfile.encoding配置容易打架。另外提醒一句PATH里不要把系统自带的/usr/bin/java放在前面。有些发行版预装了某个 JDK你明明设置了JAVA_HOMEjava -version出来的却是另一个版本这就是 PATH 顺序问题。验证方式很简单su - weblogic which java java -version echo $JAVA_HOME两边必须指向同一份 JDK。这一步没确认清楚后面安装程序报JRE 不受支持你会以为是包下载错了其实是环境变量没生效。4. 静默安装实操响应文件逐行拆解WebLogic 的静默安装核心就是两份文件响应文件和 inventory 定位文件。把这两份写对安装基本就是一条命令的事。4.1 安装包校验与解压路径拿到安装包后先校验完整性。官方渠道会给出哈希值用sha256sum比对一下尤其是通过多次中转传输的大包损坏了会很隐蔽sha256sum fmw_14.1.1.0.0_wls_lite_generic.jar把安装包放在/home/weblogic/soft/这类临时目录别放在安装目标目录下面安装过程中它会遍历目录容易产生干扰。同时把安装日志和响应文件也放到这个目录方便一次性打包归档。4.2 wls.rsp 与 oraInst.loc 两份文件先看 inventory 定位文件很多人漏了它直接导致报无法定位中央清单cat /home/weblogic/oraInst.loc EOF inventory_loc/u01/app/oraInventory inst_groupweblogic EOFinst_group必须是一个真实存在的组。我见过有人从别人的教程里抄了inst_groupoinstall但自己机器上根本没建oinstall组结果安装报错指定的组不存在。你用 weblogic 用户装就写 weblogic 组别照抄。然后是响应文件cat /home/weblogic/wls.rsp EOF [ENGINE] Response File Version1.0.0.0.0 [GENERIC] ORACLE_HOME/u01/app/oracle/product/14.1.1/wls INSTALL_TYPEWebLogic Server MYORACLESUPPORT_USERNAME MYORACLESUPPORT_PASSWORD DECLINE_SECURITY_UPDATEStrue SECURITY_UPDATES_VIA_MYORACLESUPPORTfalse PROXY_HOST PROXY_PORT PROXY_USER PROXY_PWD COLLECTOR_SUPPORTHUB_URL EOF逐行说一下关键字段。ORACLE_HOME是产品安装目录装之前务必确保这个目录是空的安装程序对已有内容的目录会直接拒绝报目录不为空。INSTALL_TYPE要和安装包匹配Lite 包写WebLogic Server。DECLINE_SECURITY_UPDATEStrue表示不接收安全更新通知内网环境基本都是这样注意如果你写false安装程序可能会去尝试连安全更新服务器网络受限环境下会卡很久然后超时。4.3 执行安装与日志判读命令本身不复杂但参数一个都不能少cd /home/weblogic /u01/app/jdk/jdk-11.0.20/bin/java -jar soft/fmw_14.1.1.0.0_wls_lite_generic.jar \ -silent \ -responseFile /home/weblogic/wls.rsp \ -invPtrLoc /home/weblogic/oraInst.loc \ -jreLoc /u01/app/jdk/jdk-11.0.20 \ -log /home/weblogic/install.log-jreLoc是 14.1.1 新增的必填项因为安装程序本身不再捆绑 JRE你必须告诉它用哪个 JDK 来跑。这个参数如果指向一个不受支持的 JDK安装会在最开始几秒就退出。-invPtrLoc指向你刚才写的 inventory 文件注意是完整路径而不是目录。安装过程大概几分钟期间不要关闭终端。完成后检查退出码和日志尾部echo $? tail -50 /home/weblogic/install.log日志里出现The installation of Oracle Fusion Middleware 14.1.1.0.0 WebLogic Server was successful这类信息基本就成功了。同时验证目录ls /u01/app/oracle/product/14.1.1/wls/wlserver/common/bin/看到wlst.sh、config.sh、commEnv.sh这些脚本说明产品目录完整。安装完的 ORACLE_HOME 属主应该是 weblogic 用户如果发现部分文件属于 root说明你安装时用了错误的用户后面建域会报权限错。5. 用 WLST 建域脚本比向导快得多域不是装出来的是建出来的。图形配置向导在无桌面环境里没法用所以我们直接用 WLST 的离线脚本模式。5.1 建域脚本模板新建/home/weblogic/create_domain.pydomain_home /u01/app/weblogic/domains/base_domain template /u01/app/oracle/product/14.1.1/wls/wlserver/common/templates/wls/wls.jar readTemplate(template) cd(/Servers/AdminServer) set(ListenAddress, 0.0.0.0) set(ListenPort, 7001) cd(/Security/base_domain/User/weblogic) cmo.setPassword(Weblogic2024) setOption(DomainName, base_domain) setOption(OverwriteDomain, true) setOption(ServerStartMode, prod) writeDomain(domain_home) closeTemplate() exit()模板路径要确认实际存在ls $ORACLE_HOME/wlserver/common/templates/wls/看一下wls.jar在不在。如果你用的是 Lite 安装包模板同样在这个位置。ListenAddress设成0.0.0.0表示监听所有网卡多网卡机器上如果你只想绑业务网段就写具体 IP。端口 7001 是约定俗成的管理端口可以改但要和防火墙策略一起改。ServerStartMode设成prod很重要。它决定了域用生产模式启动参数、日志级别、以及是否开启开发模式下的自动部署扫描。开发模式下启动快但性能和安全性都不适合线上别图省事一直用 dev。注意如果脚本报cd(/Security/base_domain/User/weblogic)找不到路径说明你用的模板结构不同。可以在脚本里先cd(/)再ls()打印结构确认 security realm 的真实路径不同小版本模板结构偶有差异。执行建域/u01/app/oracle/product/14.1.1/wls/oracle_common/common/bin/wlst.sh /home/weblogic/create_domain.py跑完ls /u01/app/weblogic/domains/base_domain/应该有bin、config、servers、security、init-info这些目录。5.2 启动 AdminServer 与验证启动脚本在域的bin目录。建议用 nohup 方式放到后台避免 SSH 断开把进程带走cd /u01/app/weblogic/domains/base_domain nohup ./startWebLogic.sh /dev/null 21 然后盯日志tail -f servers/AdminServer/logs/AdminServer.log正常启动会依次出现状态变化Notice WebLogicServer BEA-000365 Server state changed to STARTING Notice WebLogicServer BEA-000365 Server state changed to ADMIN Notice WebLogicServer BEA-000365 Server state changed to RUNNING Notice WebLogicServer BEA-000360 The server started in RUNNING mode.看到RUNNING mode就说明起来了。浏览器访问http://服务器IP:7001/console用weblogic和你脚本里设的口令登录。首次启动会明显慢一些因为要生成安全相关的密钥文件、初始化配置缓存几十秒到两分钟都正常。这时候千万别急着 CtrlC 重来反复半途中断可能留下不完整的安全文件反而更难处理。5.3 boot.properties 免密启动每次启动都提示输用户名密码在生产上没法接受尤其是做成开机自启的时候。做法是在域根目录下放一份boot.propertiescat /u01/app/weblogic/domains/base_domain/security/boot.properties EOF usernameweblogic passwordWeblogic2024 EOF chmod 600 /u01/app/weblogic/domains/base_domain/security/boot.properties chown weblogic:weblogic /u01/app/weblogic/domains/base_domain/security/boot.properties第一次启动之后WebLogic 会把这份文件里的明文口令加密替换掉之后文件里就是密文。所以写完不要反复覆盖也不要把它提交到任何代码仓库。权限必须收紧到 600否则同机器上的其他账号能直接读到管理口令。6. 踩坑速查安装与启动阶段的高频故障这一节是我这几年积攒下来的问题清单基本覆盖了新手会遇到的九成报错。建议收藏出问题先照着表比对现象。6.1 安装阶段现象可能原因处理方式提示 JRE 版本不受支持-jreLoc指向 JDK 17/21或 PATH 里有别的 java换成 JDK 8u241 或 11.0.7并确认which java路径一致无法定位中央清单漏了-invPtrLoc或 oraInst.loc 路径写成目录参数必须指向文件全路径文件内容两行不能有空格错误指定的组不存在inst_group写了一个系统里没有的组改成 weblogic 组或先groupadd建组安装目录不为空ORACLE_HOME之前装过东西或有残留换目录或清空后重装不要用rm -rf误删系统路径安装过程中途退出日志无明确错误/tmp空间不足df -h /tmp确认 1GB 以上必要时指定临时目录日志中文全是问号系统 locale 不是 UTF-8安装前export LANGen_US.UTF-8安装阶段的错误普遍早发现早解决因为它一失败就退出不会留下半成品状态。真正麻烦的是启动阶段服务能起来但起不对还得靠日志逐行啃。6.2 启动阶段启动阶段的排错思路我总结成一句话先看日志首尾再看端口和进程最后看资源。日志开头会打出实际的 JDK 路径、域路径、类路径先确认这些和你预期一致。很多人复用别人做好的域结果setDomainEnv.sh里硬编码了JAVA_HOME跟你系统上的 JDK 路径不一致启动直接失败。进程和端口检查ps -ef | grep -i weblogic | grep -v grep ss -lntp | grep 7001如果进程在但端口没监听通常是安全文件初始化失败或者配置里地址绑错。如果端口被别的进程占了ss会显示出来换个端口或者停掉冲突进程。启动极慢、几分钟才起来八成是主机名解析问题回到第 2.1 节检查/etc/hosts。启动报Too many open files是句柄数限制回到第 2.3 节调limits.conf并在 systemd 里同步设置。启动报内存不足是堆参数给太小用free -m看物理内存余量再调setDomainEnv.sh里的USER_MEM_ARGS。还有一个特别隐蔽的问题服务启动后立刻退出日志最后一行是Server state changed to SHUTDOWN这种情况先去servers/AdminServer/logs/下看有没有.out后缀的文件标准输出里的异常堆栈往往只在那个文件里主日志看不到。6.3 DemoIdentity.jks 口令与证书新建的域默认使用演示身份库配置域目录的security下会有DemoIdentity.jks、DemoTrust.jks这些文件。它们对应的默认口令是官方文档里公开的固定值身份库DemoIdentity.jks的口令是DemoIdentityKeyStorePassPhrase信任库DemoTrust.jks的口令是DemoTrustKeyStorePassPhrase。我把这两个值写出来是因为经常有人在脚本里需要读写这两个库时不知道口令卡半天。但你要清楚一件事这些口令是公开的等于没有保密性只适合本地开发和功能验证。生产环境必须换成自己签发的证书库把身份库和信任库替换掉并把默认口令改成强口令同时在控制台里把密钥库配置从演示模式切到自定义模式。# 生成一份自签名密钥库示例生产建议用正式 CA 签发 /u01/app/jdk/jdk-11.0.20/bin/keytool -genkeypair \ -alias wls-prod \ -keyalg RSA -keysize 2048 \ -validity 3650 \ -keystore /u01/app/weblogic/domains/base_domain/security/ProdIdentity.jks \ -storepass StrongPass2024 \ -dname CNwls-node01.example.com, OUMiddleware, OExample, LBeijing, STBeijing, CCN替换证书之后控制台访问地址从http变成https端口一般用 7002具体在控制台里配。这一步做完安全检查那一关才算过。7. 上线前还得补几刀装完能启动只是及格线要真正放到生产还得补几件事。这节说的都是上线检查表上必查的项目缺一项都可能被安全扫描或者压测打回。7.1 换掉演示证书与默认口令除了上一节说的证书管理口令也要改。我们建域时用的是一个临时口令上生产前应该在控制台里改掉并且符合复杂度要求。同时确认boot.properties权限是 600、属主是运行用户。另外检查一下域目录下的config.xml权限这个文件里包含配置信息不应该对所有人可读。还有一个容易漏的点安装目录里那些出厂自带的示例应用、示例数据源生产上应该清理掉。它们本身可能带有已知的安全弱点而且会占资源。系统自带的部分示例应用可以在控制台里卸载卸载前确认没有业务依赖。7.2 systemd 托管与日志轮转手工nohup启动在测试环境够用生产必须交给 systemd 或同类服务管理器才能做到开机自启、异常拉起、日志统一收集。[Unit] DescriptionOracle WebLogic AdminServer - base_domain Afternetwork-online.target Wantsnetwork-online.target [Service] Typesimple Userweblogic Groupweblogic EnvironmentJAVA_HOME/u01/app/jdk/jdk-11.0.20 EnvironmentDOMAIN_HOME/u01/app/weblogic/domains/base_domain ExecStart/u01/app/weblogic/domains/base_domain/bin/startWebLogic.sh ExecStop/u01/app/weblogic/domains/base_domain/bin/stopWebLogic.sh Restarton-failure RestartSec30 LimitNOFILE65536 TimeoutStartSec600 [Install] WantedBymulti-user.target这里有个坑我踩过Type千万不要写forking。WebLogic 的startWebLogic.sh最终是前台阻塞运行的systemd 用 forking 模式下会误判主进程已退出反复重启。用simple就对了。另外LimitNOFILE必须写因为 systemd 不读limits.conf这就是前面提到的那个手工启动好、服务启动挂的根源。日志轮转也得配上。WebLogic 自己支持按大小轮转在控制台里设置RotationType和FileCount或者用系统层面的日志切分工具避免长时间运行把磁盘写满。我建议两者都配应用日志用 WebLogic 自己的轮转策略标准输出用系统工具轮转。7.3 内存与 JVM 参数调整默认域的内存参数偏保守跑真实业务容易频繁 Full GC。调参的入口是域目录的bin/setDomainEnv.sh找USER_MEM_ARGS那一行。我一般按 4 核 8G 的机器给 AdminServer 配export USER_MEM_ARGS-Xms1024m -Xmx1024m -XX:MetaspaceSize256m -XX:MaxMetaspaceSize512m -Djava.security.egdfile:/dev/./urandom -Dfile.encodingUTF-8-Xms和-Xmx设成一样是常规做法避免堆动态伸缩带来的抖动。MetaspaceSize要显式给不然后期类加载多了会触发不必要的 GC。-Djava.security.egdfile:/dev/./urandom这一条看着奇怪那个多出来的点号不是笔误JDK 在某些版本上对/dev/urandom的参数解析有特殊处理写成/dev/./urandom才被正确识别。它的作用是避免启动时从/dev/random取随机数导致长时间阻塞虚拟机环境下熵池小的时候这个问题特别明显会表现为启动卡住好几分钟。调完参数重启验证su - weblogic -c /u01/app/weblogic/domains/base_domain/bin/stopWebLogic.sh systemctl daemon-reload systemctl restart wls-admin free -m tail -30 /u01/app/weblogic/domains/base_domain/servers/AdminServer/logs/AdminServer.log用ps -ef | grep java确认堆参数真的生效了别改完文件发现脚本里条件判断把USER_MEM_ARGS又覆盖回默认值这种情况在不同模板生成的域里都可能出现。上面这套流程我在几台不同发行版的机器上走过包括 CentOS 系和国产化改造过的系统。国产系统上遇到最多的是 JDK 版本和企业内网 yum 源的问题如果系统自带的 JDK 版本太老就按第 3 节的办法自己装一份独立的 JDK不要动系统自带的那个也不要用包管理器去替换避免影响机器上其他依赖 Java 的服务。另外提一句这台机器如果还要跑别的中间件规划端口时提前把 7001、7002 以及后面受管服务器要用的端口段预留出来别等上线前才发现冲突。这个内容后续还能继续往下扩比如拆成集群部署、受管服务器和 NodeManager 那部分那是另一个量级的内容了先把单机这套跑通后面再往上加会稳得多。