Springboot项目部署到云服务器(Ubuntu 18.04)

Springboot项目部署到云服务器(Ubuntu 18.04)

  • 技术概述:springboot的出现大大方便了后端的开发,项目在本地运行固然方便调试,但涉及使用时,把项目部署到云上显然是更好的选择,这篇随笔就介绍以下这次实践中我在springboot项目部署方面的一些经验。技术难点:部署涉及的内容较多,如linux命令的使用、maven的plugin及goal、linux上java环境/mysql的安装等,没有实践经验的人需要参考很多资料才能完成从打包到部署的全过程。

  • 部署步骤、部分问题及解决过程等见下列内容

大致框架参考了这一篇博文:https://blog.csdn.net/Mou_Yang/article/details/102137861

这里只对我成功部署的大致步骤进行概括,并对与文章不同及有遇到问题的部分进行重点介绍。

一、 云服务器设置

购买云服务器后,要在安全组里设置要开放的端口号,否则无法访问直接对服务器指定端口进行访问

二、 Springboot项目打包

由于springboot项目中本来就带有tomcat服务器,所以只需要将项目打包成jar包,后续就能很方便地在linux服务器上运行。

关于打包的坑:

spring项目打包部署可以有两种方式:一种是项目文件与依赖文件分开,一种是全部文件都打包成一个jar包。这里我们为了方便,选择打包成单一jar包的方式进行部署。

  • 要注意的是,使用IDEA的maven的jar插件也能将项目打包成一个独立的jar,但是通过查看打包出的jar包的内部结构,我们可以发现:在没有经过特别配置的情况下,这种方法打包出来的只包含项目本身的文件,不包含项目的依赖文件,所以运行起来会报如“ClassNotFoundException”之类的错误。

    而使用IDEA的“spring initializr”创建springboot项目时,会在pom.xml文件里自动添加上插件:“spring-boot-maven-plugin”。里面跟打包jar包有关的主要“goal”是:repackage,这个goal的作用是把生成好的项目本身的jar跟项目依赖的jar包再次打包,统一整合进一个可直接运行的jar中。

    所以,有了这个插件后,我们在命令行直接输入“maven package”命令并执行,maven就会执行maven自带的jar插件后会再执行spring-boot-maven-plugin中的repackage,来把依赖文件也打包进去。这样子,在命令行中,就可以通过使用“java -jar xxxx.jar”命令直接运行springboot项目。

  • 一些错误/问题的解决:

    • 在打包前需要在pom文件中指定项目的启动类,否则在后续启动时可能会遇到“xxx.jar没有主清单属性的错误”,具体分析及修改过程见这篇博客:https://www.cnblogs.com/Zs-book1/p/12457356.html
    • 如果希望跳过maven打包前自动执行的测试,可以在pom文件的properties标签中添加<skipTests>true</skipTests>;在IDEA中使用时也可以在maven的标签卡上方的选项中找到闪电带有闪电标志的”toggle ‘Skip Tests’ mode"按钮并点选。

三、 项目部署

  • MySQL的安装、配置(云端的Ubuntu 18.04上):

    • 安装:要想使用高版本的MySQL,比如MySQL8,在ubuntu 18.04 LTS上不能直接使用apt install mysql,因为这样默认安装的是MySQL5,后面要改很麻烦。

    • 正确做法:根据教程先加载配置文件,设置要下载的版本,之后再使用apt-get install mysql安装。

    • 参考教程:https://blog.csdn.net/qq_40871363/article/details/88822117

  • 配置:为了方便自己在远程访问,可以按照教程进行配置,其中几个注意点

    • 进行远程访问用户创建与授权时,按照网上的几个教程会报语法错误,后面看有博文说了:高版本MySQL中用户创建跟授权要分开,不然会报语法错误,确实如此。还有,要注意用户名后的@符号的含义。

四、项目启动

先在linux上安装好jdk,配置好环境变量什么的。然后把jar包传到linux上,按照教程使用nohup命令一直运行。

教程:相关命令的使用:https://blog.csdn.net/ninisui/article/details/77989938

参考文章:

  1. https://www.cnblogs.com/Zs-book1/p/12457356.html

  2. https://blog.csdn.net/Mou_Yang/article/details/102137861

  3. https://blog.csdn.net/ninisui/article/details/77989938

  4. https://blog.csdn.net/Mou_Yang/article/details/102137861

  5. 参考最多的一篇博文:https://blog.csdn.net/Mou_Yang/article/details/102137861

posted @ 2020-06-23 16:31  盛会之外  阅读(1111)  评论(0编辑  收藏  举报