普通视图

发现新文章,点击刷新页面。
昨天以前首页

离职 20 天,我的新系统终于研发完成上线

2025年6月30日 07:23

大家好,我是兔兔,今天分享一篇关于兔兔答题新系统的安装部署教程。我们的系统也升级到 1.1.0 的版本。

1、升级了答题的 UI 界面,支持顺序练习、章节练习等多种练习界面左右切换试题、答题卡功能,新增题库激活码功能,同时优化了大量试题,页面渲染卡顿问题,从实际的测试情况,2000道试题,页面的渲染也不会出现卡顿问题。

2、同时新增了微信支付和余额支付两种模式。新增用户钱包功能,以及钱包余额的充值。用户下单时可以选择钱包支付。

3、完善订单模块,题库模块和资源模块的付费支付功能。管理端支持订单查看、订单退款、退款记录等功能。

4、新增系统配置,将用户端的固定的内容,可以实现管理端配置,实现实时动态显示。

关于更多的功能,可以访问 www.tutudati.com/doc/8.html 进行阅读。

服务器配置

本章适合私有化部署或者源码购买的用户了解,关于兔兔答题系统对服务器的要求,要遵循入下的版本即可:

1、PHP的版本必须在8.0.x,至于更高的版本,例如8.4x版本以及更高,系统还未完全测试过,生产环境不建议直接使用。

2、MySQL的版本必须是>= 5.7.x的版本,低于5.7.0的版本100%是无法使用的。

3、Redis的版本没有过多的要求,不过推荐使用7.0以及更高的版本。如何在后端代码框架(ThinkPHP)中缓存的配置采用的默认驱动,就不需要安装 Redis 服务。兔兔答题默认采用的是文件存储,如果没有特别的配置,可以不用安装 Redis 服务。

4、管理端使用的Vue3的版本开发,同时使用了Element Plus的版本,所以需要使用Node.js的版本推荐是>= 16.x的版本。同时推荐生产环境,编译打包成静态文件运行。

上述为兔兔答题系统系统部署所需软件环境。要满足这样的环境,服务器的最低配置在 2 核 2G 的配置。

前期准备

1、本系统采用域名授权的方式进行商业售卖,因此你在购买系统之后,请提供授权域名。授权域名需要提供两个。假设你注册的域名是 dati.com 的域名,则你需要提供一个 admin.dati.com 的域名和一个 cx4vmw1d.dati.com 的域名。

2、注册并且备案好你的微信小程序,并且生成好 APPID 和 APPSECRET。

3、购买一台配置不低于 2 核 2G 的服务器,系统的版本自己根据需要来安装,并且安装好宝塔。

安装说明

本教程为兔兔答题 saas 系统的环境搭建与系统安装教程,请仔细阅读本教程中的内容。避免折腾许久,也无法系统搭建成功,如果你不会技术相关的知识,请联系我们协助搭建。

[!CAUTION] 如果你不会技术,或者是对 PHP 部署不熟悉,请联系我们协助部署。不要个人在独自折腾,自己解决不掉,最后说系统有问题。如果仍选择自己部署的,请仔细阅读文档,不要文档都没看清楚,就吐槽一堆,在大量实践证明中,很多人连文档都不看,或者看一部分就自己去操作,最后出现问题,还怪系统的问题。本文档采用宝塔的方式进行部署。

安装流程

安装的流程,请严格按照下面的几点进行部署,不要随机的顺序去安装,除非你对 PHP 很熟悉。

1、安装PHP8.3,并且安装Redis、fileinfo扩展,如果涉及到函数禁用,请开启这几个相关的函数(redis、fileinfo, eval, mysqli,一般来说在使用一些集成方式安装PHP这些扩展都会带有)。

2、安装 MySQL5.7 服务+ Redis7.x 服务,这两种数据库服务。

3、安装 NGINX 服务,对于NGINX没有版本要求,直接安装即可。

4、安装Node.js,这里推荐安装18.x版本,因为一些依赖库需要使用到。如果你的服务器不支持安装其他的版本,并且服务器当前安装的版本不满足兔兔答题系统的要求,可以选择在其他设备上安装,编译好管理端的包之后,在上传到服务器上即可。

安装完成之后,根据如下截图,去核实一下,自己的环境是否安装正确。由于商户端,我采用的是本地电脑编译,然后上传到 server 目录中,因此服务器就没有安装 Node.js。这里根据自己的需要来。

兔兔答题安装环境截图

扩展配置截图

[!CAUTION] 默认兔兔答题没有使用 Redis 作为缓存系统,所以截图中没有安装 Redis 扩展,如果你采用了 Redis 作为缓存系统,则一定要把截图中的扩展安装上。

程序文件

要实现完成的安装过程,必须知道系统的源代码目录分别是哪些。

platform: 总平台端的前端文件
server: 商户端、总平台和用户端的后端 API 接口服务文件
tenant: 商户端的前端文件
user_client_003: 用户端源代码

用户端源代码的目录并不一定是user_client1,实际的目录都是以user_client开头的目录。

[!CAUTION] 默认的情况,我们在发送程序源代码时,会根据你提供的授权域名,将商户端和总平台端编译好,并自动添加到 server/public 目录下面,因此你只需要关注 server 目录的部署即可,也就是下文中提到的 API 部署章节。如果你是完整的前后端部署,需要关注下文中的商户端和总平台端章节。

API部署

1、将 server 目录上传到服务器运行目录,宝塔的目录是/www/wwwroot,只要放到该目录下即可,如果你需要在添加一层目录也是可以的,只要保证在/www/wwwroot/xxx/server/public目录下的就可以了。

2、导入数据库,在宝塔的数据库管理里面创建一个数据库,然后导入tcloud_prod.sql文件。

3、配置系统环境变量,找到 server 目录,将该文件夹下的.example.env复制一份,并命名位.env,根据下面的提示进行配置,其他没有说明的就不要修改。

APP_DEBUG=true

[APP]
DEFAULT_TIMEZONE=Asia/Shanghai

[DATABASE]
TYPE=mysql
# 数据库的 IP 地址
HOSTNAME=
# 数据库的名称,也就是第 2 点中创建的数据库名
DATABASE=
# 数据库用户名称
USERNAME=
# 数据库用户密码
PASSWORD=
HOSTPORT=3306
CHARSET=utf8mb4
DEBUG=true
PREFIX=t_

[LANG]
default_lang=zh-cn

[PROJECT]
# 这里的 tutu 不要改,固定为该内容。
UNIQUE_IDENTIFICATION=tutu
DEFAULT_PASSWORD=123456

DEMO_ENV=false

4、添加域名配置,按照下图配置。

域名配置截图

5、安装目录设置,在执行完第4步后,进入到server/public目录下面,你会发现多了一个.user.ini的文件,打开该文件,在文件内容的最前面添加一个#,起到注释作用,也可以将该文件删除。不推荐删除该文件。

6、在配置完域名之后,还需要对 Nginx 文件做指定的配置。在宝塔的站点菜单,找到你刚才添加的域名,右侧有一个设置按钮,点击设置按钮。 nginx 配置

nginx 配置

nginx 配置

nginx 配置

6、设置文件目录权限,在 server 下面应该有个runtime目录,如果没有该目录,就创建一个 runtime 的目录。然后选中该目录右键权限选项,按照如下设置权限。 目录文件授权

兔兔答题

7、操作完上面的步骤,此时系统就算搭建完成了。可以通过访问 https://cx4vmw1d.dati.com/admin, 就可以登录到商户端,商户端的默认账号是shuati,123456。

[!CAUTION] 切记在登录成功之后,修改密码,建议设置复杂的密码。如果没有修改密码,带来的损失,与兔兔答题无关,自行承担损失。

平台端部署

在拿到源代码之后,将 platform 和 server 两个文件夹放在相同目录的位置,也不要去改这两个文件目录的名称。

1、安装 Node.js 依赖包,在 platform 目录下面执行npm install --legacy-peer-deps命令,前提是你已经安装好 Node.js 环境。

2、设置后端域名,在 platform 目录新建一个.env.production文件(没有则新建),按照如下的内容填写文件。

NODE_ENV = 'production'
# Base API
VITE_APP_BASE_URL='https://admin.dati.com/'

3、编译打包文件,一定是在 platform 目录下执行该命令。

npm run build

4、待命令完成之后,出现如下的内容,则表示编译成功,然后就不用管理。

✓ built in 49.99s                                                                                                                                 22:34:58
文件正在复制 ==> ../server/public/admin
文件已复制 ==> ../server/public/admin

商户端部署

商户端的文件夹是 tenant,商户端部署和平台端的部署方式步骤完全一样,只是在.env.production文件中的域名配置,要改成https://cx4vmw1d.dati.com/。当执行完 npm install --legacy-peer-deps 出现如下的内容,则表示编译成功。

✓ built in 49.99s                                                                                                                                 22:34:58
文件正在复制 ==> ../server/public/tenant
文件已复制 ==> ../server/public/tenant

[!CAUTION] 在平台端和商户端编译完成之后,要将程序部署到服务器,直接参考 API 部署章节就可以了。记住,平台端和商户端的编译是在本地电脑执行的。如果你是要在服务器上执行,只需要按照上面的操作步骤执行对应的配置和编译命令就可以了。

小程序部署

小程序端的目录是user_client_003,下面的所有操作都是在该目录下执行。

1、执行npm i 来安装依赖包。

2、第二步找到 uitils 下的 request.js,替换后端api域名。讲 baseUrl 的值配置成 https://cx4vmw1d.dati.com/

3、修改manifest.json配置信息,根据里面的下面的中文标注修改,其他的参数可以采用默认的配置,也可以根据自己的需要进行配置。

{
    "name" : "yuanshuati",
    "appid" : "DCloud开发者中心的应用appid",
    "description" : "yunshuati",
    "versionName" : "1.0.0",
    "versionCode" : "100",
    "transformPx" : false,
    /* 小程序特有相关 */
    "mp-weixin" : {
        "appid" : "微信小程序appid",
        "setting" : {
            "urlCheck" : true,
            "minified" : true,
            "postcss" : true,
            "es6" : true
        },
        "resizable" : false,
        "usingComponents" : true,
        "LazyCodeLoading" : true,
        "__usePrivacyCheck__" : true
    },
}

上述配置,可以通过 uniapp 官方的编辑器来执行,uniapp开发者工具下载地址。其次需要下载并安装微信开发者工具,请自行下载并安装,微信开发者工具下载地址

安装完之后,使用uniapp编辑器,按照下图编译运行即可。 uniapp编辑器编译

常见问题

1、如何注册 DCloud 应用?

首先登录该网址 Dcloud 开发者中心,没有账号的自己根据界面操作注册一个账号。

DCloud开发者账号注册

DCloud开发者账号注册

DCloud开发者账号注册

最后将 Appid 复制下来,填写到小程序端部署中第 3 点中的DCloud开发者中心的应用appid对应配置位置。

❌
❌