centos环境下部署nacos2.2.0
缘起
工作需要基于centos环境搭建一套nacos单机,现做简单记录。
安装部署单机nacos
安装java环境
yum install -y java-1.8.0-openjdk java-1.8.0-openjdk-devel设置java环境变量
vi /etc/profile
在文件末尾添加:
export JAVA_HOME=$(dirname $(dirname $(readlink $(which javac))))
export PATH=$JAVA_HOME/bin:$PATH
执行使配置生效:
source /etc/profile
验证安装:
java -version
下载安装nacos安装包
从github上下载nacos安装包
wget https://github.com/alibaba/nacos/releases/download/2.3.0/nacos-server-2.3.0.tar.gz
解压安装包
tar -zxvf nacos-server-2.3.0.tar.gz
mv nacos /home/gl/nacos # 选择路径运行nacos (单机模式)
vi /home/gl/nacos/bin/startup.sh
找到:MODE=”cluster” 改为:MODE=”standalone”
或者运行时加参数:
sh startup.sh -m standalone查看nacos是否启动成功
ps -ef | grep nacos
netstat -tunlp | grep 8848
也可以访问浏览器:http://<服务器IP>:8848/nacos
也可以观察启动日志,成功的日志会有nacos字样的图形展示
/nacos/logs/start.out
停止nacos命令:
sh /home/gl/nacos/bin/shutdown.sh
- 本地项目相关配置
application:
name: mes
profiles:
active: dev #表示开发环境
cloud:
nacos:
discovery:
server-addr: 192.168.92.61:8848
service: mes
# 禁用nacos自动配置
enabled: true
namespace: 924181f7-3333-1111-2222-41979ef403dc
group: DEFAULT_GROUP
username: nacos
password: nacos
config:
server-addr: 192.168.92.61:8848
file-extension: yaml
# 禁用nacos自动配置
enabled: true
namespace: 924181f7-3333-1111-2222-41979ef403dc
group: DEFAULT_GROUP
# 服务器名字
prefix: mes
username: nacos
password: nacos
部署持久化的mysql
执行相关脚本
2.2.0版本的nacos,需要来到 /nacos/conf/mysql-schema.sql内容,在navicate执行该脚本,创建对应表及数据修改/nacos/conf/application.properties 文件,修改内容如下:
#*************** Config Module Related Configurations ***************# ### If use MySQL as datasource: spring.datasource.platform=mysqlCount of DB:
db.num=1
Connect URL of DB:
db.url.0=jdbc:mysql://ip地址:3306/数据库名?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=UTC
db.user.0=数据库账号
db.password.0=数据库密码If turn on auth system:
nacos.core.auth.enabled=true
nacos.security.user.name=nacos
nacos.security.user.password=nacos
- 停止并重启nacos
注意,2.2.0 版本的访问地址为:http://ip地址:8848/nacos/index.html
遇到问题
在部署nacos过程中,遇到一些问题,做如下梳理:
账号密码登录错误
部署完成,登录页面能够正常打开,但是输入配置文件当中的账号密码,仍然无法登录,提示账号密码错误。手动修改对应数据库user表,对 password md5 加密后,仍然无法登录。最终排查发现是 db.url.0 中配置的 “ip地址:3306/数据库名”,其中数据库名我没有调整成和 mysql 数据库一致,导致其实一直没有正确的连接到数据库。
能注册到 nacos 但是无法获取到对应的配置
登录后发现系统正常注册,但是一直无法获取到配置。各种原因排查一遍,需要注意如下两点:
其一,配置文件的dataID = {application.name}-{profiles.active}.{nacos.config.file-extension},项目在启动的时候会优先加载{application.name}‑{profile}.{file‑extension},再加载{application.name}.{file‑extension}
其二,在 Spring 项目中,application.yml 和 bootstrap.yml 都是用来定义配置属性的 YAML 文件,但它们在加载时机、作用范围和适用场景上有明显区别:其中 bootstrap.yml 最早被加载,位于 spring 上下文初始化阶段,而 application.yml 会在 Spring 上下文创建完基础环境后加载,即应用阶段。
我发现自己无法获取配置的原因就是第二点,配置写在 application.yml 当中,导致一直读取不到 nacos 配置文件,换到 bootstrap.yml 果然恢复。