看似正常的前后端分离项目,但由于本人久疏战阵,对开发运维技术也已生疏,所以在测试打包部署时遇到了方方面面的坑,用了一下午都解决了😆 ,简单记录下
前端部署
项目源码地址:https://github.com/nnn149/MeetingWeb
1、首先项目下来,就直接准备 npm install 然后 npm run dev了,然后在npm install时报:
npm ERR! Found: @babel/[email protected]
balabala后面还一堆的错,经搜索,回退npm版本可以继续执行:
npm install [email protected] -g
参考:npm install 版本太高导致的错误,用命令行回退版本 还有说法说是切换node版本,没有试。
2、接下来在install过程中又报:
[email protected]: Permission denied (publickey)
参考 VUE npm install 使用出现[email protected]: Permission denied (publickey)
重新生成了下id_rsa.pub可以继续了(装yarn或者cnpm不好吗,可惜我已积重难返)
3、还是install,又报:
npm ERR! E:\Git\cmd\git.EXE ls-remote -h -t git://github.com/adobe-webplatform/eve.git
参考 记录一次——npm ERR! E:\Git\cmd\git.EXE ls-remote -h -t git://github.com/adobe-webplatform/eve.git
修改下git的配置,可以继续了
注:我很少写前端,所以npm的国内源好像都没配过,直接挂梯下的,包括上面的git bash操作
set http_proxy=http://127.0.0.1:7890
set https_proxy=http://127.0.0.1:7890
4、之后就可以npm run dev了,之后按师傅的issue写的,删删改改一些配置,项目就能起来连后端了,接着是打dist
5、打dist就出了一个
npm ERR! missing script: build
打包指令直接使用 npm run build:prod
即可(看package.json文件去)
6、然后就是挂完ng静态资源没加载的事,老生常谈了属于是,好像挺好解决的。
后端部署
项目源码地址:https://github.com/nnn149/MeetingServer
打包前,和前端一样,先按师傅issue写的修修改改,然后本地调试一切正常,但是打包时会遇到一些maven问题和jdk原生方法问题
1、师傅项目是用2.2.7.RELEASE写的,但是我的maven一直找不到spring-boot-maven-plugin的2.2.7.RELEASE,蟹,直接升到我常用的2.5.0去了,结果:
程序包javax.validation.constraints不存在
应该是2.3.0之后没了,需要引maven了,引了一个之后,包都打不了了(当然应该不是这个原因),索性直接回退到2.2.5.RELEASE去了
2、我的项目默认依赖版本是JAVA8,所以在这里遇到了一个RTFM问题:
java readallbytes_无法解析方法readAllBytes()。
去用JAVA8+吧,师傅也是用的JAVA11
3、使用命令行跳测试打包直接报
Fatal error compiling: 错误: 无效的目标发行版:1.11 -> [Help 1]
参考 maven打包java11出错 Fatal error compiling: 错误: 无效的目标发行版:1.11 -> [Help 1]解决方案 (properties标签的配置看一下)
直接使用maven跳过测试(把maven上那个闪电点了就行) package即可
4、放服务器后台启动就行了
#!/bin/bash
export JAVA_HOME=/usr/local/jdk1.8.0_111/
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=.:${JAVA_HOME}/bin:$PATH
# java -jar mq_demo-0.0.1-SNAPSHOT.jar >mq.log 2>&1
nohup java -jar XXX.jar >mq.log &
SQL部署
我在本地用的mysql8.0,上线则需要用5.7,但是踏马的5.7是不是没有
utf8mb4_0900_ai_ci
?
于是我把线上字符集格式改成了 utf8mb4_general_ci
也能正常运行
关于chrome新版本对webrtc支持的设置
使用http ip访问会有个报错,这个在127.0.0.1时是没有的,参考
navigator.mediaDevices.getUserMedia 报错 undefined 得知
navigator.mediaDevices.getUserMedia 目前支持的url:
localhost、file和https
http的url下navigator.mediaDevices.getUserMedia 为undefined
所以需要另做配置:
参考 关于chrome新版本对webrtc支持的设置 需要
谷歌浏览器地址栏打开 chrome://flags/
enable-webrtc-hide-local-ips-with-mdns 勾选disabled
unsafely-treat-insecure-origin-as-secure 勾选enabled
然后将你要访问的ip写上去 就行了
摄像头就能用了