
# 博客项目部署总结
介绍一下本博客的部署流程以及踩的一些坑,给需要部署的朋友以借鉴。
# 1. 准备工作
# 1.1 投资
2核4G服务器(小一点也行)+CentOs7 个人域名
# 1.2 开发工具
idea(后端) vscode(前端) putty(连接服务器)
# 2. 项目配置
本博客来自于风丶宇的开源项目,请将项目克隆到本地
配置方面可以参考原作者博客
# 2.1 后端
# 2.1.1 修改配置文件
idea导入项目,修改
application.yml,以下是需要修改的内容因为涉及到docker部署,所以以下的ip地址需要写服务器外网ip,且需要开放对应端口
如果只是本地跑跑不需要docker,写
localhost或者127.0.0.1
1. datasource
1. url
2. username
3. password
2. redis
1. host
2. port
3. password
3. rabbitmq
1. host
2. port
3. username(默认guest)
4. password(默认guest)
4. mail
1. host
2. username
3. password
4. port
5. serach
1. mode
6. upload
1. mode
2. local
1. url
3. oss(如果mode选择的local则无需修改)
7. website
8. qq(第三方登录需要等项目部署完之后自己去申请,当然不需要的话也可以不配)
1. app-id
9. weibo
1. app-id
2. app-secret
3. redirect-url
# 2.1.2 其它问题
打包时遇到了报错:
class lombok.javac.apt.LombokProcessor (in unnamed module @0x4273c8be) cannot access class com.sun.tools.javac.processing.JavacProcessingEnvironment (in module jdk.compiler) because module jdk.compiler does not export com.sun.tools.javac.processing to unnamed module @0x4273c8be查了一下是lombok的问题,请在
pom.xml,修改lombok的坐标,增加<version>1.18.20</version>,修改后如下<dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>1.18.20</version> <optional>true</optional> </dependency>
# 2.2 前端
前端不太需要修改东西,大都是个性化的东西,我修改的地方如下
音乐播放器,打开
player.vue,修改this._getMusicType(你自己歌单的id);你可以修改为自己网易云歌单的id,可以通过浏览器打开网易云网页版,打开你的歌单,查看url里的id。这样默认打开的是你自己的歌单。再修改一下这里
musicTypeList: [ { name: "热歌榜", id: 3778678 }, { name: "新歌榜", id: 3779629 }, { name: "飙升榜", id: 19723756 }, { name: "嘻哈榜", id: 991319590 }, { name: "My Songs", id: 自己歌单的id } //默认自己歌单的id ],修改网页icon,请直接替换public里的
favicon.ico
# 3. 项目部署
# 3.1 服务器环境搭建
yum install -y yum-utils device-mapper-persistent-data lvm2
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
yum install -y docker-ce
systemctl start docker
docker pull mysql
docker run --name mysql --restart=always -p 3306:3306 -e MYSQL_ROOT_PASSWORD=密码 -d mysql
docker pull redis
docker run --name redis --restart=always -p 6379:6379 -d redis --requirepass "密码"
docker pull nginx
docker pull rabbitmq:management
docker run --name rabbit --restart=always -p 15672:15672 -p 5672:5672 -d rabbitmq:management
以上就拉好镜像并且启动了相关服务
# 3.2 数据库构建
此步的目的是构建项目依赖的数据表,以下方法二选一
- 你可以在服务器内进入mysql 的容器,
docker exec -it mysql /bin/bash,然后在里面mysql -uroot -p来进入mysql。从github拉下来的项目里有个blog-mysql8.sql,可以将这个文件通过filezilla上传到服务器,然后执行这个文件(记得先创建blog的数据库并use它),具体自己搜或者参考这里。 - 你也可以通过远端连接sql,当然你需要调整以下mysql 的配置并且开放3306端口,你可以自己搜一下如何远程访问数据库,如何开放云服务器端口。
# 3.3 开始部署
这里可以参考项目部署
到这里,如果你正确配置并且部署的话,应该就可以访问了.....
# 4. https和第三方登录
https:具体参考原博客,写的很细致,一步步跟着做不会出错的,出错就是你的问题。
第三方登录:参考这里,申请qq互联的时候需要项目能访问,并且又qq登录按钮(亲测)
# 5. 其他问题
在部署的过程中我遇到了很多问题在此记录一下
application.yml里ip地址写了localhost或者127.0.0.1,都会导致jar包运行失败,而docker有个机制,容器内没有项目运行的话会自动exit,可以通过docker ps -a来查看。为了排查运行失败的原因,你可以通过docker logs 容器id来查看日志,为了避免一次性输出过多,可以加上限制行数的参数,具体百度- 聊天室提示失败,打开F12发现是ws连接不上,可能是几个原因:nginx、域名解析、网站配置。请一个一个检查,这里需要你打开后台-系统管理-网站管理-其他设置,配置好websocket。另外我在手机上用了其它UA会提示失败,暂时不知道什么原因...
- 静态资源上传和获取失败,正常配置应该不会出错,请配置好
application.yml里upload的url,这里不要写ip,要写子域名,例如static.xxx.com - 音乐播放器的问题,上文已提到
- 发现博客全站内的图片点击以后的预览会加载不出来,最后经过风神指导是https的问题,这才想起来,已经实现全站https了但是后端的配置里写的还是http,于是赶忙改了回来。另外需要将发国的文章里的图片改成https,说说、相册什么的,懒得改数据库了,直接删了重发了。。图片预览用的是vueimageSwipe插件,我看了一下issue,该插件没有加载出来图片时会加上
scale(0)导致图片不可见。因为浏览器自动转成https了,而插件无法以http访问到图片。 - 想到再补充...
CC BY-NC-SA 4.0 Licensed
