• Linux中部署Spring Cloud项目


    Linux中部署Spring Cloud项目

    文章为本人在学习的过程中,记录部署过程,仅供参考学习。因本人经验不足,教程或有不妥之处,还望指正。

    保姆级教程,敬请食用!!!

    简介

    在学习过程中,部署时使用的项目是一个个人学习项目。若您喜欢,也可点击 Gitee 源码查看。

    logo

    Center Platform v1.0.0
    基于 Vue/Element UI 和 Spring Boot/Spring Cloud & Alibaba 前后端分离的分布式微服务架构

    项目简介:

    • 采用前后端分离的模式,微服务版本前端。
    • 后端采用Spring Boot、Spring Cloud & Alibaba。
    • 注册中心、配置中心选型Nacos,权限认证使用Redis。

    项目需要的环境及工具清单:

    • VMware Workstation Pro 16
    • CentOS 7
    • MobaXterm
    • Redis
    • JDK 1.8
    • MySQL
    • Nacos
    • Node.js
    • nginx

    指令传送门

    firewall防火墙

    CentOS 7及以上linux默认使用该防火墙

    1、查看firewall服务状态

    systemctl status firewalld
    
    • 1

    出现**Active: active (running)**切高亮显示则表示是启动状态。

    出现**Active: inactive (dead)**灰色表示停止,看单词也行。
    2、查看firewall的状态

    firewall-cmd --state
    
    • 1

    3、开启、重启、关闭、firewalld.service服务

    # 开启
    service firewalld start
    # 重启
    service firewalld restart
    # 关闭
    service firewalld stop
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    4、查看防火墙规则

    firewall-cmd --list-all
    
    • 1

    5、查询、开放、关闭端口

    # 查询端口是否开放
    firewall-cmd --query-port=6379/tcp
    # 开放80端口
    firewall-cmd --permanent --add-port=80/tcp
    # 移除端口
    firewall-cmd --permanent --remove-port=8080/tcp
    #重启防火墙(修改配置后要重启防火墙)
    firewall-cmd --reload
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    参数解释

    1、firwall-cmd:是Linux提供的操作firewall的一个工具;
    2、--permanent:表示设置为持久;
    3、--add-port:标识添加的端口;
    
    • 1
    • 2
    • 3

    systemctl

    1. 查看多个服务状态

      systemctl status nacos mysql redis
      
      • 1

      image-20220805120256410

    2. 重新加载所有service服务

      systemctl daemon-reload
      
      • 1
    3. 开机启动nacos.service

      systemctl enable redis.service
      
      • 1
    4. 查看该service是否开机启用

      systemctl is-enabled redis.service
      
      • 1
    5. 启动该服务

      systemctl start redis.service
      
      • 1
    6. 查看状态

      systemctl status redis.service
      
      • 1

    vim

    1. 全选,全部复制,全部删除快捷键

      全选(高亮显示):按esc后,然后ggvG或者ggVG
      
      全部复制:按esc后,然后ggyG
      
      全部删除:按esc后,然后dG
      
      解析:
      
      gg:是让光标移到首行,在vim才有效,vi中无效 
      
      v : 是进入Visual(可视)模式 
      
      G :光标移到最后一行 
      
      选中内容以后就可以其他的操作了,比如: 
      d  删除选中内容 
      y  复制选中内容到0号寄存器 
      "+y  复制选中内容到+寄存器,也就是系统的剪贴板,供其他程序用
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8
      • 9
      • 10
      • 11
      • 12
      • 13
      • 14
      • 15
      • 16
      • 17
      • 18

    扩展空间

    在安装环境的过程中,遇见过几次存储不够用的情况,收集资料,总结扩展存储的方法。

    1. 关机状态下,设置硬盘大小

      image-20220805151519095

    2. 这样之后,实际并不会扩展好,还需要一些配置

    3. 置后进系统查看空间大小变化,实际并没有什么变化

      df -h
      lsblk
      
      • 1
      • 2

      image-20220805160844840

    4. 执行命令对新加的磁盘进行分区操作:

      fdisk /dev/sda
      
      • 1

      image-20220805161324899

    5. sda3 的Id 是83 我们要将它改成8e跟sda2是一样的 将system 类型改成Linux LVM

      fdisk -l
      
      • 1

      image-20220805161541769

      fdisk /dev/sda
      
      • 1

      image-20220805161838286

      再查看一下:

      fdisk -l
      
      • 1

      image-20220805161931107

    6. 重启虚拟机格式化新建分区

      reboot
      
      • 1
    7. 然后将新添加的分区添加到已有的组实现扩容
      查看卷组名:

      vgdisplay
      
      • 1

      image-20220805162652499

    8. 初始化刚刚的分区

      pvcreate /dev/sda3
      
      • 1

      image-20220805162810212

    9. 将初始化过的分区加入到虚拟卷组名

      # vgextend 虚拟卷组名 新增的分区
      vgextend centos /dev/sda3
      
      • 1
      • 2

      image-20220805163729165

      在这里可能因为根目录没有空间了导致加入失败。

    10. 再次查看卷组情况

      vgdisplay
      
      • 1

      image-20220805163858059

      可以看到,有大约27.8G的空间是空闲的。查看当前磁盘情况并记下需要扩展的文件系统名,这里要扩展根目录/dev/mapper/centos-root

      df -h
      
      • 1

      image-20220805164114143

    11. 扩容已有的卷组容量(这里有个细节,就是不能全扩展满,比如空闲空间是27.8G,然后这里的话27.8G不能全扩展上,这里我扩展的是26G)

      # lvextend -L +需要扩展的容量 需要扩展的文件系统名 
      lvextend -L +26G /dev/mapper/centos-root
      
      • 1
      • 2

      image-20220805164338482

      可以看到,卷组已经扩容了

    12. 需要将文件系统扩容

      查看文件系统的格式:

      cat /etc/fstab | grep centos-root
      
      • 1

      image-20220805164548405

    13. 文件系统是xfs,所以需要xfs的命令来扩展磁盘空间

      # xfs_growfs 文件系统名
      xfs_growfs /dev/mapper/centos-root
      
      • 1
      • 2

      image-20220805164650074

    14. 查看,扩容成功

      df -h
      
      • 1

      image-20220805164815344

    环境搭建

    VMware Workstation Pro 16

    下载

    下载地址:https://www.vmware.com/products/workstation-pro/workstation-pro-evaluation.html

    下载版本:VMware Workstation Pro 16

    image-20220803111514110

    安装步骤

    1. 找到下载好的VMware-workstation-full-16.2.4-20089737.exe文件,鼠标右击以管理员身份运行
    2. 进入安装界面,点击下一步
    3. 先勾选我接受许可协议中的条款,然后点击下一步
    4. 选择软件安装路径,默认安装在C盘,点击更改可修改安装路径,注意:安装路径文件夹名称均不要含有中文字符,然后点击下一步
    5. 用户体验设置取消勾选,点击下一步
    6. 无脑下一步
    7. 安装中,时间可能有点长,耐心等待
    8. 可以选择输入密钥,或者跳过进行试用30天,密钥可以在网上搜索
    9. 安装完成

    image-20220803113816207

    CentOS 7

    下载

    下载地址:http://mirrors.aliyun.com/centos/7/isos/x86_64/

    下载版本:CentOS-7-x86_64-DVD-2009.iso

    使用阿里云的镜像库:

    image-20220803123845580

    补充:

    网易镜像库:https://mirrors.163.com/centos/7.9.2009/isos/x86_64/

    搜狐镜像库:http://mirrors.sohu.com/centos/7.9.2009/isos/x86_64/

    清华大学镜像库:https://mirrors.tuna.tsinghua.edu.cn/centos/7.9.2009/isos/x86_64/

    重庆大学镜像库:https://mirrors.cqu.edu.cn/centos/7.9.2009/isos/x86_64/

    安装步骤

    1. 创建新的虚拟机

    2. 自定义,下一步。

      典型安装:VMware会将主流的配置应用在虚拟机的操作系统上,对于新手来很友好。

      自定义安装:自定义安装可以针对性的把一些资源加强,把不需要的资源移除。避免资源的浪费。

      这里我选择自定义安装。

      image-20220803125333972

    3. 下一步

      image-20220803125350344

    4. 稍后安装操作系统,下一步

      image-20220803125412619

    5. 选择操作系统、版本。这里选择之后安装的操作系统,正确的选择会让vm tools更好的兼容。这里选择linux下的CentOS

      image-20220803125430953

    6. 选择地址,不建议C盘,路径不建议中文、空格、特殊字符。虚拟机名称就是一个名字,在虚拟机多的时候方便自己找到,按自己喜好命名。

      image-20220803131842013

    7. 处理器按需选择。处理器分配要根据自己的实际需求来分配。在使用过程中CPU不够的话是可以再增加的。

      image-20220803125511307

    8. 内存按需选择。内存也是要根据实际的需求分配。我的宿主机内存是16G所以我给虚拟机分配2G内存。

      image-20220803125530857

    9. 使用NAT网络连接。

      image-20220803125759524

      网络连接类型一共有桥接、NAT、仅主机和不联网四种:

      桥接:选择桥接模式的话虚拟机和宿主机在网络上就是平级的关系,相当于连接在同一交换机上。

      NAT:NAT模式就是虚拟机要联网得先通过宿主机才能和外面进行通信。

      仅主机:虚拟机与宿主机直接连起来

      桥接与NAT模式访问互联网过程,如下图所示:

      image-20220803131043882

    10. 默认,下一步

      image-20220803125819554

    11. 默认,下一步

      image-20220803125839843

    12. 默认,下一步

      image-20220803125950041

    13. 选择内存。磁盘容量暂时分配20G即可后期可以随时增加,不要勾选立即分配所有磁盘,否则虚拟机会将20G直接分配给CentOS,会导致宿主机所剩硬盘容量减少。勾选将虚拟磁盘拆分成多个文件,这样可以使虚拟机方便用储存设备拷贝复制。

      image-20220803130028695

    14. 默认,下一步

      image-20220803130137143

    15. 选择自定义硬件,主要设置CentOS的镜像

      image-20220803130320459

    16. 选择声卡、打印机等不需要的硬件然后移除,按需选择即可。

      image-20220803131447393

    17. 先选择CD/DVD,再选择使用ISO映像文件,最后选择浏览找到下载好的镜像文件。启动时连接一定要勾选上后确定。然后关闭。

      image-20220803131641367

    18. 点击完成

      image-20220803131738983

    19. 开启虚拟机

      image-20220803132204761

    20. 安装操作系统

      开启虚拟机后会出现以下界面:

      • Install CentOS 7 安装CentOS 7
      • Test this media & install CentOS 7 测试安装文件并安装CentOS 7
      • Troubleshooting 修复故障

      选择第一项,安装直接CentOS 7,回车,进入下面的界面

      image-20220803132402191

    21. 选择安装过程中使用的语言,这里选择英文、键盘选择美式键盘。点击Continue

      image-20220803140714600

    22. 首先设置时间

      image-20220803140734247

      时区选择上海,查看时间是否正确。然后点击Done

      image-20220803140800965

    23. 选择需要安装的软件

      image-20220803140818577

      选择 Server with Gui,然后点击Done

      image-20220803140842052

    24. 选择安装位置,在这里可以进行磁盘划分。

      image-20220803140923369

      选择i wil configure partitioning(我将会配置分区),然后点击done

      image-20220803141022712

      如下图所示,点击加号,选择/boot,给boot分区分200M。最后点击Add

      image-20220803141128938

      然后以同样的办法给其他三个区分配好空间后点击Done

      image-20220803141147077

      然后会弹出摘要信息,点击AcceptChanges(接受更改)

      image-20220803141209876

    25. 设置主机名与网卡信息

      image-20220803141235438

      首先要打开网卡,然后查看是否能获取到IP地址,再根据需要更改主机名后点击Done。

      image-20220803141342677

    26. 最后选择Begin Installation(开始安装)

      image-20220803141412922

    27. 设置root密码

      image-20220803141431459

      设置root密码后点击Done

      image-20220803141454778

    28. 点击USER CREATION 创建管理员用户

      image-20220803141518635

      输入用户名密码后点击Done

      image-20220803141536720

    29. 等待系统安装完毕重启系统即可

      image-20220803141556296

    配置静态IP

    在上面,我们成功的将CentOS镜像安装到了我们的虚拟机上,可是这个时候,虚拟机还没有配置IP信息,为了后面开发
    方便,我们需要设置一个静态IP。

    1. 编辑-》虚拟网络编辑器

      image-20220803143838071

    2. 前边配置的NAT模式,所以选中这个

      image-20220803144023930

    3. 点击【更改设置】,会重新进入

      image-20220803144132798

      配置网络段(子网ip段)为192.168.184.0,点击【NAT设置】,配置【网关ip】,注意【网关ip】需要在【子网ip】段下,这里设置为【192.168.184.2】

      image-20220803144731359

    4. 打开命令行,输入vim /etc/sysconfig/network-scripts/ifcfg-ens33,并修改配置文件内容

      image-20220803151741951

      信息说明:

      • IPADDR:需要在刚设置的子网IP网段下。这里设置为192.168.184.128image-20220803145243141

      • GATEWAY:需要和设置的保持一致。

        image-20220803145501739

      • NETMASK:255.255.255.0

      • DNS1:和GATEWAY设置一致即可

    5. 重启网络服务

      service network restart
      
      • 1
    6. 检测是否配置成功

      ifconfig
      
      • 1

      image-20220803145839476

      Ping外网:

      ping www.baidu.com
      
      • 1

      image-20220803151937022

      Ping本机:

      ping 192.168.184.128
      
      • 1

      image-20220803152348353

      Ping宿主机:

      ping 192.168.65.75
      
      • 1

      image-20220803152600671

    MobaXterm

    MobaXterm是一款远程终端控制软件,集串口,SSH远程登录和FTP传输三合一的工具,便携版操作简单,使用非常方便。

    下载

    下载地址:https://mobaxterm.mobatek.net/download-home-edition.html

    image-20220803152929116

    使用方法

    1. 新建session

      image-20220803153511442

    2. 输入用户名、密码即可连接

      image-20220803153626696

    建立连接之后,就可以很方便连接虚拟机主机。后续的所有操作,均使用MobaXterm。

    Redis

    下载

    下载地址:https://download.redis.io/releases/

    下载版本:redis-6.0.0.tar.gz

    image-20220803163159736

    安装步骤

    1. Redis是c开发的,因此安装redis需要c语言的编译环境,查看是否安装gcc

      gcc -v
      
      • 1

      如果没有gcc,则需要在线安装.命令如下

      yum install gcc-c++
      
      • 1
    2. 上传安装包

      image-20220429224940116

    3. 解压redis压缩包,解压命令如下

      tar -zxvf redis-6.0.0.tar.gz
      
      • 1
    4. 进入redis目录后,ls打开目录下文件,查看是否存在Makefile,存在则直接make编译redis源码

      image-20220429225109019

      make
      
      • 1

      image-20220803225029710

      image-20220429225200992

      如果make失败:

      image-20220803224249982

      一般是因为gcc版本过低,因此需要升级gcc,升级过程如下:

      yum -y install centos-release-scl
      
      • 1

      image-20220803224731879

      yum -y install devtoolset-9-gcc devtoolset-9-gcc-c++ devtoolset-9-binutils
      
      • 1

      image-20220803224851302

      scl enable devtoolset-9 bash
      echo "source /opt/rh/devtoolset-9/enable" >> /etc/profile
      gcc -v
      
      • 1
      • 2
      • 3

      image-20220803224927463

    5. 安装编译后的redis代码到指定目录,一般存放于/usr/local下的redis目录,指令如下

      make install PREFIX=/usr/local/redis
      
      • 1

      image-20220803225412428

    6. 查看redis目录下的bin目录里面的文件,如下

      image-20220803164925691

    7. 至此,可以启动redis了,默认启动模式为前端启动,指令如下

    ./redis-server
    
    • 1

    image-20220803165052105

    到这里,基本的安装就完成了,但可以添加一些更好的设置,如下:

    1. 前端启动的话,如果客户端关闭,redis服务也会停掉,所以需要改成后台启动redis。
      具体做法分为两步:

      • 第一步:将redis解压文件里面的redis.conf文件复制到当前目录,指令如下

        cp redis-6.0.0/redis.conf ./bin
        
        • 1

        image-20220803225831149

      • 第二步:修改redis.conf文件,将daemonize no -> daemonize yes,这样便将启动方式修改为后台启动了

        vim redis.conf
        
        • 1

        image-20220803165325332

        小提示:保存修改并退出,按键如下(四步操作):

        Esc -> : -> wq -> Enter(回车)
        
        • 1
      • 启动redis -> 后台启动

        ./redis-server redis.conf
        
        • 1

        image-20220803165715541

      • 查看redis是否在运行,指令如下

        ps aux|grep redis
        
        • 1
      • 打开redis连接

        ./redis-cli
        
        • 1

        image-20220803165929801

        小提示:将连接到其他主机、端口,指令如下

        ./redis-cli -h 192.168.184.128 -p 6379
        
        • 1
    2. Windows本地连接虚拟机中的Linux系统中的Redis,进入到Windows本地Redis根目录

      image-20220803171336246

      可以正常连接:

      image-20220803171513245

      如果不可以连接的话:

      在win本地访问到搭建的redis,可以把6379端口暴露出来:

      firewall-cmd --zone=public --add-port=6379/tcp --permanent
      
      • 1

      然后重启一下防火墙:

      systemctl restart firewalld
      
      • 1

      Tips:

      (1)设置开机启用防火墙:systemctl enable firewalld.service

      (2)设置开机禁用防火墙:systemctl disable firewalld.service

      (3)启动防火墙:systemctl start firewalld

      (4)关闭防火墙:systemctl stop firewalld

      (5)检查防火墙状态:systemctl status firewalld

      如果这种方法不可以的话修改如下配置:

      • 配置redis.conf文件,修改bind。把原来的bind 127.0.0.1 改成bind 0.0.0.0 这样redis就可以接受其他主机连接

        image-20220804235424308

      • 修改protect。这样就可以解除redis的保护机制,可以被其他主机连接

        image-20220804235450826

    开机自启

    编辑redis.service文件, 增加如下信息 (nacos路径替换成自己的路径即可)

    vi /etc/systemd/system/redis.service
    
    • 1
    [Unit]
    Description=redis
    After=network.target
    
    [Service]
    Type=forking
    ExecStart=/usr/local/redis/bin/redis-server /usr/local/redis/bin/redis.conf
    PrivateTmp=true
    
    [Install]
    WantedBy=multi-user.target
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    保存后执行以下命令:

    #重新加载所有service服务
    systemctl daemon-reload
    #开机启动nacos.service
    systemctl enable redis.service
    #查看该service是否开机启用
    systemctl is-enabled redis.service
    #启动该服务
    systemctl start redis.service
    #查看状态
    systemctl status redis.service
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    image-20220804233921863

    JDK

    下载

    下载地址:https://www.oracle.com/java/technologies/javase/javase8-archive-downloads.html

    下载版本:jdk-8u201-linux-x64.tar.gz

    安装步骤

    1. 先检查环境是否有自带的JDK

      rpm -qa | grep jdk
      
      • 1

      image-20220803181916962

    2. 如果有自带环境,先进行卸载。执行命令进行卸载,后缀".noarch"不用理会

      rpm -e --nodeps java-1.8.0-openjdk-headless-1.8.0.262.b10-1.el7.x86_64
      rpm -e --nodeps java-1.8.0-openjdk-1.8.0.262.b10-1.el7.x86_64
      
      • 1
      • 2

      image-20220803182258483

      删完之后可以再通过rpm -qa | grep Java 命令来查询出是否删除掉

    3. 接下来就是要安装自己的jdk了,进入/usr/local/src上传刚下载的jdk-8u201-linux-x64.tar.gz

      image-20220803183146007

    4. 解压jdk-8u201-linux-x64.tar.gz

      image-20220803183620434

      image-20220803183644321

    5. 通过命令 cd /usr/local/ 进入目录创建java文件夹

      image-20220803183328091

    6. 进入Java文件夹,移动刚才解压的jdk1.8.0_201

      image-20220803183948890

    7. 接下来开始配置环境变变量,通过 vi /etc/profile 命令打开 profile 文件盘配置环境变量,打开之后按 i 进入 insert (插入)模式,在文件末尾添加上环境变量

      # JDK环境变量
      export JAVA_HOME=/usr/local/java/jdk1.8.0_201
      export JRE_HOOME=${JAVA_HOME}/jre
      export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
      export PATH=.:${JAVA_HOME}/bin:$PATH
      
      • 1
      • 2
      • 3
      • 4
      • 5

      image-20220803185756099

    8. 保存完之后输入,使用命令使刚才配置的环境变量生效

      source /etc/profile
      
      • 1
    9. 测试jdk是否安装成功

      image-20220803185852507

    MySQL

    下载

    下载地址:https://downloads.mysql.com/archives/community/

    下载版本:mysql-5.7.36-linux-glibc2.12-x86_64.tar.gz

    image-20220804113853114

    安装步骤

    1. 上传本地tar压缩包到服务器

      image-20220804114406335

    2. 卸载系统⾃带的MARIADB(如果有)。如果系统之前⾃带 Mariadb ,可以先卸载之。
      首先查询已安装的 Mariadb 安装包:

      rpm -qa|grep mariadb
      
      • 1

      image-20220804114711485

      卸载掉:

      yum -y remove mariadb-libs-5.5.68-1.el7.x86_64
      
      • 1

      image-20220804115316550

    3. 解压MYSQL安装包

      进入/usr/local/src目录,解压:

      tar -zxvf mysql-5.7.36-linux-glibc2.12-x86_64.tar.gz -C /usr/local
      
      • 1

      进入/usr/local,解压后的文件移动到mysql:

      image-20220804115833340

    4. 创建MYSQL用户和用户组

      groupadd mysql
      useradd -g mysql mysql
      
      • 1
      • 2

      image-20220804121047494

      同时新建 /usr/local/mysql/data 目录,后续备用

      image-20220804121223098

    5. 修改MYSQL目录的归属⽤户,在mysql目录执行

      chown -R mysql:mysql ./
      
      • 1

      image-20220804121345266

    6. 准备MYSQL的配置文件

      /etc 目录下新建 my.cnf文件。写入如下简化配置:

      [mysql]
      # 设置mysql客户端默认字符集
      default-character-set=utf8
      socket=/var/lib/mysql/mysql.sock
      [mysqld]
      skip-name-resolve
      #设置3306端口
      port = 3306
      socket=/var/lib/mysql/mysql.sock
      # 设置mysql的安装目录
      basedir=/usr/local/mysql
      # 设置mysql数据库的数据的存放目录
      datadir=/usr/local/mysql/data
      # 允许最大连接数
      max_connections=200
      # 服务端使用的字符集默认为8比特编码的latin1字符集
      character-set-server=utf8
      # 创建新表时将使用的默认存储引擎
      default-storage-engine=INNODB
      lower_case_table_names=1
      max_allowed_packet=16M
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8
      • 9
      • 10
      • 11
      • 12
      • 13
      • 14
      • 15
      • 16
      • 17
      • 18
      • 19
      • 20
      • 21

      image-20220804121922212

      image-20220804122228297

      image-20220804122208179

      同时使⽤如下命令创建 /var/lib/mysql ⽬录,并修改权限:

      mkdir /var/lib/mysql
      chmod 777 /var/lib/mysql
      
      • 1
      • 2

      image-20220804122410824

    7. 正式开始安装MYSQL。执⾏如下命令正式开始安装:

      进入/usr/local/mysql:

      cd /usr/local/mysql
      
      • 1

      然后:

      ./bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data
      
      • 1

      image-20220804122756357

      注意:记住上⾯打印出来的 root 的密码,后面首次登录需要使用:

      2022-08-04T04:27:22.421873Z 1 [Note] A temporary password is generated for root@localhost: cpQ;/Pwss1<L
      
      • 1
    8. 复制启动脚本到资源目录

      cp ./support-files/mysql.server /etc/init.d/mysqld
      
      • 1

      image-20220804123034678

      并修改 /etc/init.d/mysqld ,修改其 basedirdatadir 为实际对应目录:

      basedir=/usr/local/mysql
      datadir=/usr/local/mysql/data
      
      • 1
      • 2

      image-20220804123542365

      image-20220804123458432

    9. 设置MYSQL系统服务并开启自启

      首先增加 mysqld 服务控制脚本执行权限:

      chmod +x /etc/init.d/mysqld
      
      • 1

      image-20220804123717758

      同时将 mysqld 服务加入到系统服务:

      chkconfig --add mysqld
      
      • 1

      image-20220804123816464

      最后检查 mysqld 服务是否已经生效即可:

      chkconfig --list mysqld
      
      • 1

      image-20220804123952389

      这样就表明 mysqld 服务已经生效了,在2、3、4、5运行级别随系统启动而⾃动启动,以后可以直接使用 service 命令控制 mysql 的启停。

    10. 启动MYSQLD

      service mysqld start
      
      • 1

      image-20220804124112364

    11. 将 MYSQL 的 BIN 目录加入 PATH 环境变量,这样方便以后在任意目录上都可以使用 mysql 提供的命令。

      编辑 ~/.bash_profile 文件,在文件末尾处追加如下信息:

      export PATH=$PATH:/usr/local/mysql/bin
      
      • 1

      image-20220804124437217

      image-20220804124408844

      最后执行如下命令使环境变量生效:

      source ~/.bash_profile
      
      • 1

      image-20220804124608320

    12. 首次登录MYSQL,以 root 账户登录 mysql ,使用安装完成提示的密码进行登录

      mysql -u root -p
      
      • 1

      image-20220804125059951

    13. 接下来修改ROOT账户密码,在mysql的命令行执行如下命令即可,密码可以换成你想用的密码即可:

      mysql>alter user user() identified by "123456";
      mysql>flush privileges;
      
      • 1
      • 2

      image-20220804125325200

    14. 设置远程主机登录

      mysql> use mysql;
      mysql> update user set user.Host='%' where user.User='root';
      mysql> flush privileges;
      
      • 1
      • 2
      • 3

      image-20220804125524516

      如果远程连不上的话,可能是防火墙的问题,端口没有在防火墙开放

      firewall-cmd --permanent --zone=public --add-port=3306/tcp  
      firewall-cmd --reload  
      firewall-cmd --zone=public --query-port=3306/tcp 
      
      • 1
      • 2
      • 3

      image-20220804131153037

    Nacos

    下载

    下载地址:https://github.com/alibaba/nacos/releases

    下载版本:nacos-server-2.0.3.tar.gz

    Github下载速度很慢,附上百度网盘资源:

    链接:https://pan.baidu.com/s/1FIuq9_RRHFk1wKdOPSkvZw
    提取码:ds65

    安装步骤

    1. 解压并移动

      tar -zxvf nacos-server-2.0.3.tar.gz
      mv nacos /usr/local
      
      • 1
      • 2

      image-20220804163112379

    2. 修改 startup.sh:更改java 的安装目录和 export MODE=“standalone”

      进入/usr/local/nacos/bin

      image-20220804145822373

    3. 配置nacos的数据库连接信息

      vi /usr/local/nacos/conf/application.properties
      
      • 1
      # db mysql
      spring.datasource.platform=mysql
      db.num=1
      db.url.0=jdbc:mysql://127.0.0.1:3306/center-config?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=UTC
      db.user=root
      db.password=123456
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6

      image-20220804164719071

    4. 执行SQL脚本,注意数据库名称

      image-20220804164824267

      由于本人学习过程中,将sql脚本集成到了一个Spring Boot 项目中了,故这里可以直接运行Jar包,jar包哪里来,后面会介绍:

      java -jar center-data-nacos-config.jar
      
      • 1

      image-20220804165051266

    5. 进入 bin 目录,启动程序:

      ./startup.sh
      
      • 1

      image-20220804151703953

    6. 暴露端口

      firewall-cmd --permanent --zone=public --add-port=8848/tcp  
      firewall-cmd --reload
      firewall-cmd --zone=public --query-port=8848/tcp
      
      • 1
      • 2
      • 3

      image-20220804152305967

    7. 访问地址:http://192.168.184.128:8848/nacos/index.html

      用户名/密码:nacos/nacos

      image-20220804165206734

    开机自启

    进入/lib/systemd/system目录,创建nacos.service文件

    cd /lib/systemd/system
    touch nacos.service
    
    • 1
    • 2

    image-20220804191936191

    编辑nacos.service文件, 增加如下信息 (nacos路径替换成自己的路径即可)

    vim /lib/systemd/system/nacos.service
    
    • 1
    [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
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    保存后执行以下命令

    #重新加载所有service服务
    systemctl daemon-reload
    #开机启动nacos.service
    systemctl enable nacos.service
    #查看该service是否开机启用
    systemctl is-enabled nacos.service
    #启动该服务
    systemctl start nacos.service
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    image-20220804191848430

    查看该服务状态:

    systemctl status nacos.service
    
    • 1

    image-20220804192428577

    Node.js

    下载

    下载地址:https://registry.npmmirror.com/binary.html?path=node/v14.17.0/

    下载版本:node-v14.17.0-linux-x64.tar.xz

    安装步骤

    1. 上传包至/usr/local/src

      image-20220804172242379

    2. /usr/local/ 下创建 node 文件夹并进入

    3. 将 Node 的安装包解压到 /usr/local/node 中即可

      tar -xJvf /usr/local/src/node-v14.17.0-linux-x64.tar.xz -C ./
      
      • 1

      解压完之后, /usr/local/node ⽬录中会出现⼀个 node-v14.17.0-linux-x64 的目录

      image-20220804180751488

    4. 配置NODE系统环境变量

      编辑 ~/.bash_profile 文件,在文件末尾追加如下信息:

      vi ~/.bash_profile
      
      • 1
      # Nodejs
      export PATH=/usr/local/node/node-v14.17.0-linux-x64/bin:$PATH
      
      • 1
      • 2

      image-20220804181109443

      刷新环境变量,使之生效即可:

      source ~/.bash_profile
      
      • 1
    5. 检查安装结果

      node -v
      npm version
      npx -v
      
      • 1
      • 2
      • 3

      均有版本信息输出即可:

      image-20220804181327710

    nginx

    下载

    下载地址:https://nginx.org/en/download.html

    下载版本:nginx-1.18.0.tar.gz

    image-20220805172718494

    安装步骤

    1. 创建文件夹并进入

      mkdir /usr/local/nginx
      
      • 1
    2. 解压

      tar -zxvf /usr/local/src/nginx-1.18.0.tar.gz -C ./
      
      • 1

      image-20220805173115329

    3. 预先安装额外的依赖

      yum -y install pcre-devel
      
      • 1

      image-20220805173531486

      yum -y install openssl openssl-devel
      
      • 1

      image-20220805173609883

    4. 编译安装NGINX

      cd nginx-1.18.0
      ./configure
      make && make install
      
      • 1
      • 2
      • 3

      image-20220805173851540

    5. 安装完成后,Nginx的可执行文件位置位于/usr/local/nginx/sbin/nginx

      image-20220805174018941

    6. 直接执行如下命令即可:

      /usr/local/nginx/sbin/nginx
      
      • 1

      如果想停止Nginx服务,可执行:

      /usr/local/nginx/sbin/nginx -s stop
      
      • 1

      如果修改了配置文件后想重新加载Nginx,可执行:

      /usr/local/nginx/sbin/nginx -s reload
      
      • 1

      注意其配置文件位于:

      /usr/local/nginx/conf/nginx.conf
      
      • 1
    7. 防火墙暴露80端口

      #设置80端口开放
      firewall-cmd --zone=public --add-port=80/tcp --permanent
      #重启防火墙
      firewall-cmd --reload
      #验证80端口是否开放成功
      firewall-cmd --zone=public --query-port=80/tcp
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6

      image-20220805174544150

    8. 浏览器验证启动情况

      image-20220805174630130

    开机自启

    1. 创建开机自启脚本

      vi /etc/systemd/system/nginx.service
      
      • 1
      [Unit]
      Description=nginx service
      After=network.target
      
      [Service]
      Type=forking
      ExecStart=/usr/local/nginx/sbin/nginx
      ExecReload=/usr/local/nginx/sbin/nginx -s reload
      ExecStop=/usr/local/nginx/sbin/nginx -s quit
      PrivateTmp=true
      
      [Install]
      WantedBy=multi-user.target
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8
      • 9
      • 10
      • 11
      • 12
      • 13

      保存后执行以下命令:

      #重新加载所有service服务
      systemctl daemon-reload
      #开机启动nacos.service
      systemctl enable nginx.service
      #查看该service是否开机启用
      systemctl is-enabled nginx.service
      #启动该服务
      systemctl start nginx.service
      #查看状态
      systemctl status nginx.service
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8
      • 9
      • 10

    项目部署

    在这里使用的是一个个人学习项目。

    logo

    Center Platform v1.0.0
    基于 Vue/Element UI 和 Spring Boot/Spring Cloud & Alibaba 前后端分离的分布式微服务架构

    项目简介

    Center Platform 是一套基于RuoYi框架的快速开发平台,毫无保留给个人及企业免费使用。

    • 采用前后端分离的模式,微服务版本前端。
    • 后端采用Spring Boot、Spring Cloud & Alibaba。
    • 注册中心、配置中心选型Nacos,权限认证使用Redis。
    • 流量控制框架选型Sentinel,分布式事务选型Seata。

    友情链接 若依/RuoYi-Cloud

    Windows环境下

    项目启动

    前端启动步骤
    1. clone项目
      git clone https://gitee.com/haaaaaaaaaaaa/center-platform.git
      
      • 1
    2. 进入前端项目(center-ui)根目录执行命令
      npm install
      
      • 1
    3. 依赖下载完毕之后
      npm run dev
      
      • 1
    4. 至此前端项目启动完毕
    后端启动步骤
    1. 新建数据库,名称分别为:centercenter-configcenter-seata,不需要手动执行SQL脚本,后续步骤可以自动建立系统需要的表和数据。建议启动项目之前不要修改项目中数据库URL,等到项目成功运行之后,再进行个性化修改。
    2. 项目在Idea中打开之后,等待依赖下载完毕。
    3. 成功之后进入种子数据模块:
       ├── center-data                            // 种子数据模块
       │       └── center-data-common             // 基础种子数据模块[9400]
       │       └── center-data-nacos-config       // Nacos种子数据初始化模块[9500]
       │       └── center-data-seata              // Seata种子数据初始化模块[9600]
      
      • 1
      • 2
      • 3
      • 4
    4. 首先运行CenterDataNacosConfigApplication,成功执行之后,自动将Nacos需要的数据初始化到数据库中。成功运行截图如下:

      此时数据库center-config中已经生成了相关表以及插入了相关数据。
    5. 修改Nacos配置文件中数据库为center-config,配置自己的数据库连接密码:
    6. Nacos配置完成之后,启动Nacos。
    7. 接下来运行CenterDataCommonApplication,成功执行后即自动在数据库center中建立相关表,以及插入初始化数据。
    8. 然后运行CenterDataSeataApplicationCenterDataCommonApplicationCenterDataSeataApplication没有严格顺序要求。
    9. 至此,项目启动所需要的数据库以及表、表数据均已初始化完毕。
    10. 本地启动Redis,先不要使用密码,成功运行之后再根据需要修改配置,添加个性化设置。
    11. 启动必需服务:CenterAuthApplicationCenterFileApplicationCenterGatewayApplicationCenterSystemApplication
    12. 恭喜你!到这里后端启动成功。不出意外,此时你便可以进入系统,开始你的创造,感谢使用!

    CentOS 7 环境下

    后端部署

    新建数据库

    远程连接CentOS 7 环境中的数据库,新建:center、center-config、center-seata。只需要新建数据库库即可,不用执行SQL脚本。

    image-20220805131730287

    image-20220805131617916

    Shell脚本
    启动种子服务jar包脚本

    创建文件夹:

    mkdir -p /usr/local/center/center-data
    
    • 1

    创建脚本:

    vi /usr/local/center/center-data/center-data.sh
    
    • 1
    #进入jar包目录
    cd /usr/local/center/center-data
    
    APP_NAME=`find *.jar`
    
    if [ -n "$2" ]; then
    	string="$2"
    	array=(${string//,/ })
    	APP_NAME=${array[@]}
    	echo "==================== Selected Service ==================== "
    	for var in $APP_NAME ;do
    		echo "$var"
    	done
    	echo "========================================================== "
    fi
    
    #使用说明,用来提示输入参数
    usage() {
    	echo "Usage: ./center-data.sh [start|stop|restart|status] [app_name]"
    	exit 1
    }
    
    #检查程序是否在运行
    is_exist() {
    	for var in $APP_NAME ;do
    		pid=`ps -ef|grep $var|grep -v grep|awk '{print $2}' `
    		#检查程序是否在运行
    		if [ -z "${pid}" ]; then
    			echo "$var is NOT running"
    		else
    			echo "$var is running Pid is ${pid}"
    		fi
    	done
    }
    
    #启动方法
    start() {
    	for var in $APP_NAME ;do
    		pid=`ps -ef|grep $var|grep -v grep|awk '{print $2}' `
    		#检查程序是否在运行
    		if [ -z "${pid}" ]; then
    			echo "start run $var"
    			nohup java -jar $var >/dev/null 2>&1 &
    		else
    			echo "$var is already running. pid=${pid} "
    		fi
    	done
    }
    
    #停止方法
    stop() {
    	for var in $APP_NAME ;do
    		pid=`ps -ef|grep $var|grep -v grep|awk '{print $2}' `
    		#检查程序是否在运行
    		if [ -n "${pid}" ]; then
    			kill -9 ${pid}
    		else
    			echo "${var} is not running"
    		fi
    	done
    }
    
    #输出运行状态
    status() {
    	is_exist
    }
    
    #重启
    restart() {
    	stop
    	start
    }
    
    #根据输入参数,选择执行对应方法,不输入则执行使用说明
    case "$1" in
    	"start")
    		start
    	;;
    	"stop")
    		stop
    	;;
    	"status")
    		status
    	;;
    	"restart")
    		restart
    	;;
    	*)
    		usage
    	;;
    esac
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71
    • 72
    • 73
    • 74
    • 75
    • 76
    • 77
    • 78
    • 79
    • 80
    • 81
    • 82
    • 83
    • 84
    • 85
    • 86
    • 87
    • 88
    • 89
    • 90
    • 91
    启动常用服务jar包脚本

    创建目录:

    mkdir /usr/local/center/center-platform
    
    • 1

    创建脚本:

    vi /usr/local/center/center-platform/center-platform.sh
    
    • 1

    Tips:

    ps -ef|grep center-auth.jar|grep -v grep|awk '{print $2}'
    
    • 1

    指令解释:
    ps:显示进程
    -e:显示所有进程
    -f:全格式

    image-20220808124030002

    grep:查找字符串
    grep -v -grep:过滤自己执行的grep

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-vpMCqLO3-1659950505371)(C:\Users\C\AppData\Roaming\Typora\typora-user-images\image-20220808124249348.png)]

    awk:提取主要列列的主要工具

    image-20220808124141105

    #进入常用服务jar包目录
    cd /usr/local/center/center-platform
    
    APP_NAME=`find *.jar`
    
    if [ -n "$2" ]; then
    	string="$2"
    	array=(${string//,/ })
    	APP_NAME=${array[@]}
    	echo "==================== Selected Service ==================== "
    	for var in $APP_NAME ;do
    		echo "$var"
    	done
    	echo "========================================================== "
    fi
    
    #使用说明,用来提示输入参数
    usage() {
    	echo "Usage: ./center-platform.sh [start|stop|restart|status] [app_name]"
    	exit 1
    }
    
    #检查程序是否在运行
    is_exist() {
    	for var in $APP_NAME ;do
    		pid=`ps -ef|grep $var|grep -v grep|awk '{print $2}' `
    		#检查程序是否在运行
    		if [ -z "${pid}" ]; then
    			echo "$var is NOT running"
    		else
    			echo "$var is running Pid is ${pid}"
    		fi
    	done
    }
    
    #启动方法
    start() {
    	for var in $APP_NAME ;do
    		pid=`ps -ef|grep $var|grep -v grep|awk '{print $2}' `
    		#检查程序是否在运行
    		if [ -z "${pid}" ]; then
    			echo "start run $var"
    			nohup java -jar $var >/dev/null 2>&1 &
    		else
    			echo "$var is already running. pid=${pid} "
    		fi
    	done
    }
    
    #停止方法
    stop() {
    	for var in $APP_NAME ;do
    		pid=`ps -ef|grep $var|grep -v grep|awk '{print $2}' `
    		#检查程序是否在运行
    		if [ -n "${pid}" ]; then
    			kill -9 ${pid}
    		else
    			echo "${var} is not running"
    		fi
    	done
    }
    
    #输出运行状态
    status() {
    	is_exist
    }
    
    #重启
    restart() {
    	stop
    	start
    }
    
    #根据输入参数,选择执行对应方法,不输入则执行使用说明
    case "$1" in
    	"start")
    		start
    	;;
    	"stop")
    		stop
    	;;
    	"status")
    		status
    	;;
    	"restart")
    		restart
    	;;
    	*)
    		usage
    	;;
    esac
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71
    • 72
    • 73
    • 74
    • 75
    • 76
    • 77
    • 78
    • 79
    • 80
    • 81
    • 82
    • 83
    • 84
    • 85
    • 86
    • 87
    • 88
    • 89
    • 90
    • 91
    脚本添加操作权限

    分别进入脚本存放目录:

    chmod +x center-platform.sh
    chmod +x center-data.sh
    
    • 1
    • 2
    脚本使用方法
    #启动|重启|关闭 所有
    ./service.sh start|restart|stop
    #启动|重启|关闭 单个
    ./service.sh start|restart|stop xxx.jar
    #启动|重启|关闭 多个
    ./service.sh start|restart|stop xxx1.jar,xxx2.jar
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    种子数据服务jar包运行

    按照顺序执行如下jar包:一定要第一个执行center-data-nacos-config.jar,这个是Nacos的配置数据库种子数据。

    上传jar包

    进入目录:

    cd /usr/local/center/center-data
    
    • 1

    上传jar包:

    image-20220805141515702

    Tips:

    能力有限,脚本差强人意,如果不喜欢的话,不使用也可以。直接使用命令一个一个启动即可:

    java -jar xxx.jar
    
    • 1
    第一center-data-nacos-config.jar

    很重要!!!第一个执行这个。

    演示一下使用命令启动:

    java -jar center-data-nacos-config.jar
    
    • 1

    image-20220805143716047

    成功运行之后便会创建系统更需要的基础表及数据:

    image-20220805143857963

    本服务是Nacos的配置数据库种子数据初始化服务。后续步骤成功与否皆系于此。

    第二center-data-common.jar
    java -jar center-data-common.jar
    
    • 1

    image-20220805144023686

    image-20220805144116417

    成功运行之后便会创建系统更需要的基础表及数据:

    image-20220805144204962

    第三center-data-seata.jar
    java -jar center-data-seata.jar
    
    • 1

    image-20220805144405427

    image-20220805144434850

    成功运行之后便会创建系统更需要的基础表及数据:

    image-20220805144522125

    至此,项目需要的数据库以及涉及的表数据均已准备好。

    常用服务jar包运行
    上传jar包

    进入目录,上传jar包:

    cd /usr/local/center/center-platform
    
    • 1

    image-20220805165158678

    启动

    Tips:

    能力有限,脚本差强人意,如果不喜欢的话,不使用也可以。直接使用命令一个一个启动即可:

    java -jar xxx.jar
    
    • 1

    演示命令启动:

    java -jar center-auth.jar
    
    • 1

    image-20220805170848127

    image-20220805170920649

    其他服务是一样的,启动就行。

    前端部署

    1. 打包,在vue工程根目录录执行打包命令

      npm run build:prod
      
      • 1

      image-20220805175119388

    2. 压缩zip格式后上传

      image-20220805175437631

    3. 创建目录

      mkdir -p /usr/local/webapp/center-ui
      
      • 1

      进入目录解压:

      unzip -d ./ /usr/local/src/dist.zip
      
      • 1

      image-20220805180835904

    4. 打开Nginx配置

      vi /usr/local/nginx/conf/nginx.conf
      
      • 1
      location / {
      	root   /usr/local/webapp/center-ui/dist;
      	index  index.html index.htm;
      	try_files $uri $uri/ /index.html?s=$uri&$args;
      	error_page 405 =200 http://$host$request_uri;
      }
      
      location /prod-api/{
      	proxy_set_header Host $http_host;
      	proxy_set_header X-Real-IP $remote_addr;
      	proxy_set_header REMOTE-HOST $remote_addr;
      	proxy_set_header X-Forwarded-For &proxy_add_x_forwarded_for;
      	proxy_pass http://localhost:9000/;
      }
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8
      • 9
      • 10
      • 11
      • 12
      • 13
      • 14

      image-20220806160323950

    5. 重启Nginx

      /usr/local/nginx/sbin/nginx -s reload
      
      • 1

      image-20220805181548366

    6. 查看

      image-20220806160531973

      如果小图标不显示:Ctrl+Shift+R

      image-20220806181021030

    声明:
    本篇文章为学习笔记,若作品涉及版权或存在其他问题,请联系我删除。
    谢谢浏览!
  • 相关阅读:
    Windows10 Docker 安装教程
    three.js线条line宽度问题
    IDEA中使用Tomcat Maven 插件
    [极客大挑战 2020]Roamphp2-Myblog - 伪协议+文件上传+(LFI&ZIP)||(LFI&Phar)【***】
    2022“杭电杯”中国大学生算法设计超级联赛(1)(6题newbie,后续会更新)
    继copilot之后,又一款免费帮你写代码的插件
    代码随想录 10.14 || 二叉树 LeetCode 669.修剪二叉搜索树、108.将有序数组转换为二叉搜索树、538.将二叉搜索树转为累加树
    flutter实现上拉到底部加载更多数据
    SharePreference与MMKV对比
    番外--Task1:
  • 原文地址:https://blog.csdn.net/Haa__/article/details/126232008