关于maven管理的springboot项目在idea上如何打包部署到linux服务器上。这里写自定义目录标题
先说一下我的项目环境和部署环境。
1.项目:springboot + vue mysql数据库。
2.部署环境:liunx系统 centos7.
第一种:以jar包的方式运行。
1.linux 系统系配置jdk
jdk安装位置:/var/tmp(我的安装位置)
安装过程:将安装包放到文件下,通过 -tar -zxvf jdk1.8 命令解压。再进入 /etc目 录下,通过vi profile命令编辑profile文件,修改环境变量(修改教程:https://www.cnblogs.com/jiu0821/p/7672395.html)。
2.Tomcat安装:
Tomcat 安装位置:/var/tmp(我的安装位置)
安装过程:将安装包放到文件下,通过 -tar -zxvf tomcat8 命令解压。
项目部署:
3.后端:将项目后端打成jar包,(后端项目打包,只需要打用到那个服务项目包即可,因为在打包的时候idea默认认为一个个微服务是独立的项目,会自动加入依赖。)放入linux系统的 /var/tmp 文件下,通过 chmod 777 file 给文件赋运行权限。再修改shell脚本,通过 vi robotcenter.sh 编辑脚本。再通过 ./robotcenter.sh start 运行脚本。项目后端启动成功。
4. 前端:vue打包命令(进入前段目录下,npm run build)将vue项目打包文件放到tomcat的webapps下面。在tomcat/bin 目录下 ./startup.sh启动。前端项目启动。
至此项目以jar包的方式部署在linux系统下就完成了。
以war包的方式部署在Linux服务下。
- 因为我们项目部署的环境,只暴露了一个端口给我们。因为我们的项目是前后端分离。前端和后端的端口不一样。在内网的情况下,前端和后端的地址都能访问到。但是后来客户给了我们一个外网地址,并且只暴露了一个端口。所以在外网访问时,就会只能访问一个端口,前端或者后端。(后端springboot项目相当于内置了一个tomcat,前端再一个tomcat。改成一样的接口。端口冲突了 )。
所以我知道的有两种解决方案:一种是下载nginx,采用反向代理,将后端路径代理成我可以访问的路径。二是将项目全部打成war包放到同一个tomcat下。 因为第一种客户服务器下,没有nginx环境,(gcc rpc 什么的方正很麻烦)。所以我是打成war包的方式解决。
1.后端项目打包
修改需要打包的服务项目的pom文件。将
war 打包方式jar 改成war。
再加入:
org.springframework.boot
spring-boot-starter-tomcat
provided
(作用:移除嵌入式tomcat插件)
javax.servlet
javax.servlet-api
3.1.0
provided
(这个和项目有关,自己查一下。)
<!--部署项目-->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>2.6</version>
<configuration>
<failOnMissingWebXml>false</failOnMissingWebXml>
</configuration>
</plugin>
( ;如果想在没有web.xml文件的情况下构建WAR,请设置为false。)
然后在clear ,package一下。打包完成。然后将后端代码放到服务器下的tomcat下的webapps下。
2.前端打包
前端打包方式跟jar包部署的时候一毛一样。打包完成后放到tomcat 的webapps/root 下。然后修改 一下前端前端访问后端的路劲,注意二级路径名要跟后端的打包的包名一毛一样。
3. 进入,tomcat/bin下 ./starup.sh 启动tomcat 。在打入 cd …/logs 进入日志目录 tail -f catalina.out 查看日志。
4. 成功!