No Description

reghao 206efa11e4 update 3 months ago
srv 206efa11e4 update 3 months ago
.gitignore 3101581905 update 1 year ago
README.md 42d03bb7bb update README.md 3 months ago
build.sh 206efa11e4 update 3 months ago
docker_app.sh 5d5b2d243e update build.sh 3 months ago
shutdown.sh 763389f2dc 更新 tnb 项目构建脚本 3 months ago
start.sh 763389f2dc 更新 tnb 项目构建脚本 3 months ago

README.md

系统简介

tnb 是一个 bilibili-like 的 VOD 系统, 使用前后端分离模式开发, 后端采用微服务, 整个系统包括下述项目:

  • tnb > tnb 后端系统
  • tnbapp > tnb 前台应用

依赖版本

构建依赖

  • os:Linux
  • jdk:17
  • maven:3.9.6
  • node:v16.19.0
  • npm:8.19.3
  • git
  • docker

第三方服务依赖

  • mysql:5.7
  • redis:6.0.16
  • rabbitmq:3.8.9
  • zookeeper:3.8.4
  • mongodb:4.4
  • nacos-server:v2.4.1
  • elasticsearch:7.17.18

构建部署

cd tnb0/srv

# 启动第三方服务依赖
bash start_thirdparty.sh

# 初始化 MySQL 数据库
bash init_db.sh

# 编译构建后端和前端应用, 并且会构建 docker 镜像
bash build.sh

# 启动后端服务和前端应用的 docker 镜像
bash docker_app.sh

oss-store 应用

鉴于 oss-store 应用需要在本地磁盘上存储文件, 为了便于文件存储目录的更改, 故采用外部配置. 其配置文件(tmp/bin/oss-store/oss.yml) 的内容如下:

spring:
  datasource:
    url: jdbc:mysql://127.0.0.1/reghao_oss_tdb?useSSL=false&useUnicode=true&characterEncoding=UTF-8&serverTimezone=GMT%2b8
    username: test
    password: Test@123456
server:
  tomcat:
    basedir: /opt/tmp/tomcat
oss:
  store-host: 127.0.0.1
  store-dirs:
  - /opt/disk/13f654c8-af87-4710-aac9-7aa086c99aec/
  console-host: 127.0.0.1

第一步, 修改 basedir, store-host, store-dirs, console-host 等配置

  • basedir > 上传文件时 tomcat 存放的临时目录
  • store-host > oss-store 应用所在机器的地址
  • store-dirs > 实际存放文件的目录, 可配置为多个目录, 但必须保证每个目录挂载到不同的磁盘
  • console-host > tnb/file-service 应用所在机器的地址

若 oss-store 和 tnb/file-service 部署在同一台机器上, 那么只需要修改 basedir 和 store-dirs

第二步, 然后切换到 tmp/bin/oss-store 目录下后执行 start.sh 脚本启动应用

oss-store 启动时会调用 tnb/file-service 的 RPC 接口, 所以需要 tnb/file-service 应用运行后再启动 oss-store

如果采用 aliyun-oss 存储文件, 那么就不需要使用 oss-store 应用

hosts 文件配置

在 /etc/hosts 文件中添加下述映射:

# 指向 oss-store
127.0.0.1 oss.reghao.cn
# 指向 tnb 和 tnbapp
127.0.0.1 api.reghao.cn

使用系统

前台系统地址(即 tnbapp 应用)

http://reghao.cn

其他

本项目模块太多, 构建部署都太过繁琐, 推荐使用 bnt 项目提供的 devops 系统来自动构建部署应用.