基于提供的 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 的参数:

    1. 在脚本中设置:
      1. 如果 -d server 被传递,则最终的 JVM 参数会包含:
      2. 在 Nacos 服务启动过程中,应用会根据 nacos.deployment.type 的值决定实际的功能模块加载。
        1. 值为 server 时,Nacos 仅启动核心的服务端模块。
        2. 值为 console 时,Nacos 仅启动管理控制台(UI 部分)。
        3. 值为 merged 时,Nacos 会同时启动服务端和控制台。

      从配置文件角度分析影响

      以下配置项与 -d server 参数的动态行为存在相关性:

      1. nacos.deployment.type
        1. 配置中默认值为 "merged",由配置文件或默认脚本驱动。
        2. 使用 -d server 时,动态覆盖此属性为 server,从而改变实际的启动模式。
      2. 服务端功能是否保留:
        1. nacos.server.main.port=8878,服务端的主端口仍然有效。
        2. 服务端功能(包括服务注册、配置管理)仍然运行。
      3. 控制台功能是否禁用:
        1. 如果 nacos.deployment.type=server,配置文件中的 nacos.console.port(控制台端口)和相关控制台配置不会被加载。
        2. UI 页面和基于控制台的管理操作将不可用。

      脚本的处理逻辑

      基于脚本的结构,以下是对 -d server 的具体分析:

      1. 默认模式:
        1. 如果没有指定 -d 参数,则 DEPLOYMENT=merged。此时服务端和控制台都启动。
      2. 仅服务端模式:
        1. 传递 -d server 时,DEPLOYMENT=server,脚本会通过 JAVA_OPT 设置 JVM 的系统属性:
          • 在服务启动阶段,Nacos 会根据 nacos.deployment.type=server 的值,跳过加载控制台模块。
        2. 仅控制台模式:
          1. 如果传递 -d console,类似的逻辑会设置 DEPLOYMENT=console,启动时仅运行控制台。

        启动命令行为的总结

        执行 sh startup.sh -d server 时:

        1. 参数解析:
          1. -d server 会设置 DEPLOYMENT=server
        2. 部署模式设置:
          1. JAVA_OPTnacos.deployment.type=server 传递给 JVM。
        3. 运行逻辑:
          1. Nacos 仅加载服务端功能模块,控制台相关功能被禁用。
        4. 适用场景:
          1. 主要用于服务端的独立部署场景,例如在生产环境中运行一个核心的服务注册中心。
          2. 不需要运行管理 UI(控制台)。

        分析依据总结

        结合脚本和配置文件:

        • 配置文件中默认值nacos.deployment.type=merged,表示默认同时启动服务端和控制台。
        • startup.sh 脚本动态参数**:通过 -d 参数覆盖默认值,启动模式可以切换为 serverconsolemerged
        • 仅服务端模式:执行 sh startup.sh -d server 时,禁用控制台,仅运行服务端模块。


        nacos sh startup.sh -d server命令详解插图

        关注公众号:程序新视界,一个让你软实力、硬技术同步提升的平台

        除非注明,否则均为程序新视界原创文章,转载必须以链接形式标明本文链接

        本文链接:http://folen.top/2025/09/18/nacos-sh-startup-sh-d-server-command/