Coder Social home page Coder Social logo

jl-shungen / mszdqabbs Goto Github PK

View Code? Open in Web Editor NEW

This project forked from jxzhangaoran/mszdqabbs

0.0 0.0 0.0 2.71 MB

一个前后端分离的仿知乎问答论坛(A Q&A bbs which like Zhihu)。基于Springboot + MyBatis + Redis + SemanticUI + MySQL8.0。项目预览:

Home Page: http://mtk.pub/

Dockerfile 0.05% TSQL 1.60% Java 29.31% HTML 29.74% CSS 6.73% JavaScript 32.58%

mszdqabbs's Introduction

码上知道问答论坛(mszdqabbs)

一个仿知乎的问答论坛(A Q&A bbs which like Zhihu).

项目演示地址:http://mtk.pub/

项目预览图


PC端

文章详情页面

Markdown编辑页

“我的”

文章展示列表


移动端

评论区

“我的”

文章展示列表

项目简介

一个模仿知乎的问答论坛,以Markdown格式保存富文本,包含问答、文章、用户三大模块:

  • 问答模块

提问者可以登录到系统后,使用提问功能提出问题。问题提出后会显示在问题列表页,其他用户可以查看该问题,并进行回答、邀请回答、收藏问题、点赞等操作。

  • 文章模块

类似于个人博客,可以当做个人博客使用。用户登录后可以发表文章,对文章进行评论、收藏、点赞等操作。

  • 用户模块

使用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

直接运行jar包方式

需要环境:JDK版本在13.0.2以上、MySQL版本8.0 在Release里下载mszdqabbs-1.0.0.jar到本地,然后在控制台运行命令:

nohup java -jar ./mszdqabbs-1.0.0.jar

其中nohup代表在后台运行项目。如果你想调试项目,去掉nohup即可,日志会在控制台打印。

使用Docker进行部署

首先,你需要在自己的机器上安装好Docker。相关的教程可以自行搜索 安装好之后,在本地新建一个文件夹,并将Dockerfilemszdqabbs-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

为了使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相关配置

本项目只是简单地使用了Redis作为缓存中间件,不存在集群部署的问题。 host指定为localhost,端口为默认的6379。 您只需要安装好Redis,然后在本机以Daemon(后台)启动Redis服务器即可:

your_redis_install_path/redis-service redis.conf

其中redis.conf是您的配置文件,请自行搜索如何修改配置文件,配置为后台运行方式。

更新日志

2020-05-03

 -修复了部分页面没有“邀请回答”链接的bug;
 -新增了基于SpringAOP的日志支持。

2020-05-04

 -修复了“邀请回答”功能中关注用户头像显示错误的bug。

2020-05-09

 -集成了Spring Data Redis组件,使用Redis数据库作为缓存中间件
 -提高了响应速度

mszdqabbs's People

Contributors

jxzhangaoran avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.