Skip to content

服务器要求

CentOS Stream 或者 Rocky Linux 服务器上搭建 Nacos 单机服务,服务器需要满足以下要求。

服务器要求

  • 操作系统: CentOS StreamRocky Linux 服务器
  • 内存: 至少 2GB(推荐 4GB 或以上)
  • 磁盘空间: 至少 50GB
  • Java环境: JDK17 (官方推荐)
  • 网络: 确保服务器可以访问外部网络(用于下载依赖)

安装Java环境

首先,确保系统是最新的:

js
dnf update -y
  1. 下载软件包

访问 Oracle JDK 官方网站下载 JDK 17 压缩包。

选择需要下载的版本,并点击同意下载:

需要登录后下载软件包:

  1. 上传服务器

使用 XShell 客户端工具远程登录服务器,并上传软件包 jdk-17.0.14_linux-x64_bin.tar.gz 至目录 /usr/local/src

上传成功后查看软件包信息:

js
[root@localhost src]# pwd
/usr/local/src
[root@localhost src]# ll
总用量 178592
-rw-r--r--. 1 root root 182874706 3月  18 20:39 jdk-17.0.14_linux-x64_bin.tar.gz
[root@localhost src]# du -sh *
175M	jdk-17.0.14_linux-x64_bin.tar.gz

温馨提示

客户端工具除了 XShell 也可以使用其他工具,安装包存放目录可自定义,如 /usr/local/src

  1. 解压压缩包
js
tar -xvf jdk-17.0.14_linux-x64_bin.tar.gz -C /usr/local
  1. 设置环境变量

编辑 /etc/profile 文件:

js
vi /etc/profile

在文件末尾添加以下内容:

js
# JDK17
export JAVA_HOME=/usr/local/jdk-17.0.14
export PATH=$JAVA_HOME/bin:$PATH
  1. 使环境变量生效
js
source /etc/profile
  1. 验证安装

执行命令 java -version 查看JDK版本信息:

js
[root@localhost jdk-17.0.14]# java -version
java version "17.0.14" 2025-01-21 LTS
Java(TM) SE Runtime Environment (build 17.0.14+8-LTS-191)
Java HotSpot(TM) 64-Bit Server VM (build 17.0.14+8-LTS-191, mixed mode, sharing)

下载 Nacos

  1. 下载软件包

访问 NacosGitHub Release 页面:Nacos Releases 下载安装包。

下载最新版本的 Nacos 压缩包(如 nacos-server-2.5.1.tar.gz)。

  1. 上传服务器

使用 XShell 客户端工具远程登录服务器,并上传软件包 nacos-server-2.5.1.tar.gz 至目录 /usr/local/src

上传成功后查看软件包信息:

js
[root@localhost src]# pwd
/usr/local/src
[root@localhost src]# ll
总用量 328744
-rw-r--r--. 1 root root 182874706 3月  18 20:39 jdk-17.0.14_linux-x64_bin.tar.gz
-rw-r--r--. 1 root root 153752952 3月  18 21:33 nacos-server-2.5.1.tar.gz
[root@localhost src]# du -sh *
175M	jdk-17.0.14_linux-x64_bin.tar.gz
147M	nacos-server-2.5.1.tar.gz
  1. 解压下载的文件
js
[root@localhost src]# tar -zxvf nacos-server-2.5.1.tar.gz 
nacos/LICENSE
nacos/NOTICE
nacos/target/nacos-server.jar
nacos/conf/
nacos/conf/derby-schema.sql
nacos/conf/1.4.0-ipv6_support-update.sql
nacos/conf/announcement_zh-CN.conf
nacos/conf/application.properties.example
nacos/conf/nacos-logback.xml
nacos/conf/console-guide.conf
nacos/conf/mysql-schema.sql
nacos/conf/cluster.conf.example
nacos/conf/announcement_en-US.conf
nacos/conf/application.properties
nacos/bin/startup.sh
nacos/bin/startup.cmd
nacos/bin/shutdown.sh
nacos/bin/shutdown.cmd
  1. 将解压后的目录移动到 /usr/local 目录:
js
mv nacos /usr/local

配置Nacos

进入 Nacos 的配置文件目录:

js
cd /usr/local/nacos/conf

编辑 application.properties 文件,配置数据库(可选)和端口等:

js
vim application.properties

如果需要使用 MySQL 作为存储,取消以下配置的注释并修改为你的数据库信息:

js
# 启用 MySQL 数据源
spring.datasource.platform=mysql

# 数据库数量(单机模式为 1
db.num=1

# MySQL 连接配置
db.url.0=jdbc:mysql://127.0.0.1:3306/nacos?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true
db.user=root
db.password=root

# 开启登录认证
nacos.core.auth.enabled=true

### Since 1.4.1, worked when nacos.core.auth.enabled=true and nacos.core.auth.enable.userAgentAuthWhite=false.
### The two properties is the white list for auth and used by identity the request from other server.
nacos.core.auth.server.identity.key=serverIdentity
nacos.core.auth.server.identity.value=security

# 设置默认令牌
nacos.core.auth.plugin.nacos.token.secret.key=SecretKey012345678901234567890123456789012345678901234567890123456789

温馨提示

  • db.url.0 中的 127.0.0.1:3306 替换为你的 MySQL 地址和端口。
  • db.user.0db.password.0 替换为你的 MySQL 用户名和密码。

初始化 Nacos 数据库

MySQL 中创建一个数据库,并执行导入 Nacos 安装包 /usr/local/nacos/conf/ 路径下提供的 mysql-schema.sql 初始化数据库脚本;

js
[root@localhost conf]# pwd
/usr/local/nacos/conf
[root@localhost conf]# ll
总用量 112
-rw-r--r--. 1 502 games  1224 6月  24 2024 1.4.0-ipv6_support-update.sql
-rw-r--r--. 1 502 games   153 1月   7 22:04 announcement_en-US.conf
-rw-r--r--. 1 502 games   123 1月   7 22:04 announcement_zh-CN.conf
-rw-r--r--. 1 502 games 12420 3月  18 22:00 application.properties
-rw-r--r--. 1 502 games 11271 3月  10 04:00 application.properties.example
-rw-r--r--. 1 502 games   670 11月 28 21:57 cluster.conf.example
-rw-r--r--. 1 502 games   289 1月   7 22:04 console-guide.conf
-rw-r--r--. 1 502 games 13981 1月   7 22:04 derby-schema.sql
-rw-r--r--. 1 502 games 13131 3月   9 22:46 mysql-schema.sql
-rw-r--r--. 1 502 games 32071 3月  10 04:00 nacos-logback.xml

启动Nacos

进入 Nacosbin 目录:

js
[root@localhost bin]# pwd
/usr/local/nacos/bin
[root@localhost bin]# ll
总用量 20
-rwxr-xr-x. 1 502 games 1189 11月 28 21:57 shutdown.cmd
-rwxr-xr-x. 1 502 games  875 11月 28 21:57 shutdown.sh
-rwxr-xr-x. 1 502 games 3560 3月  10 04:00 startup.cmd
-rwxr-xr-x. 1 502 games 5713 3月  10 04:00 startup.sh

启动 Nacos 服务:

js
# 启动服务
sh startup.sh -m standalone

输出启动结果:

js
[root@localhost bin]# sh startup.sh -m standalone
/usr/local/jdk-17.0.14/bin/java    -Xms512m -Xmx512m -Xmn256m -Dnacos.standalone=true -Dnacos.member.list= -Xlog:gc*:file=/usr/local/nacos/logs/nacos_gc.log:time,tags:filecount=10,filesize=100m -Dloader.path=/usr/local/nacos/plugins,/usr/local/nacos/plugins/health,/usr/local/nacos/plugins/cmdb,/usr/local/nacos/plugins/selector -Dnacos.home=/usr/local/nacos -jar /usr/local/nacos/target/nacos-server.jar  --spring.config.additional-location=file:/usr/local/nacos/conf/ --logging.config=/usr/local/nacos/conf/nacos-logback.xml --server.max-http-header-size=524288
nacos is starting with standalone
nacos is starting. you can check the /usr/local/nacos/logs/start.out

启动成功后,可以通过以下命令查看日志:

js
tail -f /usr/local/nacos/logs/start.out

输出日志:

js
[root@localhost bin]# tail -f /usr/local/nacos/logs/start.out
:   |   \ | :  ,--.--.     ,---.  /   /   | /  /    '   Pid: 197859
|   : '  '; | /       \   /     \.   ; ,. :|  :  /`./   Console: http://192.168.10.206:8848/nacos/index.html
'   ' ;.    ;.--.  .-. | /    / ''   | |: :|  :  ;_
|   | | \   | \__\/: . ..    ' / '   | .; : \  \    `.      https://nacos.io
'   : |  ; .' ," .--.; |'   ; :__|   :    |  `----.   \
|   | '`--'  /  /  ,.  |'   | '.'|\   \  /  /  /`--'  /
'   : |     ;  :   .'   \   :    : `----'  '--'.     /
;   |.'     |  ,     .-./\   \  /            `--'---'
'---'        `--`---'     `----'

2025-03-18 22:12:26,627 INFO Tomcat initialized with port(s): 8848 (http)

2025-03-18 22:12:27,013 INFO Root WebApplicationContext: initialization completed in 2475 ms

2025-03-18 22:12:30,276 INFO Will secure any request with [org.springframework.security.web.session.DisableEncodeUrlFilter@2db1b657, org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter@7e351d7, org.springframework.security.web.context.SecurityContextPersistenceFilter@1943c1f2, org.springframework.security.web.header.HeaderWriterFilter@25f15f50, org.springframework.security.web.csrf.CsrfFilter@4d9754a8, org.springframework.security.web.authentication.logout.LogoutFilter@65a9ea3c, org.springframework.security.web.savedrequest.RequestCacheAwareFilter@1e1eeedd, org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter@798256c5, org.springframework.security.web.authentication.AnonymousAuthenticationFilter@43c57161, org.springframework.security.web.session.SessionManagementFilter@163042ea, org.springframework.security.web.access.ExceptionTranslationFilter@7a3b7122]

2025-03-18 22:12:30,467 INFO Adding welcome page: class path resource [static/index.html]

2025-03-18 22:12:30,747 INFO Exposing 1 endpoint(s) beneath base path '/actuator'

2025-03-18 22:12:30,759 WARN You are asking Spring Security to ignore Ant [pattern='/**']. This is not recommended -- please use permitAll via HttpSecurity#authorizeHttpRequests instead.

2025-03-18 22:12:30,759 INFO Will not secure Ant [pattern='/**']

2025-03-18 22:12:30,759 WARN You are asking Spring Security to ignore Mvc [pattern='/prometheus']. This is not recommended -- please use permitAll via HttpSecurity#authorizeHttpRequests instead.

2025-03-18 22:12:30,759 INFO Will not secure Mvc [pattern='/prometheus']

2025-03-18 22:12:30,759 WARN You are asking Spring Security to ignore Mvc [pattern='/prometheus/namespaceId/{namespaceId}']. This is not recommended -- please use permitAll via HttpSecurity#authorizeHttpRequests instead.

2025-03-18 22:12:30,759 INFO Will not secure Mvc [pattern='/prometheus/namespaceId/{namespaceId}']

2025-03-18 22:12:30,759 WARN You are asking Spring Security to ignore Mvc [pattern='/prometheus/namespaceId/{namespaceId}/service/{service}']. This is not recommended -- please use permitAll via HttpSecurity#authorizeHttpRequests instead.

2025-03-18 22:12:30,759 INFO Will not secure Mvc [pattern='/prometheus/namespaceId/{namespaceId}/service/{service}']

2025-03-18 22:12:30,797 INFO Tomcat started on port(s): 8848 (http) with context path '/nacos'

2025-03-18 22:12:30,816 INFO No TaskScheduler/ScheduledExecutorService bean found for scheduled processing

2025-03-18 22:12:30,827 INFO Nacos started successfully in stand alone mode. use external storage

访问Nacos

默认情况下,Nacos 会在 8848 端口启动。你可以通过浏览器访问:

js
http://<服务器IP>:8848/nacos

默认用户名和密码均为 nacos

设置开机自启动(可选)

创建 systemd 服务文件:

js
vim /usr/lib/systemd/system/nacos.service

添加以下内容:

js
[Unit]
Description=Nacos Server
After=network.target

[Service]
Type=forking
ExecStart=/usr/local/nacos/bin/startup.sh -m standalone
ExecStop=/usr/local/nacos/bin/shutdown.sh
Restart=on-abnormal

[Install]
WantedBy=multi-user.target

保存并退出,然后启用并启动服务:

js
systemctl daemon-reload
systemctl enable nacos
systemctl start nacos

防火墙配置

确保服务器的防火墙允许 Nacos 的端口(默认 8848):

js
firewall-cmd --permanent --add-port=8848/tcp
firewall-cmd --reload

验证服务

检查 Nacos 服务状态:

js
[root@localhost esxi]# systemctl status nacos
nacos.service - Nacos Server
   Loaded: loaded (/usr/lib/systemd/system/nacos.service; enabled; vendor preset: disabled)
   Active: active (running) since Tue 2025-03-18 22:33:02 EDT; 14min ago
  Process: 199688 ExecStop=/usr/local/nacos/bin/shutdown.sh (code=exited, status=255)
  Process: 199749 ExecStart=/usr/local/nacos/bin/startup.sh -m standalone (code=exited, status=0/SUCCESS)
 Main PID: 199784 (java)
    Tasks: 187 (limit: 24632)
   Memory: 711.9M
   CGroup: /system.slice/nacos.service
           └─199784 /usr/local/jdk-17.0.14/bin/java -Xms512m -Xmx512m -Xmn256m -Dnacos.standalone=true -Dnacos.member.list= -Xlog:gc*:file=/usr/local/nacos/logs/nacos_gc.log:time,tags:filecount=10,filesize=100m -Dloader.path=/usr/local/>

3月 18 22:33:02 localhost.localdomain systemd[1]: Starting Nacos Server...
3月 18 22:33:02 localhost.localdomain startup.sh[199749]: which: no javac in (/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin)
3月 18 22:33:02 localhost.localdomain startup.sh[199749]: readlink: 缺少操作数
3月 18 22:33:02 localhost.localdomain startup.sh[199749]: 请尝试执行 "readlink --help" 来获取更多信息。
3月 18 22:33:02 localhost.localdomain startup.sh[199749]: dirname: 缺少操作数
3月 18 22:33:02 localhost.localdomain startup.sh[199749]: 请尝试执行 "dirname --help" 来获取更多信息。
3月 18 22:33:02 localhost.localdomain startup.sh[199749]: /usr/local/jdk-17.0.14/bin/java    -Xms512m -Xmx512m -Xmn256m -Dnacos.standalone=true -Dnacos.member.list= -Xlog:gc*:file=/usr/local/nacos/logs/nacos_gc.log:time,tags:filecount=1>
3月 18 22:33:02 localhost.localdomain startup.sh[199749]: nacos is starting with standalone
3月 18 22:33:02 localhost.localdomain startup.sh[199749]: nacos is starting. you can check the /usr/local/nacos/logs/start.out
3月 18 22:33:02 localhost.localdomain systemd[1]: Started Nacos Server.
lines 1-21/21 (END)

总结

通过以上步骤,你可以在 CentOS Stream 上成功搭建 Nacos 单机服务。确保服务器满足最低要求,并根据实际需求调整配置。

小蚂蚁云团队 · 提供技术支持