SpringBoot项目的部署
SpringBoot项目内置了Tomcat,基本就是傻瓜式部署,打好jar包然后拖到服务器上运行就行了。
SpringBoot项目打包jar包
首先点击项目结构
然后添加一个artifacts,选择jar包
接下来弹出一个窗口;注意需要选择主类;
最后点击右侧Maven选项;先点击clean清楚之前的打包文件夹target,然后点击package打包项目,其中需要保证项目可以正常运行;
然后就可以发现项目目录下多了一个Target文件夹,里面就有打包好的jar包
可以打开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
这个破防火墙折磨我几个小时才发现…一直以为是安全组和服务器的问题…