服务器配置
本章适合私有化部署或者源码购买的用户了解,关于兔兔答题系统对服务器的要求,要遵循如下的版本即可:
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
文件。数据导入成功之后,在数据库中执行如下的命令。
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,根据下面的提示进行配置,其他没有说明的就不要修改。
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 文件做指定的配置。在宝塔的站点菜单,找到你刚才添加的域名,右侧有一个设置按钮,点击设置按钮。
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编辑器,按照下图编译运行即可。
常见问题
1、如何注册 DCloud 应用?
首先登录该网址 Dcloud 开发者中心,没有账号的自己根据界面操作注册一个账号。
最后将 Appid 复制下来,填写到小程序端部署中第 3 点中的DCloud开发者中心的应用appid
对应配置位置。