nacos sh startup.sh -d server命令详解
基于提供的 startup.sh 脚本的内容,分析一下当执行 sh startup.sh -d server 时,-d server 的作用和含义:
脚本中 -d 参数的逻辑
- 在
startup.sh中,通过getopts解析脚本参数,其中-d参数用于设置DEPLOYMENT变量。 DEPLOYMENT的默认值:
脚本中定义了 DEPLOYMENT="merged",表示没有指定 -d 参数时,默认的部署模式是 "merged",即包括服务端 (server) 和控制台 (console) 的联合部署模式。
-d server的作用:
当使用 -d server 时,将 DEPLOYMENT 的值设置为 server,脚本内的后续逻辑会使用这个值,并通过传递给 JVM 的 JAVA_OPT 参数配置 Nacos 的部署模式。
DEPLOYMENT 的实际影响
DEPLOYMENT 的值会影响最终传递给 JVM 的参数:
- 在脚本中设置:
- 如果
-d server被传递,则最终的 JVM 参数会包含:
- 如果
- 在 Nacos 服务启动过程中,应用会根据
nacos.deployment.type的值决定实际的功能模块加载。- 值为
server时,Nacos 仅启动核心的服务端模块。 - 值为
console时,Nacos 仅启动管理控制台(UI 部分)。 - 值为
merged时,Nacos 会同时启动服务端和控制台。
- 值为
从配置文件角度分析影响
以下配置项与 -d server 参数的动态行为存在相关性:
nacos.deployment.type:- 配置中默认值为
"merged",由配置文件或默认脚本驱动。 - 使用
-d server时,动态覆盖此属性为server,从而改变实际的启动模式。
- 配置中默认值为
- 服务端功能是否保留:
nacos.server.main.port=8878,服务端的主端口仍然有效。- 服务端功能(包括服务注册、配置管理)仍然运行。
- 控制台功能是否禁用:
- 如果
nacos.deployment.type=server,配置文件中的nacos.console.port(控制台端口)和相关控制台配置不会被加载。 - UI 页面和基于控制台的管理操作将不可用。
- 如果
脚本的处理逻辑
基于脚本的结构,以下是对 -d server 的具体分析:
- 默认模式:
- 如果没有指定
-d参数,则DEPLOYMENT=merged。此时服务端和控制台都启动。
- 如果没有指定
- 仅服务端模式:
- 传递
-d server时,DEPLOYMENT=server,脚本会通过JAVA_OPT设置 JVM 的系统属性: - 在服务启动阶段,Nacos 会根据
nacos.deployment.type=server的值,跳过加载控制台模块。
- 传递
- 仅控制台模式:
- 如果传递
-d console,类似的逻辑会设置DEPLOYMENT=console,启动时仅运行控制台。
- 如果传递
启动命令行为的总结
执行 sh startup.sh -d server 时:
- 参数解析:
-d server会设置DEPLOYMENT=server。
- 部署模式设置:
- 由
JAVA_OPT将nacos.deployment.type=server传递给 JVM。
- 由
- 运行逻辑:
- Nacos 仅加载服务端功能模块,控制台相关功能被禁用。
- 适用场景:
- 主要用于服务端的独立部署场景,例如在生产环境中运行一个核心的服务注册中心。
- 不需要运行管理 UI(控制台)。
分析依据总结
结合脚本和配置文件:
- 配置文件中默认值:
nacos.deployment.type=merged,表示默认同时启动服务端和控制台。 startup.sh脚本动态参数**:通过-d参数覆盖默认值,启动模式可以切换为server、console或merged。- 仅服务端模式:执行
sh startup.sh -d server时,禁用控制台,仅运行服务端模块。

关注公众号:程序新视界,一个让你软实力、硬技术同步提升的平台
除非注明,否则均为程序新视界原创文章,转载必须以链接形式标明本文链接
本文链接:http://choupangxia.cn/2025/09/18/nacos-sh-startup-sh-d-server-command/