前提
- SpringBoot - Vue 前后端分离项目确保能够在本机完成前后端连接,正常访问!
- 阿里云部署了 java 环境。
- 配好 mysql 环境。
- Tomcat 不用也行,因为 SpringBoot 已经内置了Tomcat
一、前后端整合
1、打包 前端静态资源
注意:
- Vue 中的项目文件的 url 改为 服务器的IP 地址,不是本地的IP地址。
- 确保打包前的Vue 项目没有任何错误!
在项目的路径下打开cmd 输入 npm run build
看到输出 Build complete
即代表打包成功!
2、观察项目路径下的文件目录是否多了一个dist 文件下
文件夹下的内容为:
3、将 static 和 index.html 文件放到SpringBoot 的resource 资源路径下的static 目录下,如果没有static 文件夹,自己新建一个static 文件下,最终复制过去之后的项目结构图如下:
4、项目打包成jar包
注意:
- 数据库的 url 是否正确;一般要改为服务器的IP地址,不是本地IP地址。
步骤一、先双击 clean
,静等一会
步骤二、然后再双击package
,静等一会
步骤三、观察输出框下面出现若出现 BUILD SUCCESS
代表 jar 包打包成功!
步骤四、观察项目结构目录下的 target 是否多了一个 .jar
包
如果有,打包成功!
二、jar 包 上传到服务器
我是通过 xftp 上传到服务器当中
三、运行 jar
进入到jar 包的目录下,执行命令
java -jar .jar包名
这个时候就已经大功告成了!去浏览器输入服务器IP地址及端口号访问吧!
四、项目在服务器上自动不间断地跑
还没完呢,这种启动方式是一次启动
当我们关掉Xshell的时候,我们的网站又访问不上了,又得重新打开Xshell,执行 java -jar ***.jar。所以我们要使用下面的方法让这个项目在服务器上自动不间断地跑.
1、关掉重启一下Xshell(这样的话原本的项目就停掉了)
创建并编写文件start.sh
,向其中添加字段 :java -jar ***.jar
。
按ESC + :wq + 回车键保存退出
vim start.sh # 编写start.sh 文件
#内容如下:
java -jar ***.jar # *** 为项目jar 包的名称
2、 给这个start.sh 管理员权限,然后用nohup指令不间断地运行(nohup指令:忽略所有挂断(SIGHUP)信号,不挂断地运行命令)
chmod 777 start.sh //赋予管理员权限
nohup ./start.sh & //不间断运行文件内的指令
3、使用
netstat -anp | grep 8081 #8080:项目的端口号
大功告成!
五、可能出现的问题
只列举了我自己遇到的问题而已,不代表全部
1、出现 com.mysql.cj.jdbc.exceptions.CommunicationsException: Communications link failure
思考:很明显是数据库的问题:查看自己的数据库用户名、密码、mysql的配置文件有没有问题,mysql的IP地址及端口有没有错误,服务器的端口有没有开放等等!
经过折磨发现自己的原因如下:
我的原因就是防火墙端口没有开启
下面列举自己的解决方案,不代表出现这个问题就是这个解法!可能会有其他的原因
- 如果是阿里云,需要保证阿里云的安全组策略是开放的
- 确保Linux的防火墙端口是开启的
# 查看firewall服务状态
systemctl status firewalld
# 开启、重启、关闭、firewalld.service服务
service firewalld start # 开启
service firewalld restart # 重启
service firewalld stop # 关闭
# 查看防火墙规则
firewall-cmd --list-all # 查看全部信息
firewall-cmd --list-ports # 只看端口信息
# 开启端口
firewall-cmd --zone=public --add-port=8081/tcp --permanent #开端口命令:
systemctl restart firewalld.service #重启防火墙
六、最后
萌新一个,想在博客记录一下,希望对你有所帮助!
欢迎在评论区讨论,一起交流!