关于SpringBoot部署上的一些坑

来源:互联网 发布:如何判断域名被劫持 编辑:程序博客网 时间:2024/04/30 04:54

最近打算把之前写的一个SpringBoot的小demo部署到自己的腾讯云上
但是中间断断续续踩了很多坑,所以来写个博客,来记录下

第一个坑

  • war包的部署

在IDEA里打包成war包后,我高高兴兴的把它扔到了服务器的Tomcat上

但是却没有用,我以为是环境问题
于是我把打包的war包扔到了本地的Tomcat上
还是没有用
我查看了本地Tomcat的日志

1
严重: The web application [/ssm] registered the JDBC driver [com.alibaba.druid.proxy.DruidDriver] but failed to unregister it when the web application was stopped. To prevent a memory leak, the JDBC Driver has been forcibly unregistered.

查了资料,说是Tomcat7里面的防止内存泄漏的机制
用了很多方法试着解决,但是现在还是没有解决
于是用了jar打包的方式,放弃用war打包

第二个坑

  • jar的打包
    SpringBoot里用jar打包只需把pom.xml里packaging改成jar
    1
    <packaging>jar</packaging>

然后点击右侧Maven projects里的package即可在target目录下生成对应的jar文件

但是有一个问题,我本地数据的密码与服务器上不一样
所以还要在resources文件夹下的application.properties 里把数据库密码改下
但是因为我这里有单元测试,所以改完后要关掉单元测试才行

改完后在本地测试成功
高高兴兴的扔到服务器上
执行命令

1
java -jar demo.jar

报错

1
Exception in thread “main” java.lang.UnsupportedClassVersionError: a (Unsupported major.minor version 52.0)

这里就要注意了
因为我本地编译用的JAVA SDK是1.8版本的
而服务器上是1.7版本的,所以就出了问题

一开始我打算把IDEA里项目编译的SDK改为1.7
但是改完1.7后打包各种报错
估计是Maven那边又有些地方版本对不上吧(JAVA的版本真的是坑,前后不兼容)

于是只能在服务器上修改JAVA的版本
参考了这篇博客 ubuntu 安装jdk 的两种方式
总算是完成了版本的升级

第三个坑

  • 服务器上的端口问题
    一开始我在resources文件夹下的application.properties 里把项目端口设置为81端口
    但是在服务器上运行的时候报错了
    1
    ERROR 10148 --- [ main] o.a.coyote.http11.Http11NioProtocol : Failed to start end point associated with ProtocolHandler ["http-nio-81"]

查了资料后
According to w3.org doc ports below 1024 are priviledged on Linux. Only root can bind to such ports. You should either use ports >1024 or run under root account (not recommended).
发现好像不能把端口定为小于1024的端口,于是我改成了8889端口

打包–本地测试–上传服务器–运行–成功

总算是成功了!!!

一些注意事项

  • 数据库的远程管理用Mysql官方的MySql Workbench工具
    远程连接的时候记得先在数据库中新建一个用户

  • Tomcat里的管理员要在tomcat-user.xml 中设置
    设置完就可以查看进程了

用到的工具

  • IDEA
  • Tomcat
  • Mysql
  • WinSCP
  • MySql Workbench
原创粉丝点击