• AlibabaCloud微服务:Linux 部署 Nacos 服务治理


    目录

      一、实验

    1.环境

    2. Linux 部署Maven 3.5.0

    3.Linux 部署 Nacos 

    4. 开放Linux本地的MySQL与Nacos端口

    5. 微服务注册到Nacos

    二、问题

    1.命未找到命令

    2.mvn查看版本报错

    3.nacos安装报错

    4.重启网络报错

    5.systemctl mask 和 systemctl disable有什么区别

    6. spring-boot-maven-plugin 构建找不到

    7. java找不到符号

    8.springboot 项目启动有哪些访问规则

    9.国内maven仓库镜像地址

    10. 项目连接MySQL报错


      一、实验

    1.环境

    (1)主机

    表1  主机

    系统软件版本IP备注
    Linuxopenjdk 1.8.0192.168.204.200

    maven3.5.0
    nacos1.3.2

    依赖jdk

          与maven

    WindowsMySQL8.0.36localhostNavicat 连接

    (2) 查看java版本

    [root@localhost ~]# java -version
    

    2. Linux 部署Maven 3.5.0

    (1)  官网

    Maven – Download Apache Maven

    (2)解压

    tar -zxvf apache-maven-3.5.0-bin.tar.gz
    

    (3)移动

    1. [root@localhost ~]# cd /usr/local/apache-maven-3.5.0/
    2. [root@localhost apache-maven-3.5.0]# vim mvn.cmd
    3. [root@localhost apache-maven-3.5.0]# ll
    4. 总用量 36
    5. drwxr-xr-x. 2 root root 97 2月 23 20:17 bin
    6. drwxr-xr-x. 2 root root 42 2月 23 15:30 boot
    7. drwxr-xr-x. 3 501 games 63 4月 4 2017 conf
    8. drwxr-xr-x. 4 501 games 4096 2月 23 15:30 lib
    9. -rw-r--r--. 1 501 games 20934 4月 4 2017 LICENSE
    10. -rw-r--r--. 1 501 games 182 4月 4 2017 NOTICE
    11. -rw-r--r--. 1 501 games 2544 4月 4 2017 README.txt

    (4)配置环境变量

     修改/etc/profile的JAVA_HOME与mvn相匹配

    1. vim /etc/profile
    2. ……
    3. export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.382.b05-1.el7_9.x86_64/jre
    4. export MAVEN_HOME=/usr/local/apache-maven-3.5.0
    5. export PATH=$PATH:/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.382.b05-1.el7_9.x86_64/bin:$MAVEN_HOME/bin

    更新

    [root@localhost bin]# source /etc/profile
    

    查看版本

    [root@localhost bin]# mvn -v
    

    3.Linux 部署 Nacos 

    (1)官网

    Nacos官网 | Nacos 官方社区 | Nacos 下载 | Nacos

    (2)快速开始

    Nacos 快速开始 | Nacos

    (3)解压

    [root@localhost opt]# unzip nacos-server-1.3.2.zip 
    

    (4)启动

    进入bin目录

    1. [root@localhost bin]# cd /opt
    2. [root@localhost opt]# ls
    3. apache-maven-3.5.0-bin.tar.gz nacos nacos-server-1.3.2.zip rh
    4. [root@localhost opt]# cd nacos/
    5. [root@localhost nacos]# ls
    6. bin conf LICENSE NOTICE target
    7. [root@localhost nacos]# cd bin/
    8. [root@localhost bin]# ls
    9. shutdown.cmd shutdown.sh startup.cmd startup.sh
    10. [root@localhost bin]# sh startup.sh -m standalone
    11. /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.382.b05-1.el7_9.x86_64/jre/bin/java -Xms512m -Xmx512m -Xmn256m -Dnacos.standalone=true -Dnacos.member.list= -Djava.ext.dirs=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.382.b05-1.el7_9.x86_64/jre/jre/lib/ext:/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.382.b05-1.el7_9.x86_64/jre/lib/ext -Xloggc:/opt/nacos/logs/nacos_gc.log -verbose:gc -XX:+PrintGCDetails -XX:+PrintGCDateStamps -XX:+PrintGCTimeStamps -XX:+UseGCLogFileRotation -XX:NumberOfGCLogFiles=10 -XX:GCLogFileSize=100M -Dloader.path=/opt/nacos/plugins/health,/opt/nacos/plugins/cmdb -Dnacos.home=/opt/nacos -jar /opt/nacos/target/nacos-server.jar --spring.config.location=classpath:/,classpath:/config/,file:./,file:./config/,file:/opt/nacos/conf/ --logging.config=/opt/nacos/conf/nacos-logback.xml --server.max-http-header-size=524288
    12. nacos is starting with standalone
    13. nacos is starting,you can check the /opt/nacos/logs/start.out

    (5) 查看进程

    1. [root@localhost bin]# ps -ef |grep nacos
    2. root 59557 1 99 18:13 pts/2 00:01:21 /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.382.b05-1.el7_9.x86_64/jre/bin/java -Xms512m -Xmx512m -Xmn256m -Dnacos.standalone=true -nacos.member.list= -Djava.ext.dirs=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.382.b05-1.el7_9.x86_64/jre/jre/lib/ext:/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.382.b05-1.el7_9.x86_64/jre/lib/ext -Xloggc:/opt/nacos/logs/nacos_gc.log -verbose:gc -XX:+PrintGCDetails -XX:+PrintGCDateStamps -XX:+PrintGCTimeStamps -XX:+UseGCLogFileRotation -XX:NumberOfGCLogFiles=10 -XX:GCLogFileSize=100M -Dloader.path=/opt/nacos/plugins/health,/opt/nacos/plugins/cmdb -Dnacos.home=/opt/nacos -jar /opt/nacos/target/nacos-server.jar --spring.config.location=classpath:/,classpath:/config/,file:./,file:./config/,file:/opt/nacos/conf/ --logging.config=/opt/nacos/conf/nacos-logback.xml --server.max-http-header-size=524288 nacos.nacos
    3. root 59790 58631 0 18:14 pts/2 00:00:00 grep --color=auto nacos

    (6)访问

    访问 localhost:8848/nacos

    http://192.168.204.200:8848/nacos

    输入账户密码

    默认账号密码 nacos/nacos

    进入系统

    查看节点列表

    4. 开放Linux本地的MySQL与Nacos端口

    (1)开放3306端口

    查看,没有iptables

    1. [root@localhost bin]# cd /etc/sysconfig
    2. [root@localhost sysconfig]# ls
    3. anaconda cgred ebtables-config ip6tables-config ksm network qemu-ga rpcbind samba sysstat
    4. atd chronyd fcoe iptables-config libvirtd network-scripts radvd rpc-rquotad saslauthd sysstat.ioconf
    5. authconfig console firewalld irqbalance man-db nfs raid-check rsyncd selinux virtlockd
    6. autofs cpupower grub kdump modules ntpd rdisc rsyslog smartmontools virtlogd
    7. cbq crond init kernel netconsole ntpdate readonly-root run-parts sshd wpa_supplicant

    (2)创建文件

    [root@localhost sysconfig]# vim iptables
    

    1. # Firewall configuration written by system-config-firewall
    2. # Manual customization of this file is not recommended.
    3. *filter
    4. :INPUT ACCEPT [0:0]
    5. :FORWARD ACCEPT [0:0]
    6. :OUTPUT ACCEPT [0:0]
    7. -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
    8. -A INPUT -p icmp -j ACCEPT
    9. -A INPUT -i lo -j ACCEPT
    10. -A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
    11. -A INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT
    12. -A INPUT -m state --state NEW -m tcp -p tcp --dport 8848 -j ACCEPT
    13. -A INPUT -j REJECT --reject-with icmp-host-prohibited
    14. -A FORWARD -j REJECT --reject-with icmp-host-prohibited
    15. COMMIT

    (3)安装服务

    [root@localhost sysconfig]# yum install iptables-services
    

    (4)设置开机启动

    [root@localhost sysconfig]# systemctl enable iptables
    

    (5)重启网络

    [root@localhost sysconfig]# service iptables restart
    

    (6)查看开放的端口

    1. [root@localhost sysconfig]# iptables -L -n
    2. Chain INPUT (policy ACCEPT)
    3. target prot opt source destination
    4. ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED
    5. ACCEPT icmp -- 0.0.0.0/0 0.0.0.0/0
    6. ACCEPT all -- 0.0.0.0/0 0.0.0.0/0
    7. ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:22
    8. ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:3306
    9. ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:8848
    10. REJECT all -- 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited
    11. Chain FORWARD (policy ACCEPT)
    12. target prot opt source destination
    13. REJECT all -- 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited
    14. Chain OUTPUT (policy ACCEPT)
    15. target prot opt source destination

    5. 微服务注册到Nacos

    (1)  查看数据库状态

    (2)模块一修改配置文件

    application.yml

    1. server:
    2. port: 8000
    3. # address: 0.0.0.0
    4. spring:
    5. application:
    6. name: order-service
    7. cloud:
    8. nacos:
    9. discovery:
    10. server-addr: 192.168.204.200:8848
    11. datasource:
    12. driver-class-name: com.mysql.cj.jdbc.Driver
    13. url: jdbc:mysql://127.0.0.1:3306/cloud_order?useUnicode=true&characterEncoding=utf-8&useSSL=false
    14. username: root
    15. password: Admin@123
    16. # 控制台输出sql、下划线转驼峰
    17. mybatis:
    18. configuration:
    19. log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
    20. map-underscore-to-camel-case: true

    (3)  模块二修改配置文件

    application.yml

    配置文件与模块一基本相同,端口修改为9000

    1. server:
    2. port: 9000
    3. spring:
    4. application:
    5. name: video-service
    6. datasource:
    7. driver-class-name: com.mysql.cj.jdbc.Driver
    8. url: jdbc:mysql://127.0.0.1:3306/cloud_video?useUnicode=true&characterEncoding=utf-8&useSSL=false
    9. username: root
    10. password: Admin@123
    11. cloud:
    12. nacos:
    13. discovery:
    14. server-addr: 192.168.204.200:8848
    15. mybatis:
    16. configuration:
    17. log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
    18. map-underscore-to-camel-case: true

    (3)微服务进行Debug

    运行

    查看

    (4)Nacos查看服务列表

    二、问题

    1.命未找到命令

    (1)报错

    (2)原因分析

    编辑 /etc/profile文件错误,造成环境变量丢失。

    (3)解决方法

    重新申明。

    [root@localhost etc]# export PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
    

    成功:

    2.mvn查看版本报错

    (1)报错

    1. [root@localhost etc]# mvn -v
    2. The JAVA_HOME environment variable is not defined correctly
    3. This environment variable is needed to run this program
    4. NB: JAVA_HOME should point to a JDK not a JRE

    (2)原因分析

    检查 apache-maven-3.x.x/bin下的mvn脚本

    发现如果有定义$JAVA_HOME的话,则将变量JAVACMD定义为$JAVA_HOME\bin\java.exe

    系统默认是openJDk1.8.0,查看java路径

    1. [root@localhost bin]# which java
    2. /usr/bin/java
    3. [root@localhost bin]# ls -lr /usr/bin/java
    4. lrwxrwxrwx. 1 root root 22 10月 13 10:08 /usr/bin/java -> /etc/alternatives/java
    5. [root@localhost bin]# ls -lrt /etc/alternatives/java
    6. lrwxrwxrwx. 1 root root 73 10月 13 10:08 /etc/alternatives/java -> /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.382.b05-1.el7_9.x86_64/jre/bin/java
    7. [root@localhost bin]# vim etc/profile
    8. [root@localhost bin]# vim /etc/profile
    9. [root@localhost bin]# source /etc/profile


    错误的将/etc/profile将JAVA_HOME设置成 /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.382.b05-1.el7_9.x86_64/jre/bin/java

    (3)解决方法

    修改/etc/profile的JAVA_HOME与mvn相匹配

    1. export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.382.b05-1.el7_9.x86_64/jre
    2. export MAVEN_HOME=/usr/local/apache-maven-3.5.0
    3. export PATH=$PATH:/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.382.b05-1.el7_9.x86_64/bin:$MAVEN_HOME/bin

    成功:

    [root@localhost bin]# mvn -v
    

    3.nacos安装报错

    (1)报错

    1. [root@localhost bin]# sh startup.sh -m standalone
    2. which: no javac in (/usr/local/src/apache-maven-3.5.0/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin)
    3. readlink: 缺少操作数
    4. Try 'readlink --help' for more information.
    5. dirname: 缺少操作数
    6. Try 'dirname --help' for more information.
    7. ERROR: Please set the JAVA_HOME variable in your environment, We need java(x64)! jdk8 or later is better! !!

    (2)原因分析

    java环境配置错误

    (3)解决方法

    修改/etc/profile的JAVA_HOME与mvn相匹配

    1. export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.382.b05-1.el7_9.x86_64/jre
    2. export MAVEN_HOME=/usr/local/apache-maven-3.5.0
    3. export PATH=$PATH:/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.382.b05-1.el7_9.x86_64/bin:$MAVEN_HOME/bin

    成功:

    [root@localhost bin]# sh startup.sh -m standalone
    

    4.重启网络报错

    (1)报错

    1. [root@localhost sysconfig]# service iptables restart
    2. Redirecting to /bin/systemctl restart iptables.service
    3. Failed to restart iptables.service: Unit not found.

    (2)原因分析

    需要安装iptables-service。

    (3)解决方法

    安装iptables-service,会报错。

    [root@localhost sysconfig]# yum install iptables-service
    

    执行

    1. [root@localhost sysconfig]# systemctl stop firewalld
    2. [root@localhost sysconfig]# systemctl mask firewalld

    成功:

    5.systemctl mask 和 systemctl disable有什么区别

    (1)systemctl enable

    1. 这个命令会在/etc/systemd/system/目录下创建需要的符号链接,表示服务需要进行启动。通过stdout输出的信息可以看到,软连接实际指向的文件为/usr/lib/systemd/system/目录中的文件,实际起作用的也是这个目录中的文件。
    2. [root@localhost system]# systemctl enable NetworkManager
    3. Created symlink from /etc/systemd/system/multi-user.target.wants/NetworkManager.service to /usr/lib/systemd/system/NetworkManager.service.
    4. Created symlink from /etc/systemd/system/dbus-org.freedesktop.nm-dispatcher.service to /usr/lib/systemd/system/NetworkManager-dispatcher.service.
    5. Created symlink from /etc/systemd/system/network-online.target.wants/NetworkManager-wait-online.service to /usr/lib/systemd/system/NetworkManager-wait-online.service.

    (2)systemctl disable

    1. 在执行systemctl disable xxx的时候,实际只是删除了软连接,并不会产生其他影响。
    2. [root@localhost system]# systemctl disable NetworkManager
    3. Removed symlink /etc/systemd/system/multi-user.target.wants/NetworkManager.service.
    4. Removed symlink /etc/systemd/system/dbus-org.freedesktop.NetworkManager.service.
    5. Removed symlink /etc/systemd/system/dbus-org.freedesktop.nm-dispatcher.service.
    6. Removed symlink /etc/systemd/system/network-online.target.wants/NetworkManager-wait-online.service.

    (3)systemctl mask

    1. 执行 systemctl mask xxx会屏蔽这个服务。它和systemctl disable xxx的区别在于,前者只是删除了符号链接,后者会建立一个指向/dev/null的符号链接,这样,即使有其他服务要启动被mask的服务,仍然无法执行成功。
    2. [root@localhost system]# systemctl start NetworkManager
    3. Failed to start NetworkManager.service: Unit is masked.

    (4)区别

    1. 1)使用disable的话,可以正常启动服务。总体来看,disableenable是一对操作,是用来启动、停止服务。
    2. 2)使用了mask,要想重新启动服务,必须先执行unmask将服务取消屏蔽。mask和unmask是一对操作,用来屏蔽和取消屏蔽服务。

    6. spring-boot-maven-plugin 构建找不到

    (1)报错

    spring-boot-maven-plugin爆红

    1. org.springframework.boot
    2. spring-boot-maven-plugin
    3. true
    4. true

    (2)原因分析

    settings文件未配置阿里云镜像,或者是没有指定jar包下载位置。

    maven工程未修改settings文件地址,或者是未修改jar包加载地址。

    未加载版本号。

    (3)解决方法

    配置阿里云镜像,修改settings文件地址

    打开IntelliJ IDEA->Settings ->Build, Execution, Deployment -> Build Tools > Maven

    搜索Maven

    根据路径创建setting.xml


     

    Visual Studio 创建xml文件

    1. "http://maven.apache.org/SETTINGS/1.0.0"
    2. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    3. xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0
    4. http://maven.apache.org/xsd/settings-1.0.0.xsd">
    5. <id>aliyunmaven
    6. central
    7. 阿里云公共仓库
    8. https://maven.aliyun.com/repository/central
    9. <id>repo1
    10. central
    11. central repo
    12. http://repo1.maven.org/maven2/
    13. <id>aliyunmaven
    14. apache snapshots
    15. 阿里云阿帕奇仓库
    16. https://maven.aliyun.com/repository/apache-snapshots
    17. <id>aliyunmaven
    18. aliyunmaven
    19. https://maven.aliyun.com/repository/public
    20. default
    21. true
    22. true
    23. <id>MavenCentral
    24. http://repo1.maven.org/maven2/
    25. <id>aliyunmavenApache
    26. https://maven.aliyun.com/repository/apache-snapshots

     查看

    查看官方仓库

    Maven Repository: org.springframework.boot » spring-boot-maven-plugin » 2.3.3.RELEASE (mvnrepository.com)

    IDEA给项目pom.xnl添加依赖项,构建的插件添加版本

    1. ……
    2. org.springframework.boot
    3. spring-boot-maven-plugin
    4. 2.3.3.RELEASE
    5. org.springframework.boot
    6. spring-boot-maven-plugin
    7. 2.3.3.RELEASE
    8. true
    9. true

    7. java找不到符号

    (1) 报错

    控制台打印java找不到符号 符号:类xxx 位置xxx

    (2)原因分析

    原因一:

    1. 在运行 Spring Boot 时报错,使用idea的maven打了jar包,之后运行程序后上述错误。

    原因二:

    1. 类Xxx的编码和引用类Xxx或引用类Xxx中方法的类的编码不一样。
    2. 例如:Xxxfunction.java的编码是GBK,而引用它的类的编码是UTF-8

    (3)解决方法

    导入类

    import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
    

    8.springboot 项目启动有哪些访问规则

    (1)规则一

    1. server.address 为对应机器ip地址时 ,如 101.12.x.x
    2. 此时访问该服务只能使用 ip 访问 。

    (2)规则二

    1. erver.address 配置为0.0.0.0
    2. 在服务器中,0.0.0.0并不是一个真实的的IP地址,它表示本机中所有的IPV4地址。监听0.0.0.0的端口,就是监听本机中所有IP的端口。如果想让springboot 应用通过外网ip可以访问,一般情况,将server.address 配置为 0.0.0.0 即可。

    (3)规则三

    1. 配置为 127.0.0.1 时,可以使用 localhost 和 127.0.0.1访问。但是不能使用 ip 访问。
    2. 如果不配置server.address 属性,则默认为127.0.0.1,所以默认规则是规则3。

    9.国内maven仓库镜像地址

    (1)地址

    1. 阿里云:http://maven.aliyun.com/
    2. 中央仓库:https://repo1.maven.org/maven2/
    3. 网易:http://maven.netease.com/repository/public/
    4. 华为云:https://repo.huaweicloud.com/repository/maven/
    5. tencent:https://mirrors.cloud.tencent.com/repository/maven/
    6. 中国科技大学:http://mirrors.ustc.edu.cn/maven/maven2/
    7. 南京大学:http://maven.nju.edu.cn/repository/
    8. 清华大学:https://repo.maven.apache.org/maven2/
    9. 北京理工大学:http://mirror.bit.edu.cn/maven/
    10. 东软信息学院:https://mirrors.neusoft.edu.cn/maven2/
    11. 中国科学院开源协会:http://maven.opencas.cn/maven/
    12. 北京交通大学:http://maven.bjtu.edu.cn/maven2/

    (2)设置

    1. <id>aliyun
    2. http://maven.aliyun.com/
    3. central
    4. <id>central
    5. https://repo1.maven.org/maven2/
    6. central
    7. <id>netease
    8. http://maven.netease.com/repository/public/
    9. central
    10. <id>huaweicloud
    11. https://repo.huaweicloud.com/repository/maven/
    12. central
    13. <id>tencent
    14. https://mirrors.cloud.tencent.com/repository/maven/
    15. central
    16. <id>ustc
    17. http://mirrors.ustc.edu.cn/maven/maven2/
    18. central
    19. <id>nju
    20. http://maven.nju.edu.cn/repository/
    21. central
    22. <id>tsinghua
    23. https://repo.maven.apache.org/maven2/
    24. central
    25. <id>bit
    26. http://mirror.bit.edu.cn/maven/
    27. central
    28. <id>neusoft
    29. https://mirrors.neusoft.edu.cn/maven2/
    30. central
    31. <id>opencas
    32. http://maven.opencas.cn/maven/
    33. central
    34. <id>bjtu
    35. http://maven.bjtu.edu.cn/maven2/
    36. central

    10. 项目连接MySQL 8报错

    (1)报错

    The server time zone value '?й???????' is unrecognized or represents more than one time zone

    (2)原因分析

    最新版本的mysql数据库,会提示版本驱动过旧的情况

    (3)解决方法

    方法一:在项目代码-数据库连接URL后,加上 ?serverTimezone=UTC(注意大小写必须一致)

    url: jdbc:mysql://127.0.0.1:3306/cloud_order? ?serverTimezone=UTC

    方法二:在mysql中设置时区,默认为SYSTEM(推荐)

    1. set global time_zone=’+8:00’

  • 相关阅读:
    WinForms C# 导入和导出 CSV 文件 Spread.NET
    免费1年服务器,部署个ChatGPT专属网页版
    freertos 内部机制
    AFL模糊测试
    百数应用中心——选择一款适合企业的标准应用
    前端开发性能优化方案-14条
    游戏数据入库
    AI平台、AI中台架构
    基于ssm008医院门诊挂号系统+jsp【附PPT|开题|任务书|万字文档(LW)和搭建文档】
    Java面向对象
  • 原文地址:https://blog.csdn.net/cronaldo91/article/details/136288430