将SpringBoot项目打包并部署到服务器
该篇博文记录我手动部署SpringBoot项目的jar包到服务器上,和我遇到的一些坑和解决过程。
1.打包项目
2.得到jar包
成功打包后,jar包会在target
文件夹中
3.单独运行jar包
这时候,这个jar包在有Java的环境下就可以直接在DOS窗口中启动了(SpringBoot项目内置了Tomcat,不需要我们再配置)
4.在服务器上运行jar包
若jar包能在本机DOS窗口中成功启动,我们就可以将这个jar包拉到服务器中了。(使用Xshell和Xftp远程操作服务器)
因为是jar包,所以是需要Java环境的,与开发环境相同。我这里是 jdk 1.8
可参考文章:/u010993514/article/details/82926514
5.防火墙开放端口
需要注意一个点,因为想要访问服务器(或虚拟机)内部的端口的话,是会被防火墙的卡住的。所以我们需要提前开放项目使用的那个端口,以供我们在本地访问。
我们这里的项目所用端口是8099
端口,所以我们要开放 8099 端口。
可参考文章:/Honnyee/article/details/81535464
#开放8099端口firewall-cmd --zone=public --add-port=8099/tcp --permanent (--permanent永久生效,没有此参数重启后失效)# 添加8099端口外部访问权限(这样外部才能访问)firewall-cmd --add-port=8099/tcp#重新载入,添加端口后重新载入才能起作用firewall-cmd --reload
其余指令:
# 查看防火墙状态systemctl status firewalld# 查看开启了哪些端口firewall-cmd --list-ports# 查看端口firewall-cmd --zone=public --query-port=80/tcp
6.在本地访问(爬坑)
然后就可以尝试在本地访问该项目了。
不出意外的话,在本地访问服务器IP:项目端口/...
是可以访问到项目接口的。可是。。。还是出意外了。
无法访问,就是单纯地访问不到服务器上的这个端口(我用虚拟机做了一样的步骤:能成功访问)。
再次检查服务器开放的端口:没毛病呀,8099
是开放了呀!
我甚至将服务器内部的防火墙都关闭了,还是嗯... 无法访问此页面
反正,就是端口开放的问题!!!!
然后突然受到一篇文章的启发:进入腾讯云服务器的控制台,这还有一个防火墙!??
而且,这里的防火墙开放的端口和我刚才在服务器内部开放的端口不一样。。。
然后我就尝试在这也开放一次8099
端口,然后在本地再请求一次服务器的 8099 端口。
成功出现了这个页面!那就意味着访问成功了!
尝试调用项目接口:(成功!!)
因为我的项目中有数据库,所以我还要把本地的数据库导入到服务器中。接口才能成功访问。
所以我们还需要在服务器中安装MySQL。
安装MySQL可参考文章:/xsge/p/13827288.html
数据库数据:可以先将本地数据库导出为.sql文件,然后将该.sql文件拉到服务器上,然后再导入到服务器的数据库中。
7.注意
切记:还需要在腾讯云服务器(可能每种服务器都需要)的控制台,开放相应端口
8.让jar包一直处于运行状态
之前我们都是直接用命令:
# 运行jar包java -jar harmonyos-0.0.1-SNAPSHOT.jar
这种方式是直接运行jar包,当你关闭远程连接时,它就被关闭了,相当于这个进程被杀死了。
可是部署一个项目,那它就应该一直处于运行状态,这样我们才能随时随地的调用API。
在服务器上(我这是centOS)想要让一个jar一直处于运行状态,需要让其在后台启动。
# 后台启动nohup java -jar xxx.jar &# 然后通过exit退出终端窗口exit