1 本地windows Springboot项目设置
下面我们对我们的项目做一些设置
打开application.yml,设置端口,连接数据库
项目打包成jar包,打开Maven,点击package
打包成功
2 导出打成功的jar包。
在target目录下:
如该图的demo-0.0.1-SNAPSHOT.jar包即为打包成功后的包,一般在SpringBoot项目的target目录下。
把这个jar复制到桌面,打开MobaXterm上传到云服务器,我改了个名字
3 部署jar包
我们要想在linux系统上运行这个项目,就要保证他运行所用的端口没有被占用,不然运行就会报错
查看端口使用情况
netstat -anp | grep 8800 //netstat -anp | grep <端口号>
可以看到这个端口被占用了(没被占用的时候不显示任何东西),查看占用端口的PID
我们要把它kill掉,留出空位来运行我们的项目。kill后再次查看端口,可以看到这个端口已经腾出来了(查询为空)
使用java指令运行项目jar包,这样我们的项目就算部署成功了
java -jar ***.jar //***为你的jar包名
随便找个浏览器,搜索栏输入http://公网ip:端口号 就可以搜索到你的网站了
还没完呢,这种启动方式是一次启动,当我们关掉Xshell的时候,我们的网站又访问不上了,又得重新打开MobaXtrem,
执行 java -jar ***.jar。所以我们要使用下面的方法让这个项目在服务器上自动不间断地跑.
方式一用脚本
关掉重启一下Xshell(这样的话原本的项目就停掉了),创建并编写文件 start.sh,向其中添加字段 : java -jar ***.jar 。按ESC + :wq + 回车键保存退出
给这个start.sh 管理员权限,然后用nohup指令不间断地运行(nohup指令:忽略所有挂断(SIGHUP)信号,不挂断地运行命令)
chmod 777 start.sh //赋予管理员权限
nohup ./start.sh & //不间断运行文件内的指令
方式二直接nohup
示例:
nohup java -jar BiuBiuBiu.jar >output 2>&1 &
解释:
1. 带&的命令行,即使terminal(终端)关闭,或者电脑死机程序依然运行(前提是你把程序递交到服务器上);
2. 2>&1的意思
这个意思是把标准错误(2)重定向到标准输出中(1),而标准输出又导入文件output里面,所以结果是标准错误和标准输出都导入文件output里面了。 至于为什么需要将标准错误重定向到标准输出的原因,那就归结为标准错误没有缓冲区,而stdout有。这就会导致 >output 2>output 文件output被两次打开,而stdout和stderr将会竞争覆盖,这肯定不是我门想要的.
这就是为什么有人会写成: nohup ./command.sh >output 2>output出错的原因了
参考
JAR包部署教程
nohup解析