Skip to main content

服务端项目开发

前置依赖

环境依赖

node: v14.19.3 +  
yarn: v1.22.17 +

第三方服务:

【必要】
mysql: v5.7+ (数据字段需要支持json类型;数据库、表、字段 字符集最好都设置为:utf8mb4 和 utf8mb4_bin)
redis: v5.0+

【可选】根据实际情况决定是否启用一下服务
邮件服务(发送邮件,注册、绑定、通知等)
阿里云相关服务(存储服务OSS、短信SMS、语音服务TTS)
微信公众号(扫码登录、网页授权等)
微信支付
支付宝支付
nacos服务(配置中心&注册中心)

项目说明

server项目是基于阿里开源nodejs框架Eggjs开发的,目前是基于js编写的,因此本项目的部署与运行不需要编译过程,直接上源码部署。

项目结构

h5ds-server
|- app 项目源码目录,参考eggjs官网文档
|- common 项目公共代码模块(常量定义、第三方lib、Helper帮助类、validate等)
|- controller controller
|- admin 后台管理相关接口
|- api 用户侧业务相关
|- open 无需登录相关接口
|- third saas接入相关
|- web 模板controller
- base.js 基础controller
|- extend egg应用扩展能力
|- middleware 接口中间件相关
|- model 数据表模型
|- public 对外资源文件目录
|- queue 队列文件
|- router 接口路由配置文件
|- service service
|- view 模板视图
- router.js 路由配置
|- config 项目配置文件目录,区分环境
- config.default.js 项目默认基础配置文件
- config.local.js 开发环境(yarn dev 启动)使用的配置文件
- config.prod.js 正式环境(yarn start 启动)使用的配置文件
- config.nacos.js nacos作为配置管理时,使用该配置
|- database 项目数据库项目文件目录
|- migrations migrate数据迁移文件目录
|- seeders 初始化数据目录
|- sqls sql数据文件目录
|- logs 项目运行日志输入目录
- .env.example 项目配置文件样板,正式部署时,复制并重名为.env
- .gitlab-ci.yml 基于gitlab的cicd配置文件
- .gitignore git忽略提交配置文件
- agent.js agent文件,参考eggjs官网文档
- app.js 项目入口文件,参考eggjs官网文档
- Dockerfile 项目容器化配置文件
- init_lock 项目是否执行初始化锁定文件,没有该文件时,系统启动时会自动执行相关初始化,初始化完成后会自动生成该文件,该文件路径可在.env中指定
- nacos.json 项目使用nacos管理配置信息时有效,将在启动时通过该配置加载nacos中的配置到系统env环境变量中
- packages.json node 包配置文件
- yarn.lock 包锁定文件
- README.md 项目开发使用说明文档

项目配置

最小配置

此场景适合快速将项目run起来,当然很多业务功能可能使用受限。

1、此配置只需要mysql和redis
2、项目无法扫码登录也无法注册账号(只能使用系统初始化生成的账号登录测试,具体账号信息请往下看)

根目录下准备一个.env配置文件(可以参考.env.example配置)

h5ds-server/.env

#服务配置(设置服务监听端口)
cluster.listen.hostname=0.0.0.0
cluster.listen.port=8080

#本站域名相关配置(域名带协议),用于下载离线app
host.site=http://localhost:8080
host.resource=http://localhost:8080

#文件存储系统 (oss-阿里云OSS 或者 local-本地存储 ),默认oss
multipart.disk=local

#数据库配置
sequelize.host=127.0.0.1
sequelize.port=3306
sequelize.username=root
sequelize.password=”“
sequelize.database=h5ds_v7
sequelize.schema=h5ds

#redis配置
redis.client.host=127.0.0.1
redis.client.port=6379
redis.client.password=”“
redis.client.db=0

#bull队列配置
bull.default.redis.host=127.0.0.1
bull.default.redis.port=6379
bull.default.redis.password=”“
bull.default.redis.db=1

初始安装

# 进入server项目
$ cd workspace/h5ds-server

//配置本地.env,当然参考上方【最小配置】修改
$ cp .env.example .env # 复制.env.example 为 .env ,并配置值

//安装依赖,如果没有 yarn 则先安装 $ npm install -g yarn
$ yarn

//数据初始化( 安装数据表 + 初始化数据(初始化角色、超级管理员)【慎用,会先清空admin/role/role_admin三张表,再插入数据】)
$ yarn init-server

初始化后将自动创建如下账户:
前台:
super_user@qq.com/123456 (信任用户(发布无需审核)、vip用户)
test_user2@qq.com/123456 (信任用户(发布无需审核))
test_user3@qq.com/123456 (vip用户)
test_user4@qq.com/123456 (普通用户(发布需审核、且无法使用vip功能))
管理端后台:
超级管理员:super_admin/123456

本地开发

启动项目

目前开发环境可以三种种模式启动项目

# 1、【推荐】调试模式(vscode下)可对程序做断点跟踪调试
# 热更新,使用config/config.local.js配置文件
# 直接按F5 或者
$ yarn debug

# 2、开发模式,热更新,使用config/config.local.js配置文件
$ yarn dev

# 3、prod模式,不会热更新,使用config/config.prod.js配置文件,模拟线上部署的启动方式,会启动多个进程
#启动服务
$ yarn start
#停止服务
$ yarn stop
#重启服务
$ yarn restart

开发模式和prod模式最终应用到的配置信息还是来源于.env (当只有一个.env配置时),因此应用的配置信息是一致的,当然也可以准备(.env.local 和 .env.prod)两个文件来区分不同模式下加载的配置信息


说明:首次运行程序,可能会自动运行初始化数据的功能(看项目根目录是否存在init_lock文件),因此可能看到很多的sql执行日志输出,不用担心,输出就对了。

server服务

项目启动后,默认监听8080端口,可以访问 http://localhost:8080/api/test 测试,当有 ”h5ds server“ 内容输出表示启动成功!

前后端联动(完整项目)运行

至此前端项目和后端项目的分别安装和启动都已成功,现在只需要将server监听的8080端口配置到前端项目中,默认配置就是8080.

再次访问前端项目的地址试试看吧!

深度使用

对于想要深度使用和开发本项目的朋友,建议如下:

1、仔细阅读和参考Eggjs官方文档

2、关于配置项的说明以及多配置环境使用的请参考.env.example 和config/目录下的文件注释一级加载逻辑

3、更多环境配置请仔细阅读h5ds-server/README.md

4、常用命令参考h5ds-server/package.json中scripts部分