SpringBoot项目的部署

SpringBoot项目内置了Tomcat,基本就是傻瓜式部署,打好jar包然后拖到服务器上运行就行了。

SpringBoot项目打包jar包

首先点击项目结构

SpringBoot 项目部署架构图 springboot项目部署服务器_java

然后添加一个artifacts,选择jar包

SpringBoot 项目部署架构图 springboot项目部署服务器_服务器_02


接下来弹出一个窗口;注意需要选择主类;

SpringBoot 项目部署架构图 springboot项目部署服务器_jar_03


最后点击右侧Maven选项;先点击clean清楚之前的打包文件夹target,然后点击package打包项目,其中需要保证项目可以正常运行;

SpringBoot 项目部署架构图 springboot项目部署服务器_java_04


然后就可以发现项目目录下多了一个Target文件夹,里面就有打包好的jar包

SpringBoot 项目部署架构图 springboot项目部署服务器_服务器_05


可以打开cmd测试,在jar包目录下运行

java -jar 项目名.jar

效果与IDEA运行一样;

部署在服务器

部署之前需要确认服务器上该端口未被占用

netstat -ntlp   //查看当前所有tcp端口
//查看8080端口进程情况
netstat -tunlp | grep 8080
//杀死进程,26993是进程信息最后的那个数字,即PID
kill -9 26993

用XFTP把jar包拖到服务器上;
同样也可以先 java -jar 项目名.jar测试一下服务器网络环境是否正常是否可以成功运行;

为了一直运行该进程而不会随着我们退出连接关闭,需要运行:

nohup java -jar codergroup-1.0.0-SNAPSHOT.jar >temp.txt &

后面的 >temp.txt &意思是把输出的内容保存到temp.txt中当日志;

部署报错

nohup: 忽略输入并把输出追加到"nohup.out"
或者
nohup: 忽略输入重定向错误到标准输出端

修改命令为:

nohup java -jar 你的springboot工程名称.jar --server.port=端口号 你的springboot工程名称.jar >/dev/null 2>&1&

测试

在服务器上发送get请求:

curl http://localhost:8080/user?name=william
//注意多参情况,&在命令行中有特殊含义,会自动转义,所以需要加上转义字符
curl http://localhost:8080/user?name=william\&password=123456

如果在本地机器上无法访问请求url,请在确保已经开启阿里云服务器安全组之后,验证是否关闭防火墙;
centOS6及以前版本使用命令: systemctl stop iptables.service

centOS7关闭防火墙命令: systemctl stop firewalld.service
这个破防火墙折磨我几个小时才发现…一直以为是安全组和服务器的问题…