LinuxWindows环境下Nacos3.1.0详细安装部署指南:从零到生产就绪

news/2025/10/2 14:53:31/文章来源:https://www.cnblogs.com/lxjshuju/p/19123633

前言:为什么这篇指南值得你收藏?

作为一名资深后端开发者,我最近在CentOS 7服务器上部署Nacos时,发现网络上虽然有很多安装教程,但大多存在版本过时步骤残缺关键细节缺失的问题。特别是在Nacos 3.0+版本引入强制鉴权机制后,许多旧教程已不再适用。


知识预热:关于Nacos 3.0+的安全升级

在开始具体安装步骤前,有必要先了解一个重要变化:Nacos从3.0.0版本开始默认启用控制台鉴权功能。这意味着如果你直接按照旧教程安装,一定会遇到三个关键的鉴权配置问题:

# 安装过程中必然会遇到的三个"拦路虎":
nacos.core.auth.plugin.nacos.token.secret.key is missing
nacos.core.auth.server.identity.key is missing
nacos.core.auth.server.identity.value is missing

不用担心,本文详细讲解这三个配置的深层含义和正确设置方法。

接下来,让我们开始真正的安装之旅吧!


系统要求

        注意:        以下是部署Nacos Server的最小系统要求。如果您的环境无法满足系统最小要求,可能会导致无法部署和启动Nacos Server。

JDK/JRE17及以上
CPU1核及以上,支持64位CPU
内存2G及以上
硬盘无最小要求,根据保留日志自行调整
操作系统Linux, Mac OS X, Windows

        Nacos Server 只维护最新的GA 发布版本,截止作者安装时最新版本是 3.1.0。最新版本向下兼容 1.0.0 版本。

1. 预备环境准备

Nacos 依赖 Java 环境来运行,请确保是在以下版本环境中安装使用:

  1. 64 bit OS,支持 Linux/Unix/Mac/Windows,推荐选用 Linux/Unix/Mac。
  2. 64 bit JDK 17+;下载 & 配置。

2. 下载安装包

你可以通过Nacos官网网站及Github两种方式来获取 Nacos 发行包 。

官网:

进入Nacos官网版本下载页面,选择 稳定版本, 然后点击二进制包下载列中的${nacos.version}.zip进行下载。

注意:有时大量用户同时进行下载时,可能会遇到下载限流失败的情况,若出现下载限流失败,请稍等后重试,或采用从 Github 下载方式

Github:

进入Nacos Github 的 最新稳定版本 ,选择需要下载的Nacos版本,在Assets中点击下载 nacos-server-$version.zip 包。

3. 解压缩Nacos 发行包

 unzip nacos-server-$version.zip# 或者 tar -xvf nacos-server-$version.tar.gz

4.⚙️ 配置与启动Nacos

单机模式启动(推荐初学者)

对于测试和学习,使用内嵌数据库的单机模式最简单

进入启动脚本目录,以单机模式启动

cd /usr/local/nacos/bin
# Linux/Unix/Mac
#启动命令(standalone代表着单机模式运行,非集群模式):
sh startup.sh -m standalone
#如果您使用的是ubuntu系统,或者运行脚本报错提示[[符号找不到,可尝试如下运行:
bash startup.sh -m standalone
###Windows启动如下:
startup.cmd -m standalone

随后启动程序会提示您输入3个鉴权相关配置(Nacos从3.0.0版本开始默认启用控制台鉴权功能,因此如下3个鉴权相关配置必须填写)如下所示:

`nacos.core.auth.plugin.nacos.token.secret.key` is missing, please set with Base64 string: ${your_input_token_secret_key}
nacos.core.auth.plugin.nacos.token.secret.key` Updated:
----------------------------------
`nacos.core.auth.server.identity.key` is missing, please set: ${your_input_server_identity_key}
`nacos.core.auth.server.identity.key` Updated:
----------------------------------
`nacos.core.auth.server.identity.value` is missing, please set: ${your_input_server_identity_key}
`nacos.core.auth.server.identity.value` Updated:
----------------------------------

三个鉴权配置详解

1. nacos.core.auth.plugin.nacos.token.secret.key

含义:用于生成JWT token的密钥种子

  • 这是最核心的安全密钥,用于加密用户token

  • 必须是Base64编码的字符串(至少32字符)

  • 生产环境必须设置强密码,且定期更换

设置方法

# 生成一个安全的Base64密钥(推荐)
openssl rand -base64 32
# 输出示例:aBcDeFgHiJkLmNoPqRsTuVwXyZ0123456789abcdefghij==
# 或者使用在线Base64生成工具
2. nacos.core.auth.server.identity.key

含义:服务器身份标识的键名

  • 用于标识Nacos服务器自身的身份

  • 通常使用默认值即可,用于内部服务识别

推荐设置

server.identity
# 或者保持默认(如果系统提示默认值)
3. nacos.core.auth.server.identity.value

含义:服务器身份标识的值

  • 与上面的key对应,是服务器的具体身份值

  • 需要保持唯一性和安全性

推荐设置

# 生成一个唯一标识(推荐)
openssl rand -hex 16
# 输出示例:a1b2c3d4e5f67890123456789abcdef0
# 或者使用服务器IP+时间戳
your_server_ip_timestamp

完整的设置流程

方法一:启动时交互式设置(您遇到的情况)

当首次启动时,系统会提示输入这三个值:

# 启动Nacos
sh startup.sh -m standalone
# 系统会依次提示:
# 1. 输入token secret key(Base64格式)
# 2. 输入server identity key
# 3. 输入server identity value
方法二:预先配置文件(推荐)

更安全的方式是预先在配置文件中设置:

# 编辑Nacos配置文件
vi /root/wp/nacos/nacos/conf/application.properties

在文件末尾添加:

# JWT Token密钥(使用生成的Base64字符串)
nacos.core.auth.plugin.nacos.token.secret.key=你生成的Base64密钥
# 服务器身份标识
nacos.core.auth.server.identity.key=server.identity
nacos.core.auth.server.identity.value=你生成的唯一标识值
# 其他相关安全配置(可选但推荐)
nacos.core.auth.enable.userAgentAuthWhite=false
nacos.core.auth.system.type=nacos

5、配置MySQL数据库持久化

        如果你希望将配置信息等数据持久化到MySQL,避免重启Nacos后数据丢失,需要进行以下配置:

  1. 初始化数据库:创建名为nacos的数据库,并执行Nacos配置目录下的SQL脚本(/usr/local/nacos/conf/mysql-schema.sqlnacos-mysql.sql)来初始化表结构。

  2. 修改配置文件:编辑Nacos的配置文件 /usr/local/nacos/conf/application.properties,找到数据库连接部分并修改:

# 启用MySQL数据库
spring.datasource.platform=mysql
# 数据库实例数量
db.num=1
# 配置第一个数据库的连接信息,请替换为你的实际信息
db.url.0=jdbc:mysql://127.0.0.1:3306/nacos?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=UTC&allowPublicKeyRetrieval=true
db.user.0=你的mysql用户名
db.password.0=你的mysql密码

修改配置后的正确操作步骤

# 1. 首先停止当前运行的Nacos服务(如果正在运行)
sh /usr/local/nacos/bin/shutdown.sh
# 2. 等待几秒钟确保服务完全停止
# 3. 重新启动Nacos(无需再加 -m standalone 参数)
sh /usr/local/nacos/bin/startup.sh

⚠️ 特别注意:从嵌入式数据库切换到MySQL后:

  • 之前在内置数据库中创建的配置数据不会自动迁移到MySQL

  • 如果需要保留原有数据,需要手动导出导入

  • 首次切换到MySQL后,Nacos会使用空的数据库启动

重启是必须的,因为Nacos只在启动时加载application.properties配置文件中的数据库连接信息。

6.配置systemctl开机自启动

创建Systemctl服务文件

1. 创建服务文件
sudo vi /etc/systemd/system/nacos.service
2. 编辑服务配置内容
[Unit]
Description=Nacos Service
Documentation=https://nacos.io/
After=network.target network-online.target
Wants=network-online.target
[Service]
Type=forking
# 根据您的实际路径修改
Environment="JAVA_HOME=/usr/local/jdk-17.0.2"
Environment="JAVA_OPT=-Xms512m -Xmx512m -Xmn256m"
# Nacos安装目录
WorkingDirectory=/root/wp/nacos/nacos/bin
# 启动命令 - 重要:明确指定单机模式
ExecStart=/bin/sh startup.sh -m standalone
ExecStop=/bin/sh shutdown.sh
Restart=on-failure
RestartSec=30
# 用户和组,根据您的实际情况设置
User=root
Group=root
[Install]
WantedBy=multi-user.target

⚙️ 配置说明和注意事项

关键配置项解释:

  • Type=forking: Nacos启动脚本会fork子进程

  • Environment: 设置Java环境变量

  • WorkingDirectory: 设置为bin目录,因为启动脚本需要在该目录执行

  • ExecStart: 明确指定单机模式 -m standalone

  • User/Group: 根据您的安全需求设置

    3. 重新加载systemd配置
    sudo systemctl daemon-reload

    管理Nacos服务

    #启动Nacos服务
    sudo systemctl start nacos
    #停止Nacos服务
    sudo systemctl stop nacos
    #查看服务状态
    sudo systemctl status nacos
    #设置开机自启动
    sudo systemctl enable nacos
    #禁用开机自启动
    sudo systemctl disable nacos
    #重启服务
    sudo systemctl restart nacos
    #查看服务日志
    sudo journalctl -u nacos -f

    高级配置选项

    更详细的环境配置:

    [Unit]
    Description=Nacos Service
    Documentation=https://nacos.io/
    After=network.target mysqld.service
    Wants=network-online.target
    [Service]
    Type=forking
    Environment="JAVA_HOME=/usr/local/jdk-17.0.2"
    Environment="JAVA_OPT=-Xms512m -Xmx512m -Xmn256m -Dnacos.standalone=true"
    Environment="NACOS_HOME=/root/wp/nacos/nacos"
    WorkingDirectory=/root/wp/nacos/nacos/bin
    ExecStartPre=/bin/sleep 5
    ExecStart=/bin/sh startup.sh -m standalone
    ExecStop=/bin/sh shutdown.sh
    Restart=always
    RestartSec=10
    StartLimitInterval=60s
    StartLimitBurst=3
    User=root
    Group=root
    # 日志配置
    StandardOutput=journal
    StandardError=journal
    [Install]
    WantedBy=multi-user.target

    7、 验证访问与后续步骤

    1. 访问控制台:打开本地浏览器,输入 http://<你的CentOS服务器IP地址>:8080。如果看到登录页面,说明安装成功。

    2. 登录:使用默认用户名 nacos 和密码 nacos 登录。

    3. 安全提醒:首次登录后,强烈建议立即在管理控制台修改默认密码,并考虑配置鉴权规则,以保障系统安全。

    本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/925014.shtml

    如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

    相关文章

    商务网站创建流程是什么宿州哪家做网站不做

    1月16号 MySQL 官方发布 8.3 创新版 和 8.0.36 长期支持版本 (该版本 没有新增功能&#xff0c;更多是修复bug )&#xff0c;本文基于 官方文档 说一下 8.3 版本带来的变化。 一 增加的特性 1.1 GTID_NEXT 支持增加 TAG 选项。 之前的版本中 GTID_NEXTUUID:number &#xff…

    哪个网站有律师做的案件有没有资源免费的

    应该是挺简单的代码, 记录一下分享. 首先最直接的想法就是使用循环, 用局部变量记录已选的checkbox, 达到最大值就将余下的checkbox都禁止选择, 例如以下: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" ""> <html xmlns"…

    交通建设集团网站但无法选择(select)wordpress数据库.

    文章目录 JAVA13概述语法层面特性switch表达式(预览)文本块(预览) API层次特性重新实现旧版套接字API 其他变化ZGC取消未使用的内存增加废弃和移除增加项移除项废弃项 JAVA13概述 2019年9月17日&#xff0c;国际知名的OpenJDK开源社区发布了Java编程语言环境的最新版本OpenJDK…

    JAVA SE 基础语法 —— A / 初识 - 指南

    JAVA SE 基础语法 —— A / 初识 - 指南pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Mo…

    2025年掘进机厂家权威推荐榜:实力品牌与技术创新深度解析

    2025年掘进机厂家权威推荐榜:实力品牌与技术创新深度解析在基础设施建设与矿山开采行业高速发展的今天,掘进机作为核心工程装备,其性能优劣直接关系到工程进度与施工安全。随着技术的不断革新,掘进机市场呈现出智能…

    2025机械加工供货厂家权威口碑排行:实力与服务深度解析!

    2025机械加工供货厂家权威口碑排行:实力与服务深度解析!行业背景在当今制造业蓬勃发展的大背景下,机械加工行业作为制造业的核心支柱之一,扮演着至关重要的角色。随着科技的不断进步和市场需求的日益多样化,机械加…

    NOIP 集训日记 2.0

    yuanshen,qidong!111

    重庆网站seo搜索引擎优化常用的搜索引擎有哪些?

    我们是否充分意识到云端所面临的网络安全威胁&#xff1f; 在当今互联互通的世界中&#xff0c;维护安全的环境至关重要。云的出现扩大了潜在威胁的范围&#xff0c;因为它催生了机器身份&#xff08;称为非人类身份 (NHI)&#xff09;及其秘密。随着组织越来越多地转向云原生…

    2025舒适轮胎权威推荐榜:静音科技与驾乘体验口碑之选

    2025舒适轮胎权威推荐榜:静音科技与驾乘体验口碑之选随着汽车工业的持续发展和消费者对驾乘体验要求的不断提升,舒适轮胎市场正迎来新一轮技术革新与产品升级。根据行业数据显示,2024年全球舒适轮胎市场规模已突破千…

    2025七水硫酸锌厂家权威推荐榜:优质供应与专业定制首选

    2025七水硫酸锌厂家权威推荐榜:优质供应与专业定制首选随着现代农业和工业的快速发展,七水硫酸锌作为重要的微量元素肥料和工业原料,其市场需求持续增长。在环保要求日益严格、产品质量标准不断提升的背景下,选择合…

    深圳网站建设公司权威推荐榜:专业定制与创新设计口碑之选

    深圳网站建设公司权威推荐榜:专业定制与创新设计口碑之选在数字化转型浪潮席卷各行各业的今天,企业网站已从简单的信息展示窗口升级为品牌形象展示、业务拓展和客户服务的重要平台。作为中国科技创新前沿阵地的深圳,…

    UV面光源实力厂家权威推荐:专业制造与品质保障口碑之选

    UV面光源实力厂家权威推荐:专业制造与品质保障口碑之选在精密制造、电子组装、医疗设备等高端工业领域,UV面光源作为关键固化设备,其性能优劣直接关系到产品质量和生产效率。随着产业升级和技术进步,市场对UV面光源…

    郴州网站建设流程什么是工业互联网

    在本文中&#xff0c;我们将介绍 10 多个最好的 IntelliJ IDEA 插件&#xff0c;以提高工作效率并在更短的时间内完成更多工作。如果将这些插件合并到您的工作流程中&#xff0c;您将能够更有效地应对开发挑战。 1、TabNine TabNine 是一个 IntelliJ IDEA 插件&#xff0c;可…

    2025微弧氧化实力厂家推荐:专业表面处理技术深度解析

    2025微弧氧化实力厂家推荐:专业表面处理技术深度解析在工业制造领域,表面处理技术一直是提升产品性能和使用寿命的关键环节。微弧氧化作为一种先进的表面处理技术,近年来在航空航天、汽车制造、电子设备等领域展现出…

    网站建设类论文格式定制一款软件需要多少钱

    背景 在flink基于事件的时间处理中&#xff0c;水位线记录的生成是一个很重要的环节&#xff0c;本文就来记录下几种水位线记录的生成方式的其中一种&#xff1a;周期性水位线生成器 周期性水位线生成器 1.1 BoundedOutOfOrdernessTimeStampExtractor 他会接收一个表示最大延…

    实用指南:Ansible Playbook:自动化配置管理的利器

    实用指南:Ansible Playbook:自动化配置管理的利器2025-10-02 14:33 tlnshuju 阅读(0) 评论(0) 收藏 举报pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; disp…

    灵芝产品网站建设方案旅行社的网站建设

    归并思想 先拆分后合并 也就是分治&#xff1b; 拆分合并思想具体讲解可以参考以下链接&#xff1a; b站链接&#xff1a; 点这里&#xff1a;b站归并思想具体讲解 看代码 代码中的例子参考上图和下图 public class MergeSort {//一、拆分部分public static void split(i…

    网站建设相对路径电话网站域名到期

    前言 在授权码模式的前后端分离的那篇文章中使用了Redis来保存用户的认证信息&#xff0c;在Redis的配置文件中配置的值序列化器是默认的Jdk序列化器&#xff0c;虽然这样也可以使用&#xff0c;但是在Redis客户端中查看时是乱码的(看起来是)&#xff0c;如果切换为Jackson提供…

    英语_阅读_Always-on world_待读

    In todays always-on world, work doesnt end when you leave the office.在当今这个永不停歇的世界里,工作并不会在你离开办公室时就结束。 Instead, emails, texts and notifications often follow us home, demand…

    网站子站建设合同样本外贸电商平台都有哪些

    原文网址&#xff1a;http://www.cnblogs.com/hanhuibing/articles/5680616.html 基于Solr的空间搜索 如果需要对带经纬度的数据进行检索&#xff0c;比如查找当前所在位置附近1000米的酒店&#xff0c;一种简单的方法就是&#xff1a;获取数据库中的所有酒店数据&#xff0c;…