Nacos 3.1.0单机版(使用内置Derby数据库)
官网下载地址:
https://nacos.io/download/nacos-server
下载后解压即可。

1、环境准备。

Nacos 3版本需要Java JDK/JRE版本要17+
OracleJDK下载https://www.oracle.com/java/technologies/downloads/?spm=5238cd80.2ef5001f.0.0.3f613b7cfZCgMj#java17
OpenJDK下载:https://jdk.java.net/25/
Windows设置环境变量JAVA_HOME为解压后的目录。
设置Path变量为 %JAVA_HOME%\bin

如果系统有多个版本的JDK,可以使用%JAVA_HOME%变量在使用时调整对应版本。如下图。

在这里插入图片描述
在这里插入图片描述
Linux设置环境变量

#编辑用户配置文件
vim ~/.bashrc

#在文件末尾添加同样的配置
export JAVA_HOME=/usr/local/java/jdk-17.0.8.1
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

# 保存后生效
source ~/.bashrc

详细请参考官方:
https://docs.oracle.com/cd/E19182-01/820-7851/inst_cli_jdk_javahome_t/?spm=5238cd80.2ef5001f.0.0.3f613b7cV4OyYU

2、Nacos配置文件设置

  • config文件夹里,配置application.properties文件,有3处地方要加上。
### worked when nacos.core.auth.enabled=true
### The two properties is the white list for auth and used by identity the request from other server.
nacos.core.auth.server.identity.key=xxxx
nacos.core.auth.server.identity.value=xxxx

注意格式为base64,原文长度要大于32个字节bytes

### The default token (Base64 string):
#nacos.core.auth.plugin.nacos.token.secret.key=VGhpc0lzTXlDdXN0b21TZWNyZXRLZXkwMTIzNDU2Nzg=
nacos.core.auth.plugin.nacos.token.secret.key=xxxx
  • bin文件夹里,配置startup.cmd或startup.sh,有2处地方要修改。

设为单机版。

set MODE="standalone"

这里注意关键,在set "NACOS_OPTS=%NACOS_OPTS% -xxxx前面加一行。注意是前面,表示连接数据库超时时间。(特别注意,要加在其它所有配置前面!)

rem set nacos options
set "NACOS_OPTS=%NACOS_OPTS% -Ddb.pool.config.connectionTimeout=120000"

set "NACOS_OPTS=%NACOS_OPTS% -Dnacos.deployment.type=%DEPLOYMENT%"
set "NACOS_OPTS=%NACOS_OPTS% -Dloader.path=%BASE_DIR%/plugins,%BASE_DIR%/plugins/health,%BASE_DIR%/plugins/cmdb,%BASE_DIR%/plugins/selector"
set "NACOS_OPTS=%NACOS_OPTS% -Dnacos.home=%BASE_DIR%"
set "NACOS_OPTS=%NACOS_OPTS% -jar %BASE_DIR%\target\%SERVER%.jar"

也可以在application.properties加上。

db.pool.config.connectionTimeout=600000

然后删除所有Logs文件夹的内容,另外同时删掉/data/protocol文件夹,再重新运行startup.cmd

如果不加这行,Nacos在启动时会同时启动Derby内置数据库,但可能因启动有时间差,会导致报如下errCode: 500, errMsg: load derby-schema.sql error.或java.sql.SQLTimeoutException: Login timeout exceeded.之类的错误,这不知道是不是个Bug,但一直没官方解决。
来源官方issue:https://github.com/alibaba/nacos/issues/9742

ERROR Startup errors :

org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'capacityManagementAspect' defined in URL [jar:nested:/D:/soft/nacos/target/nacos-server.jar/!BOOT-INF/lib/nacos-config-3.1.0.jar!/com/alibaba/nacos/config/server/aspect/CapacityManagementAspect.class]: Unsatisfied dependency expressed through constructor parameter 0: Error creating bean with name 'embeddedConfigInfoPersistServiceImpl' defined in URL [jar:nested:/D:/soft/nacos/target/nacos-server.jar/!BOOT-INF/lib/nacos-config-3.1.0.jar!/com/alibaba/nacos/config/server/service/repository/embedded/EmbeddedConfigInfoPersistServiceImpl.class]: Unsatisfied dependency expressed through constructor parameter 0: Error creating bean with name 'standaloneDatabaseOperateImpl': Invocation of init method failed
        at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:804)
        at org.springframework.beans.factory.support.ConstructorResolver.autowireConstructor(ConstructorResolver.java:240)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.autowireConstructor(AbstractAutowireCapableBeanFactory.java:1395)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1232)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:569)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:529)
        at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:339)
        at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:373)
        at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:337)
        at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:202)
        at org.springframework.beans.factory.support.DefaultListableBeanFactory.instantiateSingleton(DefaultListableBeanFactory.java:1222)
        at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingleton(DefaultListableBeanFactory.java:1188)
        at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:1123)
        at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:987)
        at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:627)
        at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:752)
        at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:439)
        at org.springframework.boot.SpringApplication.run(SpringApplication.java:318)
        at org.springframework.boot.builder.SpringApplicationBuilder.run(SpringApplicationBuilder.java:149)
        at com.alibaba.nacos.bootstrap.NacosBootstrap.startCoreContext(NacosBootstrap.java:96)
        at com.alibaba.nacos.bootstrap.NacosBootstrap.startWithConsole(NacosBootstrap.java:84)
        at com.alibaba.nacos.bootstrap.NacosBootstrap.main(NacosBootstrap.java:54)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
        at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.base/java.lang.reflect.Method.invoke(Method.java:568)
        at org.springframework.boot.loader.launch.Launcher.launch(Launcher.java:102)
        at org.springframework.boot.loader.launch.Launcher.launch(Launcher.java:64)
        at org.springframework.boot.loader.launch.PropertiesLauncher.main(PropertiesLauncher.java:580)
Caused by: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'embeddedConfigInfoPersistServiceImpl' defined in URL [jar:nested:/D:/soft/nacos/target/nacos-server.jar/!BOOT-INF/lib/nacos-config-3.1.0.jar!/com/alibaba/nacos/config/server/service/repository/embedded/EmbeddedConfigInfoPersistServiceImpl.class]: Unsatisfied dependency expressed through constructor parameter 0: Error creating bean with name 'standaloneDatabaseOperateImpl': Invocation of init method failed
        at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:804)
        at org.springframework.beans.factory.support.ConstructorResolver.autowireConstructor(ConstructorResolver.java:240)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.autowireConstructor(AbstractAutowireCapableBeanFactory.java:1395)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1232)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:569)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:529)
        at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:339)
        at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:373)
        at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:337)
        at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:202)
        at org.springframework.beans.factory.config.DependencyDescriptor.resolveCandidate(DependencyDescriptor.java:254)
        at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1752)
        at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1635)
        at org.springframework.beans.factory.support.ConstructorResolver.resolveAutowiredArgument(ConstructorResolver.java:913)
        at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:791)
        ... 28 common frames omitted
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'standaloneDatabaseOperateImpl': Invocation of init method failed
        at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor.postProcessBeforeInitialization(InitDestroyAnnotationBeanPostProcessor.java:222)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyBeanPostProcessorsBeforeInitialization(AbstractAutowireCapableBeanFactory.java:429)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1818)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:607)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:529)
        at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:339)
        at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:373)
        at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:337)
        at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:202)
        at org.springframework.beans.factory.config.DependencyDescriptor.resolveCandidate(DependencyDescriptor.java:254)
        at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1752)
        at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1635)
        at org.springframework.beans.factory.support.ConstructorResolver.resolveAutowiredArgument(ConstructorResolver.java:913)
        at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:791)
        ... 42 common frames omitted
Caused by: java.lang.RuntimeException: com.alibaba.nacos.api.exception.runtime.NacosRuntimeException: errCode: 500, errMsg: load derby-schema.sql error.
        at com.alibaba.nacos.persistence.datasource.DynamicDataSource.getDataSource(DynamicDataSource.java:60)
        at com.alibaba.nacos.persistence.repository.embedded.operate.StandaloneDatabaseOperateImpl.init(StandaloneDatabaseOperateImpl.java:71)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
        at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.base/java.lang.reflect.Method.invoke(Method.java:568)
        at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor$LifecycleMethod.invoke(InitDestroyAnnotationBeanPostProcessor.java:457)
        at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor$LifecycleMetadata.invokeInitMethods(InitDestroyAnnotationBeanPostProcessor.java:401)
        at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor.postProcessBeforeInitialization(InitDestroyAnnotationBeanPostProcessor.java:219)
        ... 55 common frames omitted
Caused by: com.alibaba.nacos.api.exception.runtime.NacosRuntimeException: errCode: 500, errMsg: load derby-schema.sql error.
        at com.alibaba.nacos.persistence.datasource.LocalDataSourceServiceImpl.reload(LocalDataSourceServiceImpl.java:103)
        at com.alibaba.nacos.persistence.datasource.LocalDataSourceServiceImpl.initialize(LocalDataSourceServiceImpl.java:170)
        at com.alibaba.nacos.persistence.datasource.LocalDataSourceServiceImpl.init(LocalDataSourceServiceImpl.java:86)
        at com.alibaba.nacos.persistence.datasource.DynamicDataSource.getDataSource(DynamicDataSource.java:49)
        ... 63 common frames omitted
Caused by: java.sql.SQLTimeoutException: Login timeout exceeded.
        at org.apache.derby.impl.jdbc.SQLExceptionFactory.getSQLException(Unknown Source)
        at org.apache.derby.impl.jdbc.SQLExceptionFactory.getSQLException(Unknown Source)
        at org.apache.derby.impl.jdbc.Util.generateCsSQLException(Unknown Source)
        at org.apache.derby.impl.jdbc.Util.generateCsSQLException(Unknown Source)
        at org.apache.derby.jdbc.InternalDriver.timeLogin(Unknown Source)
        at org.apache.derby.jdbc.InternalDriver.connect(Unknown Source)
        at org.apache.derby.jdbc.InternalDriver.connect(Unknown Source)
        at org.apache.derby.jdbc.EmbeddedDriver.connect(Unknown Source)
        at com.zaxxer.hikari.util.DriverDataSource.getConnection(DriverDataSource.java:138)
        at com.zaxxer.hikari.pool.PoolBase.newConnection(PoolBase.java:354)
        at com.zaxxer.hikari.pool.PoolBase.newPoolEntry(PoolBase.java:202)
        at com.zaxxer.hikari.pool.HikariPool.createPoolEntry(HikariPool.java:473)
        at com.zaxxer.hikari.pool.HikariPool.checkFailFast(HikariPool.java:554)
        at com.zaxxer.hikari.pool.HikariPool.<init>(HikariPool.java:115)
        at com.zaxxer.hikari.HikariDataSource.getConnection(HikariDataSource.java:112)
        at com.alibaba.nacos.persistence.datasource.LocalDataSourceServiceImpl.reload(LocalDataSourceServiceImpl.java:98)
        ... 66 common frames omitted
Caused by: org.apache.derby.iapi.error.StandardException: Login timeout exceeded.
        at org.apache.derby.iapi.error.StandardException.newException(Unknown Source)
        at org.apache.derby.impl.jdbc.SQLExceptionFactory.wrapArgsForTransportAcrossDRDA(Unknown Source)
        ... 82 common frames omitted
2025-09-28 13:54:03,890 ERROR Nacos failed to start, please see D:\soft\nacos\logs\nacos.log for more details.

3、配置完成后运行

在Windows下,运行startup.cmd,建议使用右键,以管理员身份运行。
在Linux下,注意加上执行x权限。
成功运行时会出现类似如下画面。验证,可直接访问http://localhost:8080或curl -X GET ‘http://localhost:8080/’
注意,Nacos 3.0开始默认控制台Console端口为8080。

在这里插入图片描述

4、其它常见问题

  1. 出现
Caused by: java.sql.SQLException: Failed to create database
    '\nacos\data\derby-data', see the next exception for details

.
解决方式:删除data文件夹,重新运行。

或出现

 The database directory '\nacos\data\derby-data' exists. However, it does not contain the expected 'service.properties' file. 
 Perhaps Derby was brought down in the middle of creating this database. You may want to delete this directory and try creating the database again.

解决方式:表示数据库已存在,但初始化缺少service.properties,需删除data文件夹,重新运行。

  1. 启动或重新启动出现异常:(关键字是EXCEPTION_ILLEGAL_INSTRUCTIONlibrocksdbjni
A fatal error has been detected by the Java Runtime Environment:
EXCEPTION_ILLEGAL_INSTRUCTION (0xc000001d) at pc=0x00007ffdeb3303a9, pid=6932, tid=3352
JRE version: Java(TM) SE Runtime Environment (17.0.3.1+2) (build 17.0.3.1+2-LTS-6)
Java VM: Java HotSpot(TM) 64-Bit Server VM (17.0.3.1+2-LTS-6, mixed mode, sharing, tiered, compressed oops, compressed class ptrs, g1 gc, windows-amd64)
Problematic frame:
C [librocksdbjni9701304616076181581.dll+0x5203a9]
No core dump will be written. Minidumps are not enabled by default on client versions of Windows
If you would like to submit a bug report, please visit:
https://bugreport.java.com/bugreport/crash.jsp
The crash happened outside the Java Virtual Machine in native code.
See problematic frame for where to report the bug.

Current thread (0x000001b93c80f4e0): JavaThread "main" [_thread_in_native, id=3352, stack(0x0000003718b00000,0x0000003718c00000)]

Stack: [0x0000003718b00000,0x0000003718c00000], sp=0x0000003718bf8ca0, free space=995k
Native frames: (J=compiled Java code, j=interpreted, Vv=VM code, C=native code)
C [librocksdbjni9701304616076181581.dll+0x5203a9]

Java frames: (J=compiled Java code, j=interpreted, Vv=VM code)
j org.rocksdb.RocksIterator.seekToFirst0(J)V+0
j org.rocksdb.AbstractRocksIterator.seekToFirst()V+26
j com.alipay.sofa.jraft.storage.impl.RocksDBLogStorage.load(Lcom/alipay/sofa/jraft/conf/ConfigurationManager;)V+23
j com.alipay.sofa.jraft.storage.impl.RocksDBLogStorage.initAndLoad(Lcom/alipay/sofa/jraft/conf/ConfigurationManager;)Z+78
j com.alipay.sofa.jraft.storage.impl.RocksDBLogStorage.init(Lcom/alipay/sofa/jraft/option/LogStorageOptions;)Z+202

原因是Nacos上运行时被非法关闭了导致的(官方一直说是librocksdbjni的问题,但是本来是运行好好的,重启就出现不太可能是librocksdbjni直接导致的。)
解决方案:
网上很多说的是删除data文件夹,但是这样原来配置的数据就丢失了,经试验,只要删除/data/protocol文件夹即可,这个文件夹是raft相关的内容,估计是非法关闭时有些内容有没有结束,再次读取时就引起了问题,这估计也是个Bug,这个Bug比较复杂,可能是由于没有正常关闭后,会调用RocksDB相关库,而它又需要系统CPU有avx2/BMI2指令集。
Nacos对此问题相关官方讨论:
https://github.com/alibaba/nacos/issues/12720
https://github.com/alibaba/nacos/issues/12479
https://github.com/alibaba/nacos/issues/12049
RocksDB对此问题相关讨论:
https://github.com/facebook/rocksdb/issues/11096
https://github.com/facebook/rocksdb/issues/10756
https://github.com/facebook/rocksdb/issues/9560

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐