服务器要求
在 CentOS Stream
或者 Rocky Linux
服务器上搭建 Nacos
单机服务,服务器需要满足以下要求。
服务器要求
- 操作系统:
CentOS Stream
或Rocky Linux
服务器 - 内存: 至少
2GB
(推荐4GB
或以上) - 磁盘空间: 至少
50GB
- Java环境:
JDK17
(官方推荐) - 网络: 确保服务器可以访问外部网络(用于下载依赖)
安装Java环境
首先,确保系统是最新的:
dnf update -y
- 下载软件包
访问 Oracle JDK 官方网站下载 JDK 17
压缩包。
选择需要下载的版本,并点击同意下载:
需要登录后下载软件包:
- 上传服务器
使用 XShell
客户端工具远程登录服务器,并上传软件包 jdk-17.0.14_linux-x64_bin.tar.gz
至目录 /usr/local/src
。
上传成功后查看软件包信息:
[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
。
- 解压压缩包
tar -xvf jdk-17.0.14_linux-x64_bin.tar.gz -C /usr/local
- 设置环境变量
编辑 /etc/profile
文件:
vi /etc/profile
在文件末尾添加以下内容:
# JDK17
export JAVA_HOME=/usr/local/jdk-17.0.14
export PATH=$JAVA_HOME/bin:$PATH
- 使环境变量生效
source /etc/profile
- 验证安装
执行命令 java -version
查看JDK版本信息:
[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
- 下载软件包
访问 Nacos
的 GitHub Release
页面:Nacos Releases 下载安装包。
下载最新版本的 Nacos
压缩包(如 nacos-server-2.5.1.tar.gz
)。
- 上传服务器
使用 XShell
客户端工具远程登录服务器,并上传软件包 nacos-server-2.5.1.tar.gz
至目录 /usr/local/src
。
上传成功后查看软件包信息:
[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
- 解压下载的文件
[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
- 将解压后的目录移动到
/usr/local
目录:
mv nacos /usr/local
配置Nacos
进入 Nacos
的配置文件目录:
cd /usr/local/nacos/conf
编辑 application.properties
文件,配置数据库(可选)和端口等:
vim application.properties
如果需要使用 MySQL
作为存储,取消以下配置的注释并修改为你的数据库信息:
# 启用 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.0
和db.password.0
替换为你的MySQL
用户名和密码。
初始化 Nacos 数据库
在 MySQL
中创建一个数据库,并执行导入 Nacos
安装包 /usr/local/nacos/conf/
路径下提供的 mysql-schema.sql
初始化数据库脚本;
[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
进入 Nacos
的 bin
目录:
[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
服务:
# 启动服务
sh startup.sh -m standalone
输出启动结果:
[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
启动成功后,可以通过以下命令查看日志:
tail -f /usr/local/nacos/logs/start.out
输出日志:
[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
端口启动。你可以通过浏览器访问:
http://<服务器IP>:8848/nacos
默认用户名和密码均为 nacos
。
设置开机自启动(可选)
创建 systemd
服务文件:
vim /usr/lib/systemd/system/nacos.service
添加以下内容:
[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
保存并退出,然后启用并启动服务:
systemctl daemon-reload
systemctl enable nacos
systemctl start nacos
防火墙配置
确保服务器的防火墙允许 Nacos
的端口(默认 8848
):
firewall-cmd --permanent --add-port=8848/tcp
firewall-cmd --reload
验证服务
检查 Nacos
服务状态:
[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
单机服务。确保服务器满足最低要求,并根据实际需求调整配置。