news 2026/6/13 8:45:56

Nacos单机部署入门:避坑指南与实战

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Nacos单机部署入门:避坑指南与实战

第一次搭Nacos踩了5个坑:单机部署从入门到第一个服务注册


下载、解压、启动、报错,循环了4次

第一次搭 Nacos 是在一台刚装好的 CentOS 上。

wget https://github.com/alibaba/nacos/releases/download/2.3.2/nacos-server-2.3.2.zip unzip nacos-server-2.3.2.zip cd nacos/bin ./startup.sh -m standalone

然后盯着终端看了 10 秒。没有报错。访问http://localhost:8848/nacos——打不开。

查了 20 分钟,发现 JDK 版本是 1.8.0_144,而 Nacos 2.3 需要 1.8.0_292 以上。

从那以后我每次搭 Nacos 都走一套固定流程。这篇文章就是把这套流程写出来,附上每个环节最常踩的坑和解决办法。


第一步:环境检查

环境检查

JDK 版本

端口占用

内存

≥ 1.8.0_292
建议 JDK 17 用于 2.4+

8848 / 9848 / 9849
三个端口都不能被占

至少 2G 可用内存

启动前检查三个东西:JDK 版本、端口占用、可用内存。三个有一个不对,Nacos 都起不来。

JDK 版本对照

Nacos 版本最低 JDK推荐 JDK
1.x1.8.0_601.8.0_292+
2.0 ~ 2.21.8.0_29211
2.3+1.8.0_29217
# 确认 JDK 版本java-version# 如果不是高版本,安装 OpenJDK 17# Ubuntusudoaptinstallopenjdk-17-jdk-y# CentOSsudoyuminstalljava-17-openjdk-devel-y# Windows# 去 https://adoptium.net 下载 msi 安装包

Nacos 需要三个端口

8848 → HTTP 主端口(控制台 + OpenAPI) 9848 → gRPC 客户端通信(2.x 新增) 9849 → gRPC 集群节点间通信(2.x 新增)
# 检查端口是否被占用# Linux/Maclsof-i:8848lsof-i:9848# Windows PowerShellnetstat-ano|findstr"8848"

坑1:很多人只检查 8848,忘了 9848。8848 空闲但 9848 被占,Nacos 能启动但 gRPC 通道不通,2.x 客户端连不上。


第二步:下载 & 目录结构

# 最新稳定版(以 2.3.2 为例)wgethttps://github.com/alibaba/nacos/releases/download/2.3.2/nacos-server-2.3.2.zip# 解压unzipnacos-server-2.3.2.zip-d./nacos# 目录结构cdnacos tree-L2

解压后的关键目录:

nacos/ ├── bin/ │ ├── startup.sh # Linux/Mac 启动脚本 │ ├── startup.cmd # Windows 启动脚本 │ └── shutdown.sh # 停止脚本 ├── conf/ │ ├── application.properties # 核心配置文件 │ ├── cluster.conf.example # 集群配置示例 │ └── nacos-logback.xml # 日志配置 ├── target/ │ └── nacos-server.jar # 主 jar 包 └── logs/ # 启动后生成

第三步:启动 standalone 模式

Linux / Mac

# standalone 模式启动(不分集群,单机运行)cdnacos/bin ./startup.sh-mstandalone# 输出大致是这样的:# nacos is starting with standalone# nacos is starting,you can check the /opt/nacos/logs/start.out

坑2:-m standalone不写的话,默认以集群模式启动。单机跑集群模式会报错,因为找不到集群其他节点。

Windows

cd nacos\bin startup.cmd -m standalone

确认启动成功

# 方法1:看日志tail-fnacos/logs/start.out# 看到这一行就是启动成功了:# Nacos started successfully in stand alone mode.# 方法2:看端口netstat-tlnp|grep8848# 方法3:直接访问curlhttp://127.0.0.1:8848/nacos/v1/console/health/readiness# 返回 ok
Nacos ServerJVMstartup.shNacos ServerJVMstartup.sh./startup.sh -m standalone检查 JAVA_HOME设置 JVM 参数(默认 -Xms512m -Xmx512m -Xmn256m)启动 jar 包Spring Boot 初始化加载 application.properties初始化 Derby 数据库启动 HTTP(8848) + gRPC(9848) 端口启动完成

启动流程:Shell 脚本 → JVM 参数设置 → Spring Boot 初始化 → 内嵌 Derby 初始化 → 双端口监听。


第四步:访问控制台 & 注册第一个服务

打开浏览器访问http://localhost:8848/nacos

  • 默认账号:nacos
  • 默认密码:nacos

坑3:2.2+ 版本首次登录必须改密码。用默认密码登录后会出现修改密码的页面。记得把这个密码记下来。

用 Spring Boot 注册一个服务

<!-- pom.xml --><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId><version>2023.0.1.0</version></dependency>
# application.ymlspring:application:name:demo-servicecloud:nacos:discovery:server-addr:127.0.0.1:8848username:nacospassword:nacos
@SpringBootApplication@EnableDiscoveryClientpublicclassDemoApplication{publicstaticvoidmain(String[]args){SpringApplication.run(DemoApplication.class,args);}}

启动后,回到 Nacos 控制台 → 服务管理 → 服务列表,看到demo-service就说明部署成功了。


第五步:Derby vs MySQL —— 别在生产环境用 Derby

内置 Derby 的问题

Nacos 默认使用内嵌的 Apache Derby 数据库。它能用,但有三个问题:

  1. 数据无法共享。集群模式下每个节点有自己的 Derby 实例,数据不同步。
  2. 不支持高并发写入。Derby 是单文件嵌入式数据库,写操作会锁整个库。
  3. 不支持运维操作。没法做主从、没法做备份、没法用 Navicat 看数据。

坑4:很多团队 standalone 模式用 Derby 跑着跑着就开始丢数据。尤其是配置多了之后。

切换到 MySQL

# conf/application.properties # 把原来的 Derby 配置注释掉: # spring.sql.init.platform=derby # 换成 MySQL: spring.sql.init.platform=mysql db.num=1 db.url.0=jdbc:mysql://127.0.0.1:3306/nacos_config?useSSL=false&serverTimezone=Asia/Shanghai&characterEncoding=utf8 db.user.0=root db.password.0=your_password
-- 创建一个空数据库CREATEDATABASEIFNOTEXISTSnacos_configDEFAULTCHARACTERSETutf8mb4;

重启 Nacos 后,它会自动在 MySQL 里创建所有表。配置数据和服务注册信息都会落到 MySQL。


启动失败 5 大原因速查

报错原因解决
java.lang.UnsupportedClassVersionErrorJDK 版本太低升级到 JDK 17
Address already in use端口 8848/9848 被占用lsof -i :8848找到进程 kill 掉
cluster.conf找不到standalone 模式没指定-m加上-m standalone
Unable to connect to databaseMySQL 配置错了检查db.url.0和用户名密码
nacos is starting with cluster误启动了集群模式确认用了-m standalone参数

一键脚本(懒得手动敲的可以用)

#!/bin/bash# nacos-standalone-quickstart.sh# 使用方法: chmod +x nacos-standalone-quickstart.sh && ./nacos-standalone-quickstart.shNACOS_VERSION="2.3.2"NACOS_HOME="/opt/nacos"# 1. 下载wget-qhttps://github.com/alibaba/nacos/releases/download/${NACOS_VERSION}/nacos-server-${NACOS_VERSION}.zip-O/tmp/nacos.zip# 2. 解压unzip-qo/tmp/nacos.zip-d${NACOS_HOME}# 3. 启动cd${NACOS_HOME}/nacos/bin ./startup.sh-mstandalone# 4. 等 5 秒后检查sleep5curl-shttp://127.0.0.1:8848/nacos/v1/console/health/readiness&&echo"Nacos 启动成功!"||echo"启动失败,请查看日志:${NACOS_HOME}/nacos/logs/start.out"

总结

单机部署 5 步走:

  1. 环境检查:JDK 版本 ≥ 1.8.0_292(推荐 17),8848/9848/9849 三个端口空闲,内存 ≥ 2G。
  2. 下载解压:从 GitHub Releases 下最新版,解压到服务器。
  3. standalone 启动./startup.sh -m standalone,别忘了-m standalone
  4. 验证:访问localhost:8848/nacos,默认账号nacos/nacos,注册一个 Demo 服务。
  5. 切 MySQL:生产环境一定要把 Derby 换成 MySQL。

常见报错记牢五个就行:JDK 版本低、端口占用、忘加-m standalone、MySQL 连不上、误启集群模式。


你第一次搭 Nacos 踩了什么坑?评论区留个数字:1=JDK版本太低 2=端口被占 3=忘了-m standalone 4=Derby丢数据 5=其他(具体说说)。我看看哪个坑踩的人最多。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/13 8:37:53

HLS视频下载完全指南:3个步骤轻松保存任何在线流媒体内容

HLS视频下载完全指南&#xff1a;3个步骤轻松保存任何在线流媒体内容 【免费下载链接】hls-downloader Web Extension for sniffing and downloading HTTP Live streams (HLS) 项目地址: https://gitcode.com/gh_mirrors/hl/hls-downloader 你是一个文章写手&#xff0c…

作者头像 李华
网站建设 2026/6/13 8:37:03

ComfyUI-VAE Encoder

要理解 VAE Encoder&#xff0c;我们需要先了解 AI 画图时面临的一个巨大难题&#xff1a;计算量过大。一张普通的 512x512 像素的彩色图片&#xff0c;包含了近 80 万个数据点&#xff08;512 512 3 个颜色通道&#xff09;。如果 AI 直接在这个“像素空间”里一步步计算去噪…

作者头像 李华
网站建设 2026/6/13 8:35:39

Python数据科学自动化流水线:可复现、可观测、可干预的实战方案

1. 项目概述&#xff1a;这不是“又一篇Python自动化教程”&#xff0c;而是数据科学流水线的实战切片“How To Automate Data Science Tasks With Python (Part 2)”这个标题&#xff0c;光看字面容易误以为是某套泛泛而谈的入门系列第二讲——但如果你真在一线做过三个月以上…

作者头像 李华
网站建设 2026/6/13 8:30:56

用51单片机和Proteus做个RLC测量仪,从仿真到代码的保姆级避坑指南

51单片机RLC测量仪实战&#xff1a;从Proteus仿真到代码调试的避坑手册第一次用51单片机做RLC测量仪时&#xff0c;我对着网上下载的仿真文件折腾了整整三天——Proteus报错、Keil编译失败、测量结果偏差离谱。如果你也正在经历类似的困境&#xff0c;这篇实战指南或许能帮你少…

作者头像 李华
网站建设 2026/6/13 8:30:55

Python函数设计进阶:从语法到工程能力的跃迁

1. 项目概述&#xff1a;为什么函数不是“写完就扔”的代码块&#xff0c;而是Python工程能力的分水岭在Python里写个def hello(): print("Hello")&#xff0c;三秒就能搞定&#xff1b;但真正决定你能不能从“会写代码”跨入“能做项目”的&#xff0c;从来不是语法…

作者头像 李华
网站建设 2026/6/13 8:23:57

别再自己造轮子了!用Ruoyi快速搭建企业后台管理系统(Spring Boot + Vue 3)

企业级后台开发效率革命&#xff1a;基于Ruoyi框架的敏捷实践指南 当项目周期从三个月压缩到三周&#xff0c;当团队规模从二十人缩减到三人&#xff0c;传统企业级后台开发模式正面临前所未有的效率挑战。在这样的大背景下&#xff0c;Ruoyi框架的出现绝非偶然——它精准击中了…

作者头像 李华