一个仿知乎的问答论坛(A Q&A bbs which like Zhihu).
- 问答模块
提问者可以登录到系统后,使用提问功能提出问题。问题提出后会显示在问题列表页,其他用户可以查看该问题,并进行回答、邀请回答、收藏问题、点赞等操作。
- 文章模块
类似于个人博客,可以当做个人博客使用。用户登录后可以发表文章,对文章进行评论、收藏、点赞等操作。
- 用户模块
使用JWT进行用户身份信息的保存和验证。用户注册时会收到一封验证邮件,验证通过后方可注册。 用户登录后,可以修改自己的头像、昵称、个性签名。在“我的”页面可以查看到个人信息以及发出的问题、回答、文章、评论、收藏,还有自己的粉丝和关注用户列表。
- 数据库:MySQL 8.0 + Redis
- 后端:SpringBoot + MyBatis + JWT + Tomcat
- 前端:Semantic UI + Editor.md + jQuery
- 项目构建和部署:Maven + Docker
你可以直接运行jar包,或者使用Docker进行部署。建议在Linux环境下部署。 无论使用哪种方式,你都需要使用MySQL8.0自行建好数据库表,并在本机安装好Redis。建表的SQL文件:qabbs.sql
需要环境:JDK版本在13.0.2以上、MySQL版本8.0 在Release里下载mszdqabbs-1.0.0.jar到本地,然后在控制台运行命令:
nohup java -jar ./mszdqabbs-1.0.0.jar
其中nohup代表在后台运行项目。如果你想调试项目,去掉nohup即可,日志会在控制台打印。
首先,你需要在自己的机器上安装好Docker。相关的教程可以自行搜索 安装好之后,在本地新建一个文件夹,并将Dockerfile和mszdqabbs-2.0.0.jar文件放到该目录下。
使用su
切换到root用户权限,方便之后操作。
依次运行如下命令:
docker build -t yourname/mszdqabbs .
docker run -d --network host -v mszdqabbs_files:/var yourname/mszdqabbs
解释一下,
-d
表示在后台运行
--network host
表示与宿主机共享网络,可以不用考虑端口映射的问题,虽然在安全性上有所损失。
-v
表示使用volume存储镜像文件(容器重启后文件依然存在,数据不会丢失)。生产环境必须使用volume,以避免服务器重启、崩溃等导致的数据丢失。
由于项目使用了MySQL 8.0自带的ngram解析器,用来完成全局搜索的需求。 关于ngram的简介,在此不再赘述,可以点击下面的链接进行了解:
为了使ngram工作正常,需要对MySQL进行相关的配置,
请在my.cnf(Windows下为my.ini)配置文件里的**[mysqld]**项下面新增这两行:
ngram_token_size=2
ft_min_word_len=2
即可。若要查看配置是否成功,在重启MySQL服务之后运行如下命令:
show variables like 'ft_min_word_len';
show variables like 'ngram_min_token_size';
本项目只是简单地使用了Redis作为缓存中间件,不存在集群部署的问题。 host指定为localhost,端口为默认的6379。 您只需要安装好Redis,然后在本机以Daemon(后台)启动Redis服务器即可:
your_redis_install_path/redis-service redis.conf
其中redis.conf是您的配置文件,请自行搜索如何修改配置文件,配置为后台运行方式。
-修复了部分页面没有“邀请回答”链接的bug;
-新增了基于SpringAOP的日志支持。
-修复了“邀请回答”功能中关注用户头像显示错误的bug。
-集成了Spring Data Redis组件,使用Redis数据库作为缓存中间件
-提高了响应速度