工具:阿里云的CentOS7
一. 项目打包
1.可以直接在IDEA中打包
完成后,在项目的target文件目录里可以找到jar包
2.另一种方法是在cmd中切换到项目所在目录,然后执行mvn package 或者mvn clean package。
二.部署
1.将jar包通过工具上传到服务器上
SpringBoot默认集成了tomcat容器,只要打成jar包,就不需要再在服务器上配置tomcat等web容器,体现了SpringBoot的微服务的概念。
2.确保服务器上有jdk环境
输入命令:
nohup java -jar xxx.jar >> xx.log 2>&1 &
jar包名称换成自己的, >> xx.log是重定向输出日志
成功会有进程号
完成部署。
三.查看
查看进程号
ps -ef | grep java
如果要删除这个进程或者更新,先杀死对应的进程,再重新部署
kill 进程号
四.注意
1.确保阿里云服务器开放了相应端口,可以在官网的安全组进行设置
2.部署的命令
(1)临时部署,如果我们关掉了xshell之类的页面,该程序就会停掉:
java -jar xxx.jar
(2)使用nohup对它进行后台运行, &为后台运行指令,关掉xshell仍可以执行:
nohup java -jar xxx.jar &
退出: ctrl + c
完成部署
用上述命令会出现nohup: ignoring input and appending output to ‘nohup.out’ 这样的提示。
即:忽略输入并将输出追加到’ nohup.out
解决:
- 如果不想输出到nohup.out,我们可以通过重定向指定输出的日志文件:
nohup java -jar xxx.jar >> xx.log &
- 如果不需要该日志,Linux下还有一个特殊的文件/dev/null,它就像一个黑洞,所有重定向到它的信息都会消失,因此可以考虑直接将日志打到黑洞里面。
nohup java -jar xxx.jar > /dev/null &
此时又会提示nohup: ignoring input and redirecting stderr to stdout
即:nohup:忽略输入并将stderr重定向到stdout
如果想去掉提示则执行:
nohup java -jar xxx.jar > xx.log 2>&1 &
其中2>&1的意思:这个意思是把标准错误重定向到标准输出中
Linux中0、1和2分别表示标准输入、标准输出和标准错误信息输出
注意:此处的> xx.log 2>&1顺序不能更改,否则达不到想要的效果
3.报错:no main manifest attribute
参考文章:执行Jar包报错:no main manifest attribute以及spring-boot-maven-plugin报红问题
参考:
https://blog.csdn.net/qq_33206732/article/details/79171393