1、GitHub下載Nacos安裝包
(https://github.com/alibaba/nacos/releases)
這次下載的版本:https://github.com/alibaba/nacos/releases/tag/2.3.2
https://github.com/alibaba/nacos/releases/download/2.3.2/nacos-server-2.3.2.tar.gz

#根據(jù)版本修改路徑中的2.3.2
[root@anolis8 ~]# wget https://github.com/alibaba/nacos/releases/download/2.3.2/nacos-server-2.3.2.tar.gz
[root@anolis8 ~]# tar -zxvf nacos-server-2.3.2.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/application.properties.example
nacos/conf/nacos-logback.xml
nacos/conf/mysql-schema.sql
nacos/conf/cluster.conf.example
nacos/conf/application.properties
nacos/bin/startup.sh
nacos/bin/startup.cmd
nacos/bin/shutdown.sh
nacos/bin/shutdown.cmd
[root@anolis8 ~]# mv nacos /usr/local/
[root@anolis8 ~]# cd /usr/local/nacos/conf/
[root@anolis8 conf]# ll
總用量 104K
-rw-r--r-- 1 502 games 1.2K 2月 6 09:58 1.4.0-ipv6_support-update.sql
-rw-r--r-- 1 502 games 154 2月 27 16:02 announcement_en-US.conf
-rw-r--r-- 1 502 games 127 2月 27 16:02 announcement_zh-CN.conf
-rw-r--r-- 1 502 games 13K 4月 22 10:10 application.properties
-rw-r--r-- 1 502 games 11K 2月 6 09:58 application.properties.example
-rw-r--r-- 1 502 games 670 2月 6 09:58 cluster.conf.example
-rw-r--r-- 1 502 games 300 2月 6 09:58 console-guide.conf
-rw-r--r-- 1 502 games 8.8K 2月 6 09:58 derby-schema.sql
-rw-r--r-- 1 502 games 11K 2月 6 09:58 mysql-schema.sql
-rw-r--r-- 1 502 games 32K 2月 6 09:58 nacos-logback.xml
2、在/usr/local/nacos/conf/下找到mysql-schema.sql,在已經(jīng)安裝好的mysql數(shù)據(jù)庫(kù)中建立數(shù)據(jù)庫(kù),新增用戶名密碼授權(quán),執(zhí)行sql腳本

數(shù)據(jù)庫(kù)名nacos_config
字符集utf8mb4
排序規(guī)則utf8mb4_general_ci



3、修改conf下的application.properties配置文件
#*************** Config Module Related Configurations ***************#
### If use MySQL as datasource:
### Deprecated configuration property, it is recommended to use `spring.sql.init.platform` replaced.
# spring.datasource.platform=mysql
spring.sql.init.platform=mysql
### Count of DB:
db.num=1
### Connect URL of DB:
db.url.0=jdbc:mysql://172.16.17.210:3306/nacos_232?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=UTC
db.user.0=nacos
db.password.0=nacos
注意數(shù)據(jù)庫(kù)版本,是否mysql8以上。
放開(kāi)數(shù)據(jù)庫(kù)配置,并修改為上面定義的數(shù)據(jù)配置信息保存
4、開(kāi)放8848、9848、9849、7848端口

firewall-cmd --zone=public --add-port=8848/tcp --permanent
firewall-cmd --zone=public --add-port=9848/tcp --permanent
firewall-cmd --zone=public --add-port=9849/tcp --permanent
firewall-cmd --zone=public --add-port=7848/tcp --permanent
systemctl restart firewalld
5、啟動(dòng)nacos
#修改startup.sh在29行修改
[ ! -e "$JAVA_HOME/bin/java" ] && JAVA_HOME=$HOME/jdk/java
修改為
[ ! -e "$JAVA_HOME/bin/java" ] && JAVA_HOME=/usr/local/jdk1.8.0_11
--------------------
/usr/local/jdk1.8.0_11 為本機(jī)的 JAVA_HOME
--------------------
cd ../bin
sh startup.sh -m standalone
6、驗(yàn)證(換成自己的IP,默認(rèn)用戶名密碼 nacos/nacos)
http://172.16.17.222:8848/nacos/


7、集群配置
在/usr/local/nacos/conf目錄下修改cluster.conf文件
[root@nacos1 conf]# vim cluster.conf
添加如下配置
2024-04-22T10:03:57.892
172.16.17.222:8848
172.16.17.223:8848
172.16.17.224:8848
保存后退出。
8、配置為service服務(wù)
#建立service文件
vim /lib/systemd/system/nacos.service
[Unit]
Description=nacos
After=network.target
[Service]
Type=forking
ExecStart=/usr/local/nacos/bin/startup.sh
ExecReload=/usr/local/nacos/bin/shutdown.sh
ExecStop=/usr/local/nacos/bin/shutdown.sh
PrivateTmp=true
[Install]
WantedBy=multi-user.target
如果是單機(jī)模式這個(gè)語(yǔ)句需要修改為如下,ExecStart=/usr/local/nacos/bin/startup.sh -m standalone
[Unit]
Description=nacos
After=network.target
[Service]
Type=forking
ExecStart=/usr/local/nacos/bin/startup.sh -m standalone
ExecReload=/usr/local/nacos/bin/shutdown.sh
ExecStop=/usr/local/nacos/bin/shutdown.sh
PrivateTmp=true
[Install]
WantedBy=multi-user.target
保存后執(zhí)行以下命令
加載新建的nacos.service
systemctl daemon-reload
設(shè)置nacos.service 為開(kāi)機(jī)啟動(dòng)
systemctl enable nacos.service
開(kāi)啟nacos.service服務(wù)
systemctl start nacos.service
關(guān)閉nacos.service服務(wù)
systemctl stop nacos.service
查看 nacos.service服務(wù)狀態(tài)
systemctl status nacos.service -l
9、其他使用設(shè)置
參考
https://blog.csdn.net/xionglangs/article/details/118145684
10、配置nginx負(fù)載均衡
http://www.itdecent.cn/p/3ab9ef944c65
11、關(guān)于鑒權(quán)
官方文檔
https://nacos.io/zh-cn/docs/v2/guide/user/auth.html
nacos2.3.2版本安裝后默認(rèn)是沒(méi)有開(kāi)啟鑒權(quán)的,也就是訪問(wèn)是不需要賬號(hào)密碼登錄的!可以直接訪問(wèn)。
要開(kāi)啟鑒權(quán)需要根據(jù)官方文檔配置:
修改/usr/local/nacos/conf/application.properties配置文件
#參數(shù)名
nacos.core.auth.enabled #145行
#默認(rèn)值
false #默認(rèn)不開(kāi)啟
#功能
是否開(kāi)啟鑒權(quán)功能
改為:nacos.core.auth.enabled=true
-----------------------
#參數(shù)名
nacos.core.auth.system.type=nacos #142行
#默認(rèn)值
nacos #可選值ldap
#功能
鑒權(quán)類型
保持默認(rèn)
-----------------------
#參數(shù)名
nacos.core.auth.enable.userAgentAuthWhite
#默認(rèn)值
false #151行 默認(rèn)false
#功能
是否使用useragent白名單,主要用于適配老版本升級(jí),置為true時(shí)有安全風(fēng)險(xiǎn)
-----------------------
#參數(shù)名
nacos.core.auth.server.identity.key #155行
#默認(rèn)值
serverIdentity #(2.2.1后無(wú)默認(rèn)值),默認(rèn)為空
#功能
用于替換useragent白名單的身份識(shí)別key,使用默認(rèn)值有安全風(fēng)險(xiǎn)
-----------------------
#參數(shù)名
nacos.core.auth.server.identity.value #156行
#默認(rèn)值
security #(2.2.1后無(wú)默認(rèn)值),默認(rèn)為空
#功能
用于替換useragent白名單的身份識(shí)別value,使用默認(rèn)值有安全風(fēng)險(xiǎn)
-----------------------
#參數(shù)名
nacos.core.auth.plugin.nacos.token.secret.key #163行
#默認(rèn)值
SecretKey012345678901234567890123456789012345678901234567890123456789(2.2.1后無(wú)默認(rèn)值)) #默認(rèn)為空
#功能
默認(rèn)鑒權(quán)插件用于生成用戶登陸臨時(shí)accessToken所使用的密鑰,使用默認(rèn)值有安全風(fēng)險(xiǎn)
nacos.core.auth.plugin.nacos.token.secret.key=SecretKey012345678901234567890123456789012345678901234567890123456789
-----------------------
#參數(shù)名
nacos.core.auth.plugin.nacos.token.expire.seconds
#默認(rèn)值
18000 #154行,默認(rèn)18000
#功能
用戶登陸臨時(shí)accessToken的過(guò)期時(shí)間
修改后的配置片段如圖

保存退出后,再啟動(dòng)nacos服務(wù)就需要賬號(hào)密碼登錄了,默認(rèn)是賬號(hào)nacos 密碼nacos

12、nacos.token.secret.key報(bào)錯(cuò)
Nacos要求nacos.token.secret.key密鑰必須為32字節(jié)的Base64編碼字符串(即原始密鑰長(zhǎng)度為32字節(jié)),若配置的密鑰解碼后長(zhǎng)度不足或超過(guò)32字節(jié),SecurityUtil初始化失敗,導(dǎo)致服務(wù)無(wú)法啟動(dòng)。
常見(jiàn)錯(cuò)誤包括使用明文字符串未進(jìn)行Base64編碼、生成的密鑰長(zhǎng)度不正確或復(fù)制時(shí)包含空格。
解決方法是使用合法的32字節(jié)密鑰并進(jìn)行標(biāo)準(zhǔn)Base64編碼,通過(guò) openssl rand -base64 32 生成合規(guī)密鑰,確保配置項(xiàng)格式正確且無(wú)多余字符。
nacos.token.secret.key 必須滿足以下兩個(gè)條件:
1、Base64解碼后原始字節(jié)數(shù)恰好為32字節(jié);
2、使用標(biāo)準(zhǔn)Base64編碼(非URL安全變種),且不含換行、空格等非法字符。
常見(jiàn)錯(cuò)誤包括:
| 錯(cuò)誤類型 | 示例 | 后果 |
|---|---|---|
| 明文字符串未編碼 | mysecretpassword | 解碼失敗或長(zhǎng)度不符 |
| Base64編碼長(zhǎng)度不足 | YWJjZGVm(僅6字節(jié)) | SecurityUtil校驗(yàn)失敗 |
| 含空格或換行符 | base64+data\n | 解碼異常 |
| 使用openssl生成但未截?cái)?/td> | openssl rand -base64 33 | 解碼后33字節(jié),超長(zhǎng) |
正確生成合規(guī)密鑰的方法
推薦使用OpenSSL工具生成符合要求的密鑰。執(zhí)行以下命令:
openssl rand -base64 32
輸出示例如下:
qR7T9kL2mX4vP6wE8zA1cN5bV7yH3uJ0sK9dF5gH2nM6oQ8r
將該字符串直接填入配置文件中:
nacos.token.secret.key=qR7T9kL2mX4vP6wE8zA1cN5bV7yH3uJ0sK9dF5gH2nM6oQ8r
注意:該字符串為標(biāo)準(zhǔn)Base64編碼,解碼后正好32字節(jié),完全符合HS256算法要求。