Skip to content
bitacronPublic

About

黑马头条。前后端源码版

Resources

Stars

0 stars

Watchers

1 watching

Forks

Repository files navigation

黑马头条

前后端分离的资讯平台,基于黑马「黑马头条」微服务项目。仓库内包含 一个后端、三个前端,以及一份已编译前端快照和 OCR 字库。

目录 角色 默认访问地址
leadnews-server Spring Cloud 微服务后端 见下方网关端口
leadnews-web-admin 运营管理后台 http://localhost:8080
leadnews-web-app 用户端(Weex / Web) http://localhost:8081
leadnews-web-wemedia 自媒体端 http://localhost:8282
web-dists 三个前端的编译快照(与源码构建产物可能不完全一致) 经本机 Nginx:8801 / 8802 / 8803
tessdata Tess4j 中文 OCR 字库(chi_sim) 自媒体审核用

开发时三个前端分别代理到对应网关,不要直连各个微服务端口:

前端 开发代理 目标网关
管理后台 /service_6001 http://localhost:51603(admin-gateway)
用户端 /app、/server_85 http://localhost:51601(app-gateway)
自媒体端 /wemedia http://localhost:51602(wemedia-gateway)

建议启动顺序:中间件 → 后端网关与微服务 → 三个前端。若只想看已编译页面,中间件和后端起来后用 Nginx 指向 web-dists 即可。


管理后台 leadnews-web-admin

运营使用的 Vue 后台:用户审核、内容审核、频道、敏感词等。开发接口经 config/index.js 代理到管理网关 51603。

技术版本

项目 版本
Node.js 建议 12.x / 14.x(package.json 声明 >= 6;node-sass@4 + Webpack 3 在 Node 10/12/14 最稳,不要用 16+)
npm >= 3
Vue 2.6.5
Vue Router 3.0.1
Vuex 3.0.1
Element UI 2.4.11
Axios 0.18.0
ECharts 4.1.x
TinyMCE 4.9.1
Webpack 3.6.x

启动

cd leadnews-web-admin
npm install
npm run dev

浏览器访问 http://localhost:8080。

npm run build    # 生产打包,产物在 dist/(本地构建目录,不入库)

用户端 leadnews-web-app

面向读者的 Weex 工程,可用浏览器打开 Web 预览。开发接口经 configs/config.js 代理到 App 网关 51601。

技术版本

项目 版本
Node.js 建议 12.x(Webpack 3 + weex-loader,与另外两个前端共用 12 即可)
npm >= 3
Vue 2.5.11
Vue Router 3.0.1
Vuex 3.1.1
Weex Vue Render 1.0.17
Weex UI 0.6.14
Webpack 3.10.x

启动

cd leadnews-web-app
npm install
npm start

浏览器访问 http://localhost:8081(会打开 web/preview.html)。

npm run build:prod:web    # 打 Web 包

自媒体端 leadnews-web-wemedia

作者使用的 Vue 后台:写稿、素材、统计等。开发接口经 config/index.js 代理到自媒体网关 51602。

技术版本

项目 版本
Node.js 建议 12.x / 14.x(与管理后台相同,node-sass@4 + Webpack 3)
npm >= 3
Vue 2.6.5
Vue Router 3.0.1
Vuex 3.0.1
Element UI 2.4.11
Axios 0.18.0
TinyMCE 4.9.1
Webpack 3.6.x

三个前端 Node 大版本接近,可以用同一套 Node 12。不要用 Node 16+ 硬跑。

启动

cd leadnews-web-wemedia
npm install
npm run dev

浏览器访问 http://localhost:8282。

npm run build    # 生产打包,产物在 dist/

编译快照 web-dists

web-dists/ 里是三份已经编译好的前端(admin-web / app-web / wemedia-web),和源码执行 npm run build 的结果可能不完全一样,所以单独入库,供 Nginx 直接托管。

各前端自己的 dist/ 仍是本地构建产物,已被忽略,不要和 web-dists/ 混用。

Windows 上原 Nginx 入口:

http://localhost:8801
http://localhost:8802
http://localhost:8803

进入 Nginx 安装目录后执行 nginx.exe。端口和站点的对应关系以本机 Nginx 配置为准,根目录指向 web-dists 下对应子目录。


后端 leadnews-server

Spring Cloud 微服务。库表脚本在 leadnews-server/sql/。

框架版本

项目 版本
JDK 1.8
Maven 3.x
Spring Boot 2.3.9.RELEASE
Spring Cloud Hoxton.SR10
Spring Cloud Alibaba 2.2.5.RELEASE
Spring Cloud Gateway 随 Hoxton(leadnews-gateway 下三个网关)
OpenFeign 随 Hoxton
MyBatis-Plus 3.4.1
Knife4j / Swagger 2.0.2 / 2.9.2
JWT 0.9.1
Elasticsearch 客户端 7.2.0
XXL-JOB 客户端 2.2.0-SNAPSHOT

中间件版本

以下为原部署环境(Linux Docker)中的版本;Redis / Mongo / Kafka 等主机在配置里仍是内网 IP,请改成自己的环境。

中间件 版本 地址 说明
MySQL 5.7 localhost:3306 库:leadnews_user、leadnews_article、leadnews_wemedia、leadnews_admin、leadnews_schedule
Nacos 1.2.0 配置里为 192.168.153.82:8848 注册与配置中心
Redis 配置未写死版本 配置里为 192.168.153.82:6379,密码 leadnews 缓存、行为等
MongoDB 配置未写死版本 192.168.153.82:27017 库:leadnews-comment、leadnews-history
Elasticsearch 7.4.0 192.168.153.82:9200 文章检索(客户端依赖为 7.2.0)
Kibana 7.4.0 随 ES 可选
Kafka 2.12-2.3.1 192.168.153.82:9092 消息与流处理
Zookeeper 3.4.14 随 Kafka Kafka 依赖
MinIO 配置未写死版本 http://192.168.153.82:9000,桶 leadnews 对象存储,账号 minio / minio123
XXL-JOB Admin 2.3.0 http://192.168.153.82:8888/xxl-job-admin 热文计算等定时任务
Tess4j 字库 chi_sim 仓库根目录 tessdata/ 自媒体图片文字识别

Redis、Nacos、Mongo、ES、Kafka、MinIO 的主机请改成当前环境,不要沿用仓库里的 192.168.153.82。账号密码在各模块 application.yml / bootstrap.yml 中修改。

自媒体服务里的 OCR 路径目前是本机绝对路径:

tess4j:
  data-path: D:\Project\project\leadnews\tessdata
  language: chi_sim

请改成当前仓库根目录下的 tessdata。

模块与端口

模块 端口 职责
leadnews-gateway/leadnews-app-gateway 51601 App 网关,用户端入口
leadnews-gateway/leadnews-wemedia-gateway 51602 自媒体网关
leadnews-gateway/leadnews-admin-gateway 51603 管理后台网关
leadnews-service/leadnews-user 51801 用户、实名认证
leadnews-service/leadnews-article 51802 文章、静态化、热文
leadnews-service/leadnews-wemedia 51803 自媒体稿件、素材、审核
leadnews-service/leadnews-search 51804 ES 检索、搜索历史
leadnews-service/leadnews-behavior 51805 点赞、关注、阅读行为
leadnews-service/leadnews-comment 51806 评论(MongoDB)
leadnews-service/leadnews-schedule 51701 延迟任务
leadnews-service/leadnews-admin 51809 运营管理接口
leadnews-common / leadnews-model / leadnews-utils / leadnews-feign-api / leadnews-basic — 公共组件、模型、Feign、MinIO / Seata 等
leadnews-test — 中间件示例(ES、MinIO、Kafka、Mongo、XXL-JOB、Tess4j 等),非业务必需

启动说明

1. 准备中间件

在 Linux 上启动 Docker 后,拉起 Elasticsearch、Kibana、MySQL、MongoDB、Redis、Kafka、Zookeeper、Nacos、MinIO、xxl-job-admin:

systemctl start docker.service

原环境镜像版本见上一节表格。Nacos 控制台原地址:http://192.168.153.82:8848/nacos,请换成自己的主机。

MySQL 5.7 建库并导入:

  • leadnews-server/sql/leadnews_user.sql
  • leadnews-server/sql/leadnews_article.sql
  • leadnews-server/sql/leadnews_wemedia.sql
  • leadnews-server/sql/leadnews_admin.sql
  • leadnews-server/sql/leadnews_schedule.sql

2. 修改配置

各服务 src/main/resources/application.yml、bootstrap.yml 中把 Nacos、MySQL、Redis、Mongo、Kafka、ES、MinIO、XXL-JOB 的地址改成当前环境。

3. 编译并启动微服务

cd leadnews-server
mvn clean install -DskipTests

在 IDE 中分别运行各模块启动类,或对模块执行 mvn spring-boot:run。建议顺序:

  1. 三个网关:leadnews-app-gateway、leadnews-wemedia-gateway、leadnews-admin-gateway
  2. leadnews-user、leadnews-article、leadnews-wemedia、leadnews-admin 等业务服务
  3. 需要检索、评论、行为、定时任务时再启动 leadnews-search、leadnews-comment、leadnews-behavior、leadnews-schedule

Nacos 控制台能看到对应服务名(如 leadnews-user、leadnews-app-gateway)即注册成功。

4. 再开前端

对应网关起来之后,再启动三个前端;或用 Nginx 托管 web-dists。

About

黑马头条。前后端源码版

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages