springcloudAlibaba+nacos+dubbo服务部署到阿里云服务器中踩的坑
首先你的阿里云服务器需要预先配置好:jdk环境,maven环境,mysql环境,nacos环境+其他项目需要的中间件环境(redis,zk等)
踩的坑记录。
1.
第一个坑:本地把项目打包(maven install)之后放到阿里云服务器上执行java -jar xxx.jar报错:
服务器上springboot项目启动时报错 no main manifest attribute, in XXX1.0.0-SNAPSHOT.jar
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
这是因为jar包启动的时候没有指定主类,在pom文件的build中加上上面的spring-boot-maven-plugin插件即可。
2.
第二个坑,配置好插件之后再执行:
java -jar xxx.jar
Exception in thread "main" java.lang.NoClassDefFoundError: org/springframework/boot/SpringApplication
at com.xxx.config.xxxApplication.main(xxxApplication.java:23)
Caused by: java.lang.ClassNotFoundException: org.springframework.boot.SpringApplication
at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
因为我的阿里云服务器没有配置maven,导致启动的时候报错
3.maven装好
启动maven 失败,由于我的阿里云服务器配置的是openjdk,更改 为oracle jdk,再配置下即可完成
4.maven安装好后,启动dubbo服务成功。
5.api服务本地启动后,请求阿里云nacos中注册的dubbo服务失败
调试后发现nacos中注册地址为阿里云的私网地址。
在dubbo服务的配置文件中加上
spring:
application:
name: dubbo01-server
cloud:
inetutils:
ignored-interfaces: eth.*
preferred-networks: 阿里云的公网地址
6.启动之后,nacos控制台中的注册地址就变成了公网地址。
7.注意开通阿里云dubbo的端口