Skip to content

服务器配置

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

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

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

3、Redis的版本没有过多的要求,不过推荐使用7.0以及更高的版本。

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

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

系统环境

在部署系统之前,你需要仔细阅读下面的环境要求,避免在部署系统之后,提示一些版本不兼容的问题。

环境要求

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

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

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

3、Redis的版本没有过多的要求,不过推荐使用7.0以及更高的版本。

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

安装流程

这里就不提供详细的安装流程,如果你有编程经验,也不愿意用宝塔这样的可视化操作软件,那就选择lnmp搭建。对于使用宝塔搭建的用户,请仔细按照下面的清单来安装环境。

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

2、安装MySQL服务+Redis服务,这两种数据库服务。

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

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

系统安装与部署

当你获取到兔兔答题系统的代码包之后,会有如下三个目录:

shell
server_api: Api接口源代码
admin_client: 管理端源代码
user_client_003: 用户端源代码

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

其次你需要准备两个域名,一个域名是提供管理端,另一个域名是提供用户端(API服务)。购买时会让你提供一个授权域名,该授权域名必须作为api端的域名,至于管理端的域名可自行解析。

API部署

部署Api端之前,确保你的PHP、MySQL、Redis都已经安装完成。安装完成之后,按照下面的步骤依次操作(这里以宝塔作为示例)。

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

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

3、配置系统环境变量,复制.example.env文件为.env,根据下面的提示进行配置,其他没有说明的就不要修改。

shell
APP_DEBUG = true
APP_ENV=local
[APP]
DEFAULT_TIMEZONE = Asia/Shanghai
URL="https://你的域名/" # 你后端api地址,也就是本项目的域名,记得结尾需要用/表示,这里为你购买系统时的授权域名。
NAME="tutudati003" # 固定不变

[DATABASE]
TYPE = mysql
HOSTNAME = 127.0.0.1 # 数据库ip地址
DATABASE = test # 数据库名称
USERNAME = username # 数据库用户名
PASSWORD = password # 数据库密码
HOSTPORT = 3306 # 数据库端口号
CHARSET = utf8mb4 # 需要注意,避免部分数据有特殊符号无法插入数据。
DEBUG = true
PREFIX = la_ # 数据库前缀

[LANG]
default_lang = zh-cn

[PROJECT]
UNIQUE_IDENTIFICATION = 'ttdt' #固定不变

DEMO_ENV = false

[REDIS]
HOST="Redisip地址,直接写127.0.0.1"
DB=0
AUTH=
PORT="Redis端口号"

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

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

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

7、跨域问题设置,管理端和服务端采用前后端分离的模式,必然会涉及到跨域问题。需要在NGINX中添加如下配置:

shell
add_header Access-Control-Allow-Credentials true;
add_header Access-Control-Allow-Origin * always;
add_header Access-Control-Allow-Methods 'GET, POST, PUT, DELETE, OPTIONS';
add_header Access-Control-Allow-Headers 'DNT,X-Mx-ReqToken,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Authorization,Version,token,DeviceType,DeviceBrand,OsName,AppLanguage,AppVersion,AppName,AppApiVersion,AppApiDeviceType';
if ($request_method = 'OPTIONS') {
    return 204;
}

8、配置伪静态,需要在NGINX中配置如下:

shell
if (!-e $request_filename) {
   rewrite  ^(.*)$  /index.php?s=/$1  last;
   break;
}

如果你的环境不是NGINX,可以参考ThinkPHP5官方文档。https://www.kancloud.cn/manual/thinkphp5/177576

9、管理端默认账号和密码是admin,123456。

管理端部署

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

2、设置后端域名,在admin_client目录新建一个.env.production文件,写入如下内容。

shell
NODE_ENV = 'production'
# Base API
VITE_APP_BASE_URL='这里是你后端配置域名,如https://api.tutudati001.com/'

3、对源代码进行编译打包,在执行完下面的命令后,应该会有一个server_api/public/admin的目录生成,管理端部署就是对admin目录进行操作,在配置域名的时候就指向到server_api/public/admin目录下面。

shell
cd admin_client && npm run build

4、添加域名配置,和Api一样。添加域名的网站目录指向到admin目录,运行目录不需要选择。

5、添加完成之后设置一下伪静态,直接将如下内容贴到配置文件即可。

shell
location / {
	try_files $uri $uri/ /index.html;
}

小程序端部署

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

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

2、第二步找到Unitils下的request.js,替换后端api域名。

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
    },
}

4、第四步配置一下App.vue中api域名,和第2点中提到的域名为同一个域名。

shell
globalData: {
    httpApiBaseUrl: 'api域名',
},

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

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

默认账号

购买时会提供sql文件,sql文件中包含了平台管理员账号和初始化了一个商户端账号。

1、平台登录账号信息。

shell
登录账号:admin
默认密码:123456

2、商户端登录信息。

shell
登录账号:yuanshuati
默认密码:123456

如果登录时提示密码不正确,可以可以找到该文件server_api/app/adminapi/controller/LoginController.php,将下面这段代码给注释掉,登录成功之后再把注释给去掉,然后去设置账号密码,下次登录时就是你新设置的密码。

php
$passwordSalt = Config::get('project.unique_identification');
if ($adminInfo['password'] !== create_password($params["password"], $passwordSalt)) {
    $adminAccountSafeCache->record();
    return '密码错误';
}