部署springboot项目到服务器(war包形式)

看了一些部署视频和帖子,发现说的都不完整,大部分都是直接生成war包,然后放到tomcat的webapps文件夹里面,捣鼓了好久都不行,最后参考了一些比较描述比较完整的博客和视频,最终还是部署成功了。

  1. 修改pom文件,改成war的形式

image-20201125215835745

  1. 排除springboot自带的tomcat

image-20201125215925373

  1. 启动类(BlogApplication)的同级目录下新建一个类来加载启动类,写法如图

image-20201125220226114

  1. maven先清理后打包

image-20201125220407105

  1. 生成war文件之后拷贝到服务器中tomcatwebapps目录下面(软件是winSCP)

image-20201125220629725

  1. 启动tomcat(启动之后会生成一个blog文件夹)
  2. 地址栏输入http://ip地址:端口号/war包名 即可访问。

部署时候的坑:

  1. 无法打成war

    由于在本地做项目的时候用的本地数据库,部署上去的时候忘记改了,导致数据库连不上,然后在本地修改了数据库连接,改完之后用maven执行clean,package,打包的时候出错了,错误显示数据库连接有问题,无法打包,我排查原因,原来是test文件夹里有关数据库的连接出问题了,maven打包的时候会测试test文件,所以无法打成war包,把test文件夹中相关的文件删除就可以成功了

  2. 生成的war包里没有静态资源文件

    clean之后我直接生成了war包,部署上去不显示页面,我排查原因,检查war包发现里面只有class文件,没有静态文件,比如html,css,什么的,然后去搜了一下war包的目录结构,发现结构没问题,然后我去Rebuild了一下工程,然后运行,才在target目录下找到静态资源文件,然后打包,成功。

  3. 数据库密码有特殊字符,忘记加''导致连不上数据库

    我设的密码最后一位是.,这是特别坑的,我之前的密码也有符号,我连接数据库的时候yml文件里密码没用''括起来也能连上,但是我改了密码之后(最后一位改成了.),就连不上了,加上''才能连上这种解决方案网上很少见到,我是偶然间在一个帖子的答复中看到的,也算是幸运了。

  4. 部署到服务器上之后部分功能不能用

    我部署在tomcat的时候访问路径要加上项目名,但是在idea上运行的时候就不用加项目名,功能不能用,不知道怎么排错,后来打开f12,一检查,发现是404错误,一看不能使用的功能,接口路径上并没有加上项目名,加上项目名就好了
    另外,也可以在tomcat里配置访问项目的时候路径上不用加项目名,修改此文件
    添加 <Context path = "/" docBase="E:\Program Files\apache-tomcat-9.0.29\webapps\blog" reloadabled="false"></Context>

如下图所示


这样,访问8080的时候会直接在后面加上项目名

需要特别注意的是,如果接口中有项目名,那么这种写法就会报404错误,比如项目名是blog,相应的文件夹是blog,接口名如果是/blog/3的话,他会去找blog文件夹下面的3接口,而不是/blog/3接口

posted @ 2020-11-25 22:40  xsyz  阅读(441)  评论(0编辑  收藏  举报