需绕过openjdk兼容性陷阱、处理rocksdbjni动态库加载限制、规避selinux强制策略干扰,并让服务以专用用户身份开机自启;必须使用oracle jdk 8u202+,创建nacos专用用户并严格设权,配置mysql持久化与cluster.conf,签名或禁用rocksdbjni,最后通过systemd注册服务。

在银河麒麟V10 Server SP3系统上安装并配置Nacos服务,需绕过OpenJDK兼容性陷阱、处理rocksdbjni动态库加载限制、规避SELinux强制策略干扰,并让服务以专用用户身份开机自启——任何一个环节出错都会导致Nacos启动失败或运行不稳定。
准备JDK环境并验证兼容性
下载Oracle JDK 8u202(或更高稳定版)的Linux x64压缩包,解压到/opt/secure/java目录:tar -zxvf jdk-8u202-linux-x64.tar.gz -C /opt/secure/java
创建不可登录的专用用户nacos,并将Java目录属主设为该用户:sudo chown -R nacos:nacos /opt/secure/java;【必须执行此步,否则后续service以nacos用户启动时会因权限不足无法加载JVM】
切换到nacos用户,编辑其~/.bashrc,添加JAVA_HOME和PATH:export JAVA_HOME=/opt/secure/java/jdk1.8.0_202;export PATH=$JAVA_HOME/bin:$PATH;source ~/.bashrc
验证Java可用性:su - nacos -c "java -version",输出应含"1.8.0_202"且无报错。若提示"command not found",说明PATH未生效或bin目录权限不对——检查/opt/secure/java/jdk1.8.0_202/bin是否对nacos组有rx权限。
下载Nacos并解压到安全路径
以nacos用户身份下载Nacos 2.4.x服务器包(推荐nacos-server-2.4.3.tar.gz),上传至/opt/nacos目录。
执行解压并修正所有权:sudo tar -zxvf nacos-server-2.4.3.tar.gz -C /opt/;sudo chown -R nacos:nacos /opt/nacos
进入nacos/conf目录,备份原始配置:cp cluster.conf.example cluster.conf;cp application.properties application.properties.bak
编辑conf/application.properties,设置server.port=8848、spring.datasource.platform=mysql,并取消注释mysql相关配置项——【跳过此步将导致Nacos默认使用Derby嵌入式数据库,集群模式下必然数据不一致】
配置MySQL持久化与集群通信
第一步:在MySQL中创建nacos_config数据库,执行nacos/conf/nacos-mysql.sql中的建表语句。
第二步:修改conf/cluster.conf,填入三节点IP及端口(如192.168.1.101:8848),每行一个;单节点部署也必须写本机IP+端口,否则Raft协议初始化失败。
第三步:确认conf/application.properties中mysql连接参数正确:spring.datasource.url=jdbc:mysql://192.168.1.101:3306/nacos_config?charset=utf8mb4&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useSSL=false&serverTimezone=Asia/Shanghai
第四步:测试数据库连通性:su - nacos -c "mysql -h192.168.1.101 -unacos -p'nacos' -e 'use nacos_config; show tables;' 2>/dev/null | grep config_info",能输出表名即成功。
处理rocksdbjni权限问题(银河麒麟安全版必做)
方法一:提取并重签名共享库
进入nacos/target/nacos-server.jar所在目录,执行:unzip nacos-server.jar BOOT-INF/lib/rocksdbjni-*.jar -d /tmp/rocksdb-tmp;cd /tmp/rocksdb-tmp/BOOT-INF/lib;sudo cp rocksdbjni-*.jar /opt/nacos/plugins/cmdb/;sudo chown nacos:nacos /opt/nacos/plugins/cmdb/rocksdbjni-*.jar
方法二:禁用CMDB插件(适用于非CMDB场景)
编辑bin/startup.sh,找到JAVA_OPT="${JAVA_OPT} -Dnacos.cmdb.mark=true"这一行,将其注释掉;再在同文件中搜索"-Dnacos.core.auth.enabled=true",确保其值为true——【不关闭CMDB又不签名rocksdbjni,Nacos启动时会因SELinux拒绝加载.so而卡死在“Starting Nacos”阶段】
注册systemd服务并启用开机自启
创建服务定义文件:sudo vim /etc/systemd/system/nacos.service,内容如下:
[Unit]
After=network.target
[Service]
Type=forking
User=nacos
Group=nacos
WorkingDirectory=/opt/nacos
ExecStart=/opt/nacos/bin/startup.sh -m standalone
ExecReload=/opt/nacos/bin/shutdown.sh
Restart=on-failure
RestartSec=30
[Install]
WantedBy=multi-user.target
重载systemd配置:sudo systemctl daemon-reload
启动服务并设为开机自启:sudo systemctl start nacos;sudo systemctl enable nacos
检查状态:sudo systemctl status nacos,确认Active: active (running)且日志末尾出现"nacos is starting..."后接"started"字样。











