Skip to content

服务器配置

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

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。这里根据自己的需要来。

兔兔答题安装环境截图

兔兔答题安装环境截图

兔兔答题 PHP 服务扩展配置

兔兔答题 PHP 扩展配置截图

CAUTION

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

程序文件

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

shell
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文件。数据导入成功之后,在数据库中执行如下的命令。

shell
CREATE VIEW t_data_search AS
SELECT *
FROM (SELECT id as uid, title, image, 'article' as data_type, create_time as publish_time
      FROM t_article as t_article
      UNION ALL
      SELECT uid, title, image, 'exam_library' as data_type, create_time as publish_time
      FROM t_tenant_exam_library as t_tenant_exam_library
      UNION ALL
      SELECT uid, title, image, 'resource' as data_type, create_time as publish_time
      FROM t_tenant_resource as t_tenant_resource) AS t_data_search;

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

shell
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、添加域名配置,按照下图配置。

兔兔答题 PHP 服务扩展配置

兔兔答题 域名配置截图

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

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

兔兔答题 nginx 配置

兔兔答题 PHP nginx 配置

兔兔答题 nginx 配置

兔兔答题 PHP nginx 配置

兔兔答题 nginx 配置

兔兔答题 PHP nginx 配置

兔兔答题 nginx 配置

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

兔兔答题 目录文件授权

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文件(没有则新建),按照如下的内容填写文件。

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

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

shell
npm run build

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

shell
 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 出现如下的内容,则表示编译成功。

shell
 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配置信息,根据里面的下面的中文标注修改,其他的参数可以采用默认的配置,也可以根据自己的需要进行配置。

shell
{
    "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编辑器,按照下图编译运行即可。

常见问题

1、如何注册 DCloud 应用?

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

兔兔答题 PHP DCloud开发者账号注册

兔兔答题 DCloud开发者账号注册

兔兔答题 PHP DCloud开发者账号注册

兔兔答题 DCloud开发者账号注册

兔兔答题 PHP DCloud开发者账号注册

兔兔答题 DCloud开发者账号注册

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

Last updated: