linux-tutorial 项目实践:Nacos 从零安装、启动与微服务注册发现实战指南
【免费下载链接】linux-tutorial:penguin: Linux教程,主要内容:Linux 命令、Linux 系统运维、软件运维、精选常用Shell脚本项目地址: https://gitcode.com/GitHub_Trending/lin/linux-tutorial
本篇指南以 linux-tutorial 项目中的 Nacos 安装配置文档 为主线,系统讲解 Nacos 的预备环境、源码与发行包两种获取方式、单机启动、基于 Open API 的服务注册/发现与配置管理、以及优雅关闭等完整操作流程,并结合仓库内配套的 nacos-install.sh 等一键安装脚本与 JDK/Maven 安装文档进行源码级佐证。读完本文,你将能够在 Linux/Unix/Mac/Windows 环境中独立完成 Nacos 的部署,并通过 RESTful 接口完成微服务的注册发现与动态配置读写。
1. 预备环境准备
Nacos(Dynamic Naming and Configuration Service)是一款用于发现、配置和管理微服务的软件,它基于 Java 实现,因此运行环境首先依赖 JDK。官方要求的环境清单如下:
| 依赖项 | 版本要求 | 用途 |
|---|---|---|
| 操作系统 | 64 bit OS,支持 Linux/Unix/Mac/Windows,推荐 Linux/Unix/Mac | Nacos 服务器运行载体 |
| JDK | 64 bit JDK 1.8+ | Nacos 运行时依赖 |
| Maven | Maven 3.2.x+(仅源码构建时需要) | 从源码编译 Nacos 需要 |
其中有两项关键约束值得注意:
- 若仅以发行包方式部署 Nacos,只需要 JDK 即可,Maven 并非必需;只有当你要从源码构建 Nacos 时,才需要配置 Maven 环境。
- 官方推荐在 Linux/Unix/Mac 环境下部署,Windows 虽可运行,但更适合用于本地开发调试。
在本仓库中,JDK 与 Maven 的安装均提供了配套文档和脚本:
- JDK 安装:可参考 docs/linux/soft/jdk-install.md,该文档覆盖 Windows 环境变量(
JAVA_HOME、CLASSPATH、PATH)配置、Linux 下解压 tar.gz 并写入/etc/profile的方法,以及 RedHat 发行版 rpm 安装方式。仓库还提供了 CentOS 下的 jdk8-install.sh,一条命令即可完成安装:yum -y install java-1.8.0-openjdk-devel.x86_64 java -version # 验证安装 - Maven 安装:可参考 docs/linux/soft/maven-install.md 与 maven-install.sh。其中安装脚本还额外完成了将 Maven 镜像替换为阿里云镜像(
settings-aliyun.xml)的加速配置,并自动将MAVEN_HOME写入/etc/profile:export MAVEN_HOME=/opt/maven/apache-maven-3.6.0 export PATH=$MAVEN_HOME/bin:$PATH
完成上述环境准备后,可以通过java -version与mvn -v两条命令分别验证 JDK 与 Maven 是否就绪。
2. 获取 Nacos:源码编译与发行包两种方式
Nacos 可以通过源码编译或下载发行包两种途径获取,前者适合需要定制或研究源码的场景,后者适合生产环境快速部署。
2.1 从源码编译(需要 Maven)
从源码获取 Nacos 需要先克隆代码,然后使用 Maven 构建发行包:
git clone https://github.com/alibaba/nacos.git cd nacos/ mvn -Prelease-nacos clean install -U ls -al distribution/target/ # change the $version to your actual path cd distribution/target/nacos-server-$version/nacos/bin该方式的关键点在于:
-Prelease-nacos激活 release 构建 profile,用于打包出可供分发的nacos-server产物;- 构建产物位于
distribution/target/目录下,其中包含nacos/bin下的启动与关闭脚本; - 由于国内网络环境访问 Maven 中央仓库较慢,建议先参照 maven-install.sh 将 Maven 配置为阿里云镜像,可显著缩短依赖下载时间。
2.2 下载编译好的发行包(推荐)
从 Nacos 官方 Release 页面下载nacos-server-$version.zip(或.tar.gz),解压后即可使用:
unzip nacos-server-$version.zip # 或 tar -xvf nacos-server-$version.tar.gz cd nacos/bin2.3 仓库配套的一键安装脚本
本仓库在 codes/linux/soft/nacos-install.sh 中提供了一个开箱即用的安装脚本,它在启动前会先做依赖检查,再自动完成下载、解压与目录整理:
#!/usr/bin/env bash # 需要提前安装 jdk、maven;@system: 适用于所有 linux 发行版本 # 1. 依赖检查:缺少 java 或 mvn 直接退出 command -v java > /dev/null 2>&1 || { printf "${RED}Require java but it's not installed.${RESET}\n"; exit 1; } command -v mvn > /dev/null 2>&1 || { printf "${RED}Require mvn but it's not installed.${RESET}\n"; exit 1; } # 2. 参数处理:version 默认 1.0.0,root 默认 /opt/nacos version=1.0.0 if [[ -n $1 ]]; then version=$1; fi root=/opt/nacos if [[ -n $2 ]]; then root=$2; fi # 3. 下载发行包并解压 mkdir -p ${root} curl -o ${root}/nacos-server-${version}.zip \ https://github.com/alibaba/nacos/releases/download/${version}/nacos-server-${version}.zip unzip ${root}/nacos-server-${version}.zip -d ${root}/nacos-server-${version} mv ${root}/nacos-server-${version}/nacos/* ${root}/nacos-server-${version} rm -rf ${root}/nacos-server-${version}/nacos脚本使用方式为:
sh nacos-install.sh [version] [path] # 示例:sh nacos-install.sh 1.0.0 /opt/nacos从源码结构可以看出,该脚本的设计思路非常清晰:依赖预检 → 版本/路径参数化 → 下载 → 解压 → 目录扁平化整理,其中mv一步将解压出的内层nacos目录内容上移一层,统一了目录结构,便于后续直接使用bin/startup.sh。此外,dunwu-soft.sh 提供了一键软件安装菜单,其中也包含 nacos 选项,可直接选择安装。
3. 启动 Nacos 服务器
安装完成后,进入nacos/bin目录,按操作系统选择启动方式。
3.1 Linux/Unix/Mac 启动
sh startup.sh -m standalone其中-m standalone表示以单机模式启动(非集群模式)。startup.sh内部会读取环境变量并调用java启动 Nacos 服务,默认监听8848端口,并提供9848(gRPC 端口,1.x 版本起用于长连接通信)。
启动成功后,可在浏览器访问 Nacos 控制台,并通过日志确认启动状态:
# 查看启动日志(默认位于 nacos/logs/ 目录) tail -f logs/start.out3.2 Windows 启动
cmd startup.cmd或者直接双击startup.cmd文件运行。
4. 服务注册、发现与配置管理(Open API 实战)
Nacos 原生提供一组 RESTful Open API,无需引入任何 SDK 即可用curl完成微服务四大核心操作,非常适合脚本集成与功能验证。
4.1 服务注册
将 IP 为20.18.7.10:8080的实例注册到名为nacos.naming.serviceName的服务下:
curl -X POST 'http://127.0.0.1:8848/nacos/v1/ns/instance?serviceName=nacos.naming.serviceName&ip=20.18.7.10&port=8080'4.2 服务发现
获取nacos.naming.serviceName服务下的全部健康实例列表:
curl -X GET 'http://127.0.0.1:8848/nacos/v1/ns/instances?serviceName=nacos.naming.serviceName'返回值是 JSON 格式的实例集合,包含实例的 IP、端口、权重、健康状态等元数据,客户端可据此实现负载均衡。
4.3 发布配置
向group=test分组下发布 dataId 为nacos.cfg.dataId的配置,配置内容为HelloWorld:
curl -X POST "http://127.0.0.1:8848/nacos/v1/cs/configs?dataId=nacos.cfg.dataId&group=test&content=HelloWorld"4.4 获取配置
读取上述已发布的配置内容:
curl -X GET "http://127.0.0.1:8848/nacos/v1/cs/configs?dataId=nacos.cfg.dataId&group=test"四个接口的关键参数语义归纳如下:
| 接口 | 方法 | 路径 | 核心参数 |
|---|---|---|---|
| 服务注册 | POST | /nacos/v1/ns/instance | serviceName、ip、port |
| 服务发现 | GET | /nacos/v1/ns/instances | serviceName |
| 发布配置 | POST | /nacos/v1/cs/configs | dataId、group、content |
| 获取配置 | GET | /nacos/v1/cs/configs | dataId、group |
其中命名服务(ns)与管理配置(cs)是 Nacos 的两大核心能力,分别对应服务注册发现与动态配置中心。在实际微服务架构中,这两类能力通常由spring-cloud-starter-alibaba-nacos-discovery和spring-cloud-starter-alibaba-nacos-config等客户端组件在应用内部调用,但通过上述 curl 命令可以脱离 SDK 直接验证 Nacos 服务端功能是否正常。
5. 关闭 Nacos 服务器
5.1 Linux/Unix/Mac
sh shutdown.shshutdown.sh会读取 Nacos 服务进程的 PID 并发送停止信号,优雅地终止 JVM 进程。
5.2 Windows
cmd shutdown.cmd或直接双击shutdown.cmd运行文件。
6. 安装验证清单与故障排查要点
结合本文与仓库配套文档,给出一个完整的部署验证清单:
java -version确认 JDK 1.8+ 已就绪(参考 jdk-install.md);- 若走源码构建,执行
mvn -v确认 Maven 3.2.x+ 已就绪(参考 maven-install.md); - 使用 nacos-install.sh 完成自动化安装,或手动解压发行包;
- 执行
sh startup.sh -m standalone启动,观察logs/start.out日志; - 依次调用第 4 节中的注册/发现/发布/获取四个 curl 接口做冒烟验证;
- 验证结束后执行
sh shutdown.sh关闭服务。
常见故障点:
- 启动报错找不到 java:说明 JDK 未安装或
JAVA_HOME/PATH未配置,按 jdk-install.md 配置环境变量后重新执行source /etc/profile; - 服务注册后立刻消失:检查实例所在主机的健康检查配置,Nacos 默认会对注册实例进行心跳检测,服务端在超时周期内未收到心跳会将其标记为不健康并摘除;
- 端口冲突:默认监听
8848端口,若被占用可调整 Nacos 配置文件中的端口并重启。
7. 小结
通过本文,你可以掌握 Nacos 从环境准备、获取安装、启动运行到服务注册发现与配置管理的完整闭环。仓库中 docs/linux/soft/nacos-install.md 是速查手册,codes/linux/soft/nacos-install.sh 与 dunwu-soft.sh 是自动化部署工具,配合 docs/linux/soft/README.md 中 Nacos 与其他中间件(RocketMQ、Kafka、ZooKeeper 等)的安装索引,即可在 Linux 服务器上快速搭建一套完整的微服务基础设施环境。
【免费下载链接】linux-tutorial:penguin: Linux教程,主要内容:Linux 命令、Linux 系统运维、软件运维、精选常用Shell脚本项目地址: https://gitcode.com/GitHub_Trending/lin/linux-tutorial
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考