springboot+vue前后端分离项目-项目搭建9-服务器上安装部署
一、配置优化
1. 新增vue/public/static/config.js文件配置服务端ip地址,在index.html中引入,views里使用这个地址拼接url
富文本编辑器同步修改
2.新增application-prod.properties,配置如下内容,区分测试环境和正式环境的数据库和文件地址,原有的application.properties里增加spring.profiles.active=prod,可以让application-prod.properties生效(先让prod生效,后打包,打包后再修改需要到demo-0.0.1-SNAPSHOT.jar\BOOT-INF\classes路径下找配置文件改)
spring.datasource.url=jdbc:mysql://192.168.198.132:3306/springboot-vue?allowMultiQueries=true&useSSL=false&useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&zeroDateTimeBehavior=convertToNull&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=GMT%2B8&nullCatalogMeansCurrent=true
spring.datasource.username=root
spring.datasource.password=XXXXX
file.ip=192.168.198.132
3. 修改com/example/demo/controller/FileController.java,引用配置文件里配置的ip
4. 配置修改后本地启动测试,验证没问题后打包
二、前端打包
1.进入到项目路径下,npm run build命令打包,打包后生成dist文件夹
2.dist文件传到服务器上,dist/static/路径下 vi config.js修改地址为服务器ip(先打包,可在服务器上修改)
三、后端打包
1. 打包springboot项目,依次clean、compile、package,打包完成后会生成target/demo-0.0.1-SNAPSHOT.jar文件
2. jar包传到服务器上之后,使用nohup java -jar demo-0.0.1-SNAPSHOT.jar --spring.profiles.active=prod &命令启动,启动后报错,
查看服务器jdk版本,发现版本过低,参照https://www.cnblogs.com/xiexieyc/p/18288687
jdk21生效效果:
3.再使用nohup java -jar demo-0.0.1-SNAPSHOT.jar --spring.profiles.active=prod &命令启动成功(我的springboot项目创建时选的是jdk17版本,21版本可以启动,jdk应该是向下兼容的)
4.前端dist只需要修改文件上传地址就可以,前端不需要启动,参照https://www.cnblogs.com/xiexieyc/p/18289221安装nginx,配置nginx,查看nginx.conf,修改user为root(不修改会报权限错误),配置文件发现引用include /etc/nginx/conf.d/*.conf;修改default.conf文件
5. 配置之后启动,本次测试curl http://localhost:80,可以返回html数据,查看80端口已经监听,用windows服务器访问无法访问,telnet ip 80端口也不能链接,说明网络被限制,参照https://www.cnblogs.com/xiexieyc/p/18299631,配置防火墙开放端口
6.测试前端访问成功,无法登录,查看日志有报错,因为mysql还没有创建schema和数据迁移
7.数据库迁移数据,服务器数据库创建schema,与本地数据库命名一样,然后表复制到服务器数据库
8. 测试登录成功,测试图片上传功能也都正常
9.总结
192.168.198.132nginx启动监听80端口,配置/路径对应前端的dist包的index.html,api请求转发到后端http://localhost:9090/
网络访问过程:
浏览器访问http://192.168.198.132(默认80端口)
匹配到前端应用静态文件返回登录页
登录提交访问http://192.168.198.132/api/user/login,先到nginx,匹配到api请求,转换成http://localhost:9090/user/login,访问后端服务返回数据到nginx,nginx再返回数据到浏览器
文件上传过程:
浏览器访问登录进入到http://192.168.198.132/book列表页,编辑,上传
上传时不经过nginx,直接访问文件处理服务,文件处理存储后返回文件路径
编辑后更新,将文件路径等数据提交到nginx,nginx匹配到api请求,转换成http://localhost:9090/xxxxx,提交到后台
10. 总结2:本地开发时vue.config.js文件是本地配置,配置前端访问端口9876,/api可转换成http://localhost:9090
打包dist文件后上传到服务器,这部分配置就用nginx实现,端口用nginx的端口80,/api/可转换成后端服务的访问ip端口
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步