Nacos 下载安装教程

news2024/11/15 3:45:29

文章目录

  • 事先准备
  • 下载并启动 Nacos
  • 设置 Nacos 开机自启动
  • 开放 Linux 外部访问权限
  • 访问 Nacos 管理界面
  • 附录

笔者的运行环境:

  • 安装成功过的 Nacos:

    • Nacos 2.2.3
  • 安装成功过的 Java:

    • Java 17.0.7
  • 安装成功过的 Linux:

    • RedHat Enterprise Linux 9 x86_64

    • CentOS 8 x86_64

事先准备

  1. 进行这个教程之前,必须要先安装好一个 Linux 操作系统。这个 Linux 操作系统可以安装在虚拟机中,也可以安装在真实的电脑中。关于这方面的内容,可见笔者的其它博客:

    各种操作系统安装教程大全:
    https://blog.csdn.net/wangpaiblog/article/details/115436520

    为了方便远程输入命令、将文件加入到 Linux 操作系统中,最好还要在一台 Windows 操作系统上面使用一种终端控制软件,如 Xshell、Xftp 等。关于这方面的内容,可见笔者的另一篇博客:

    如何在 Windows 主机上访问本地局域网中的 Linux 主机:
    https://blog.csdn.net/wangpaiblog/article/details/120052152

  2. Nacos 的运行环境需要 Java,因为 Nacos 本来就是基于 Java 编写的。关于 Linux 下 Java 的安装,请见笔者的另一篇博客:

    在 Linux 操作系统中安装 Java:
    https://blog.csdn.net/wangpaiblog/article/details/120093325

    现在,假设读者已经完成 Java 安装的完整过程。至少,需要配置 Java 的 JAVA_HOME 环境变量,以及安装不低于 Java 8 的 Java 版本。

下载并启动 Nacos

  1. 打开 Nacos 官网,找到 Nacos 免安装版的下载界面。如下面的图片所示。

    Nacos 的官网:https://nacos.io/zh-cn/index.html

    Nacos 的源码地址:https://github.com/alibaba/nacos

    Nacos 2 的文档地址:https://nacos.io/zh-cn/docs/v2/quickstart/quick-start.html

    Nacos 版本对应表:https://github.com/alibaba/spring-cloud-alibaba/wiki/%E7%89%88%E6%9C%AC%E8%AF%B4%E6%98%8E

    Nacos 下载处的最终网址:https://github.com/alibaba/nacos/releases/

    在这里插入图片描述

  2. 可以使用 Xshell 将前面下载的 tar.gz 包置入 Linux 操作系统中。注意,Nacos 是免安装的,所以需要注意 Nacos 的存放路径。假设已经将安装包置入当前目录,输入以下命令进行解压:

    tar -zxvf nacos-server-2.2.3.tar.gz

  3. 解压后会得到一个名为 nacos 的目录。此目录就是 Nacos 的安装目录,安装目录下至少会有一个 bin 目录。

    读者可以选择将 Nacos 的安装目录移动至某个固定的目录,这里移动后的 Nacos 安装目录以 /usr/local/nacos 为例,输入以下命令即可。

    mv nacos /usr/local/nacos

  4. 进入 Nacos 安装目录下的 bin 目录,使用如下命令以 单机模式 启动 Nacos。

    cd /usr/local/nacos

    sh startup.sh -m standalone

设置 Nacos 开机自启动

  1. 很遗憾,Nacos 官方没有像其它很多软件一样为开机自启动额外编写一个脚本,所以需要自己改写一个。

    Nacos 的启动等脚本同其它很多软件一样,在安装目录下的 bin 目录中。但是不能直接使用该脚本作为开机自启动脚本。原因是该启动脚本使用了 Java 的环境变量,但环境变量一般是在文件 /etc/profile 设置的。文件 /etc/profile 是在每一个用户登录 Shell 时才会读取的。在 Linux 启动之时此文件中的环境变量不会起作用。

    因此,需要将 Java 的环境变量也写进这个启动脚本中。

  2. 改写这个启动脚本需要知道 Java 的命令所在目录。输入如下命令即可。

    which java

    [root@192 bin]# which java
    /usr/bin/java
    
  3. 下面开始改写这个启动脚本,因为只有启动脚本中使用了 Java 的环境变量。

    输入以下命令将 Nacos 的启动脚本复制一个副本 startupbyos.sh

    cp -p startup.sh startupbyos.sh

  4. 打开此文件,在该脚本中第一个注释代码加入以下命令。此命令是为了添加前面获取到的 Java 的命令所在目录。

    JAVA_HOME=/usr/bin/java
    

    在这里插入图片描述

  5. 使用如下命令在目录 /etc/systemd/system 下创建一个关于 Nacos 的 .service 文件。

    touch /etc/systemd/system/nacos.service

  6. 编辑该文件,在其中写入如下内容。

    [Unit]
    Description=nacos-server
    After=network.target
    
    [Service]
    ExecStart=/usr/local/nacos/bin/startupbyos.sh -m standalone
    ExecStop=/usr/local/nacos/bin/shutdown.sh
    PrivateTmp=true
    Type=forking
    
    [Install]
    WantedBy=multi-user.target
    

    读者需要根据前面自己安装 Nacos 时各个文件的存放位置来分别修改 ExecStart、ExecReload、ExecStop 的值。

    其中,ExecStart 代表 Nacos 后台服务的启动命令。


    【踩坑提醒】

      前面已经提到过,Shell 中的环境变量会在此处无效,因此这里的命令必须使用全路径。

      如果想在 Linux 启动时使用环境变量,可以将此环境变量单独放入一个文件(不妨设为 /etc/systemd/system/nacosenv.conf)中,然后在本 .service 文件 /etc/systemd/system/nacos.service 中的 [Service] 部分使用 EnvironmentFile 属性导入这个环境变量配置文件。

    [Service]
    EnvironmentFile=/etc/systemd/system/nacosenv.conf
    

  7. Red Hat 内置了 SELinux(Security-Enhanced Linux)来保障 Linux 的安全,但这有可能会让目录 /etc/systemd/system 中的服务因权限不足无法启动,从而发生如下报错。

    [root@192 ~]# systemctl status nacos.service
    × nacos.service - nacos-server
         Loaded: loaded (/etc/systemd/system/nacos.service; enabled; preset: disabled)
         Active: failed (Result: exit-code) since Sat 202X-XX-XX XX:XX:XX CST; Xmin XXs ago
        Process: 979 ExecStart=/usr/local/nacos/bin/startupbyos.sh -m standalone (code=exited, status=203/EXEC)
            CPU: 4ms
    
    XX月 XX XX:XX:XX localhost systemd[1]: Starting nacos-server...
    XX月 XX XX:XX:XX localhost systemd[979]: nacos.service: Failed to locate executable /usr/local/nacos/bin/startupbyos.sh: Permission denied
    XX月 XX XX:XX:XX localhost systemd[979]: nacos.service: Failed at step EXEC spawning /usr/local/nacos/bin/startupbyos.sh: Permission denied
    XX月 XX XX:XX:XX localhost systemd[1]: nacos.service: Control process exited, code=exited, status=203/EXEC
    XX月 XX XX:XX:XX localhost systemd[1]: nacos.service: Failed with result 'exit-code'.
    XX月 XX XX:XX:XX localhost systemd[1]: Failed to start nacos-server.
    

    解决办法是修改文件 /etc/selinux/config,将其中的属性 enforcingenforcing 改为 disabled。然后重启 Linux。

    在这里插入图片描述

  8. 依次输出以下命令设置 Nacos 开机自启动:

    systemctl daemon-reload

    systemctl enable nacos.service

  9. 重启电脑试一下是否真正成功。输入以下命令重启电脑:

    reboot

    重启后,马上输入以下命令:

    netstat -na | grep 8848

    [root@192 ~]# netstat -na | grep 8848
    tcp6       0      0 :::8848                 :::*                    LISTEN  
    

    如果输出了端口 8848 被使用的信息,说明 Nacos 开机自启动成功。

开放 Linux 外部访问权限

  1. Linux 通常作为服务器操作系统,一般希望能使用远程操作 Nacos。不过,Linux 上有防火墙,默认会阻止远程对 Nacos 的连接。实际上,它会阻止所有的远程连接。对于笔者的 CentOS 8 x86_64,默认的防火墙为 firewalld,而不是 iptables。(很多早期的 Linux,使用的防火墙是 iptables,但 RedHat 从 RHEL 7 开始就用 firewalld 取代了 iptables。)

    • 一个偷懒的方法就是,永久地关闭防火墙。关闭的方法如下:

      systemctl stop firewalld

      systemctl mask firewalld

      firewall-cmd --reload

    • 另一个方法是,在防火墙中永久开放所属的 Nacos 各种端口。这里以 Nacos 管理界面默认的端口 8848 为例。开放的方法如下:

      firewall-cmd --zone=public --add-port=8848/tcp --permanent

      firewall-cmd --reload

      单独开放完端口 8848 之后,可以输入以下命令查看是否生效:

      firewall-cmd --zone=public --query-port=8848/tcp

      [root@localhost temp]# firewall-cmd --zone=public --query-port=8848/tcp
      yes
      

      实际上,也可以输入以下命令查看所有开放的端口:

      firewall-cmd --zone=public --list-ports

      [root@localhost temp]# firewall-cmd --zone=public --list-ports
      8848/tcp
      

访问 Nacos 管理界面

  1. 现在就可以尝试远程登录 Nacos 管理界面了。在浏览器中输入以下网址即可。

    http://Nacos 所在服务器的 IP:8848/nacos/index.html

    在这里插入图片描述

附录

  • Spring 官方文档及相关资料的网址集合:https://blog.csdn.net/wangpaiblog/article/details/131881448

  • Spring 官方脚手架:

    • Spring Boot/Cloud 脚手架:https://start.spring.io/

    • Spring Cloud Alibaba 脚手架:https://start.aliyun.com/

  • Spring Cloud Alibaba 相关网址:

    • 源码地址:https://github.com/alibaba/spring-cloud-alibaba

    • 版本对应表:https://github.com/alibaba/spring-cloud-alibaba/wiki/%E7%89%88%E6%9C%AC%E8%AF%B4%E6%98%8E

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/823894.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

学习Node.js的基础知识和核心概念(全面)

Node.js,这个神奇的技术,融合了前端与后端的力量,让JavaScript在服务器端发挥了异乎寻常的魔力。本文将通过代码和文字解释,全面介绍Node.js的特点,从异步非阻塞I/O到强大的模块系统,再到丰富的包管理和事件…

计算机软件著作权登记申请表-模板

计算机软件著作权登记申请表 软件基本信息 软件全称 Xxxxx软件 软件简称(如无则不填) 分类号 说明:在附件图1-计算机软件分类代码表中提供的分类编号选择填写 计算机软件分类代码(单选) 30104 计算机软件适用的国民经济代…

C++学习day--17 二级指针、数组指针、指针数组

1、二级指针 二级指针的定义: 二级指针也是一个普通的指针变量,只是它里面保存的值是另外一个一级指针的地址 int guizi1 888; int *guizi2 &guizi1; //1 级指针,保存 guizi1 的地址 int **liujian &guizi2; //2 级指针&a…

操作系统使用免密登录

服务器免密登录 背景 在工作中使用密码登录有时候会出现这样或者那样的不方便,一是密码要输入,如果明文输入则不安全,二则一旦修改密码要重新分发到有权限的小伙伴 场景 在之前的工作中有很多场景需要免密等登录,使用免密带来…

Lvs missing port问题实例

我正在「拾陆楼」和朋友们讨论有趣的话题,你⼀起来吧? 拾陆楼知识星球入口 LVS相关文章链接: LVS 流程 SVS 流程 LVS extract net方法

QMLDay2:圆角按钮,关联键盘左右键,鼠标点击。状态切换控制。

QMLDay2 test1 作用: 圆角按钮,关联键盘左右键,鼠标点击。状态切换控制。 代码: import QtQuick 2.15 import QtQuick.Window 2.15 import QtQuick.Controls 2.15Window {width: 640height: 480visible: truecolor: "wh…

H.265/HEVC 速率控制

文章目录 速率控制视频编码速率控制速率控制的基本原理缓冲机制速率控制技术 H.265/HEVC 速率控制1. 目标比特分配2. 量化参数确定 速率控制 目前实际的视频编码率失真优化过程包括两部分:速率控制部分将视频序列分成编码单元,考虑编码单元的相关性通过…

C#,数值计算——t-分布(Student distribution)的计算方法与源程序

在概率论和统计学中,学生t-分布(Students t-distribution)经常应用在对呈正态分布的总体的均值进行估计。它是对两个样本均值差异进行显著性测试的学生t测定的基础。t检定改进了Z检定(en:Z-test),不论样本数…

【PyQt实现复现框CheckBox】

PyQt实现复现框CheckBox 1 安装环境2 CtrlN,新建Main Window窗口,保存为checkBox.ui文件3 CheckBox的三种状态4 实现通用复选框的选中状态设置用户权限功能 1 安装环境 1)Python环境安装PyQt5、PyQt-sip、PyQt5Designer、PyQt5-tools 2&…

【搜索】BFS中的最短路模型

算法提高课笔记 目录 单源最短路迷宫问题题意思路代码 武士风度的牛题意思路代码 抓住那头牛题意思路代码 多源最短路矩阵距离题意思路代码 双端队列BFS电路维修题意思路代码(加了注释) BFS可以解决边权为1的最短路问题,下面是相关例题 单源…

Mybatis 知识点

Mybatis 知识点 1.1 Mybatis 简介 1.1.1 什么是 Mybatis Mybatis 是一款优秀的持久层框架支持定制化 SQL、存储过程及高级映射Mybatis 几乎避免了所有的 JDBC 代码和手动设置参数以及获取结果集MyBatis 可以使用简单的 XML 或注解来配置和映射原生类型、接口和 Java 的 POJO…

PyTorch深度学习实战(8)——批归一化

PyTorch深度学习实战(8)——批归一化 0. 前言1. 批归一化原理2. 批归一化优势3. 批归一化对模型训练的影响3.1 未使用批归一化,且输入值较小3.2 使用批归一化,且输入值较小3.3 使用批归一化,且输入值较大 小结系列链接…

Redis—环境搭建

Redis—环境搭建 🔎Centos 安装 Redis5创建符号链接修改配置文件启动 Redis停止 Redis 🔎Centos 安装 Redis5 Centos8 安装 Redis5 yum install -y redisCentos7 安装 Redis5 Centos7 中 yum 源提供的 Redis 版本是 Redis3(有点老), 因此先安装 scl 源 …

算法综合篇专题二:滑动窗口

“在混沌想法中&#xff0c;最不可理喻念头。” 1、长度最小的子数组 (1) 题目解析 (2) 算法原理 class Solution { public:int minSubArrayLen(int target, vector<int>& nums) {int n nums.size();int sum 0;int len INT_MAX;for(int left0,r…

mysql进阶-用户的创建_修改_删除

1. 使用mysql单次查询 [rootVM-4-6-centos /]# mysql -h localhost -P 3306 -p mytest -e "select * from book1"; Enter password: ------------------------------------------- | id | category_id | book_name | num | ----------------------------…

数据结构 | 基本数据结构——队列

目录 一、何谓队列 二、队列抽象数据类型 三、用Python实现队列 四、模拟&#xff1a;传土豆 五、模拟&#xff1a;打印任务 5.1 主要模拟步骤 5.2 Python实现 一、何谓队列 队列是有序集合&#xff0c;添加操作发生在“尾部”&#xff0c;移除操作则发生在“头部”。新…

【Javascript】基础知识

文章目录 01 变量的声明02 数据类型字符串型boolean类型undefined null类型symbol类型超大整数 bigint数组类型普通对象 01 变量的声明 02 数据类型 复习: 声明 ​ 声明变量关键词 ​ let ​ const ​ 变量名 >变量命名规范 ​ 英文 数字 _ $不要以数字开头 ​ 见名知意 ​…

深度学习之tensorboard可视化工具

(1)什么是tensorboard tensorboard是TensorFlow 的一个可视化工具包&#xff0c;提供机器学习实验所需的可视化和工具&#xff0c;该工具的功能如下&#xff1a; 跟踪和可视化指标&#xff0c;例如损失和精度可视化模型图&#xff08;操作和层&#xff09;查看权重、偏差或其…

【Java多线程学习4】volatile关键字及其作用

说说对于volatile关键字的理解&#xff0c;及的作用 概述 1、我们知道要想线程安全&#xff0c;就需要保证三大特性&#xff1a;原子性&#xff0c;有序性&#xff0c;可见性。 2、被volatile关键字修饰的变量&#xff0c;可以保证其可见性和有序性&#xff0c;但是volatile…

uniApp 对接安卓平板刷卡器, 读取串口数据

背景: 设备: 鸿合 电子班牌 刷卡对接 WS-B22CS, 安卓11; 需求: 将刷卡器的数据传递到自己的App中, 作为上下岗信息使用, 以完成业务; 对接方式: 1. 厂家技术首先推荐使用 接收自定义广播的方式来获取, 参考代码如下 对应到uniApp 中的实现如下 <template><view c…