Appearance
Server后端环境搭建
IMPORTANT
本文档介绍U8聚合SDK服务端程序开发环境的搭建,后端开发工具请使用Intellij IDEA(2021+),如果您还没有下载安装,请先完成下载安装:Intellij IDEA下载地址
项目结构
U8聚合SDK服务端程序使用Springboot+Mybatis-plus进行开发, 项目采用标准的MVC架构, 项目内通过多个子module组织不同模块的代码逻辑。
整个业务模块按MVC架构组织和命名, 具体的模块命名说明:
u8-common
通用库,里面是不依赖spring框架的通用组件,可以被所有其他模块依赖
u8-common-batch
Spring Batch通用库,主要增加了Spring Batch对Mybatis-Plus的支持
u8-common-service
通用Service组件库,可以被其他Service层依赖,内含比如支付通知,阿里云人机验证,Redis,i18n,分布式唯一ID生成组件等
u8-common-id-generator
分布式唯一ID生成服务的封装,使用百度开源的分布式ID组件
u8-support-alibaba
阿里巴巴相关的服务API封装,比如支付宝支付,OSS操作,短信验证码服务等
u8-support-tencent
腾讯相关的服务API封装,比如微信支付等
u8-support-idcard
实名认证服务相关的封装,比如中宣部实名认证服务,第三方实名认证服务等
u8-entities
实体类组件,包括了和数据库表中一一对应的实体类
u8-repository
数据访问层组件,实现u8-entities定义的实体类对应的mapper和dao。
u8-repository-config
数据访问层配置组件,主要涵盖了数据源的配置以及sql脚本
u8-x-server
server核心业务程序,处理登录、下单、各个渠道的登录认证、支付回调等逻辑
u8-x-manager
后台管理系统业务程序,u8-manager-client前端程序连的后端程序
u8-quartz-core
基于quartz的简易作业调度管理中心,自带一个简易的任务管理后台,可以对作业实现添加,启动,暂停,告警等处理
u8-quartz-jobs
具体的作业任务,比如数据统计作业,退款检测,自动封号作业等
u8-x-quartz
作业调度中心启动组件,定义springboot配置和启动运行等, u8-quartz-client前端工程连的后端程序。
具体各个模块的含义和用途,请参考如下说明(server工程内README.md):
导入工程
使用Intelij IDEA 导入server工程, 首次导入的时候,请选择按gradle方式导入:
工程导入之后, 我们需要将工程编码设置为UTF-8编码,点击IDEA菜单File->Settings,打开设置窗口界面,然后搜File Encoding,将编码都设置为UTF-8:
有时候,我们在IDEA控制台中也会出现乱码,我们可以将这个编码也设置为UTF-8。 点击IDEA菜单Help->Edit Custom VM Options,打开自定义参数文件,最后加上这一行:
bash
-Dfile.encoding=utf-8
修改之后, 重启IDEA,然后再点击IDEA菜单Build->Rebuild Project 重新编译一下工程。
然后,如果我们需要在Intellij IDEA中直接能够启动应用程序, 还需要在启动配置中,做如下配置:
如上图设置后, U8Application就是u8-x-server子程序的启动配置了, 点击右上角三角形启动按钮或者旁边debug启动按钮,就可以启动了。其他子程序的设置, 和U8Application是一样的。 各个子程序启动配置说明如下:
bash
U8Application: u8-x-server子程序对应的启动配置
U8MApplication: u8-x-manager子程序对应的启动配置
U8QApplication: u8-x-quartz子程序对应的启动配置
参数配置
每个子程序都是标准的springboot启动程序,采用标准的springboot配置文件。 比如u8-x-server子程序的配置文件,在u8-x-server/src/main/resources/目录下application.properties。 为了方便在开发环境和正式环境中切换不同的配置, 我们定义了application-dev.properties用于开发环境,你之后也可以定义比如application-prod.properties用于正式环境。 具体使用哪个环境的配置文件, 可以在上面启动配置设置的时候,通过spring.profiles.active启动参数指定(dev/prod)
接下来,我们就来看下application.properties/application_dev.properties中的配置(说明的参数都是可以修改的,其他未说明的参数,一般默认即可):
u8-x-server程序配置:
bash
server.port: 程序启动后占用的端口
spring.servlet.multipart.location: 程序临时文件目录位置,建议手动指定,防止使用系统临时目录,一段实际无使用,被系统回收,导致程序需要重启
spring.datasource.url: 数据库链接,修改其中的数据库IP地址,端口和数据库名称即可。
spring.datasource.username: 数据库用户名
spring.datasource.password: 数据库用户密码
spring.redis.host:redis服务所在的ip地址
spring.redis.password: redis服务的密码,如果redis中没有配置,可以为空
spring.redis.port: redis服务的端口,默认是6379
spring.redis.database: 当前程序使用的redis数据库索引, 取值:0到15
u8-x-manager程序配置:
bash
server.port: 程序启动后占用的端口
u8.mgr.storePath: 管理后台存储目录,存储上传的文件等
spring.servlet.multipart.location: 程序临时文件目录位置,建议手动指定,防止使用系统临时目录,一段实际无使用,被系统回收,导致程序需要重启
spring.datasource.url: 数据库链接,修改其中的数据库IP地址,端口和数据库名称即可。 和u8-x-server程序的配置要一致
spring.datasource.username: 数据库用户名, 和u8-x-server程序的配置要一致
spring.datasource.password: 数据库用户密码, 和u8-x-server程序的配置要一致
spring.redis.host:redis服务所在的ip地址, 和u8-x-server程序的配置要一致
spring.redis.password: redis服务的密码,如果redis中没有配置,可以为空, 和u8-x-server程序的配置要一致
spring.redis.port: redis服务的端口,默认是6379,和u8-x-server程序的配置要一致
spring.redis.database: 当前程序使用的redis数据库索引, 取值:0到15, 和u8-x-server程序的配置要一致
aliyun.captcha.regionid: 阿里云人机验证 regionid
aliyun.captcha.accessKey: 阿里云后台 AccessKey
aliyun.captcha.accessSecret: 阿里云后台 AccessSecret
aliyun.captcha.appkey: 阿里云人机验证服务的 AppKey
u8-x-quartz程序配置:
bash
server.port: 程序启动后占用的端口
spring.servlet.multipart.location: 程序临时文件目录位置,建议手动指定,防止使用系统临时目录,一段实际无使用,被系统回收,导致程序需要重启
spring.datasource.source.url: 源数据库链接,修改其中的数据库IP地址,端口和数据库名称即可。和u8-x-server程序的配置要一致
spring.datasource.username: 数据库用户名, 和u8-x-server程序的配置要一致
spring.datasource.password: 数据库用户密码, 和u8-x-server程序的配置要一致
spring.datasource.quartz.url: 作业数据库链接,修改其中的数据库IP地址,端口和数据库名称即可。
spring.datasource.quartz.username: 作业数据库用户名
spring.datasource.quartz.password: 作业数据库密码
spring.redis.host:redis服务所在的ip地址
spring.redis.password: redis服务的密码,如果redis中没有配置,可以为空
spring.redis.port: redis服务的端口,默认是6379
spring.redis.database: 当前程序使用的redis数据库索引, 取值:0到15。 如果和u8-x-server程序用的同一个redis,这里数据库索引使用一个和他们不同的
如果您还没有安装导入mysql数据库,请参考这篇文档完成Mysql的安装和配置: MySql配置
如果您还没有安装Redis,请参考这篇文档完成Redis的安装和配置:Redis配置
发布程序
1、 生成部署文件
开发环境搭建成功之后, 如果我们想要在远程服务器上发布后端程序的话, 我们直接在IDEA中可以编译出对应子程序的部署文件:
1、 在Intellij IDEA中, 按ALT+F12快捷键, 启动命令行中断
2、 编译u8-x-server子程序: 输入 gradlew :u8-x-server:release
3、 编译u8-x-manager子程序: 输入 gradlew :u8-x-manager:release
4、 编译u8-x-quartz子程序: 输入 gradlew :u8-x-quartz:release
5、 编译执行完成后, 生成的发布目录在:U8Servers/release目录下
6、 也可以直接执行命令,一次编译上面全部子程序: 输入 gradlew :release
2、 部署文件介绍
经过上一步的操作, 我们已经在release目录下生成了u8-x-server、u8-x-manager和u8-x-quartz三个程序的部署文件。 我们接下来, 就可以将这些部署文件,上传到服务器(一般使用Linux系统,推荐使用Centos 7.2/7.6系统)上。
我们以u8-x-manager管理后台程序为例(其他两个程序部署文件也是一样):
startdev.sh : 程序启动脚本
stopdev.sh : 程序关闭脚本
service.sh : 启动和关闭辅助脚本
manager.dev: 程序运行目录
----bin/u8-x-manager-5.0.0.jar : 程序可执行jar文件
----application.properties: 程序配置文件
----application-dev.properties: 程序开发环境配置文件
----logback-spring.xml: 日志输出配置文件