优学宝知识付费系统部署安装手册
版本号:V2.0 · 更新日期:2026年2月22日
关于本手册
本手册详细介绍了优学宝知识付费系统的完整部署流程,从服务器环境配置到前后端各模块的安装。请按照章节顺序逐步操作,确保系统正确安装。
部署架构
系统采用前后端分离架构,包含以下4个核心模块,每个模块使用独立的域名:
| 模块 | 说明 | 域名变量 |
|---|---|---|
| 后端系统 | API接口服务,核心业务逻辑 | {backend_domain} |
| 总管理后台 | 平台管理员操作界面 | {admin_domain} |
| 商户管理后台 | 商户管理员操作界面 | {platform_domain} |
| 用户端网站 | 用户访问的前端网站 | {www_domain} |
{backend_domain}、{admin_domain}
等作为域名占位符,实际操作时请替换为您自己的真实域名。
第一部分:部署前准备
一、部署配置要求
1.1 部署环境
| 配置项 | 要求 | 说明 |
|---|---|---|
| 操作系统 | Linux(CentOS 7.x / Alibaba Cloud Linux) | 推荐使用阿里云系统 |
| Web服务器 | Nginx 1.28+ | 高性能Web服务器 |
| 数据库 | MySQL 8.0+ | 稳定可靠的数据库 |
| PHP版本 | PHP 8.2+ | 必须8.2及以上版本 |
| 必要扩展 | fileinfo、imagemagick等 | PHP常用扩展 |
| 其他依赖 | Composer、FFmpeg、LibreOffice | 用于视频处理和文档转换 |
| 配置建议 | 2核4GB以上 | 初级配置,更高配置性能更佳 |
1.2 Linux系统安装示例
安装系统版本:Alibaba Cloud Linux 3.2104 LTS 64位(以阿里云ECS为例)
在阿里云控制台选择系统镜像时,参考下图选择:
第二部分:基础环境搭建
二、基础环境安装(宝塔面板)
2.1 安装宝塔面板
- 访问宝塔面板官网:https://www.bt.cn/new/download.html
- 输入服务器IP、SSH账号、密码后点击「立即安装到服务器」
选择「仅安装面板」
等待安装完成
安装成功界面,务必保存面板地址、用户名、密码
2.2 安装LNMP环境
- 登录宝塔面板,选择「LNMP安装」(或到软件商店自行选择版本安装)
-
版本要求:
- Nginx 1.28+
- MySQL 8.0+
- PHP 8.2+
- 选择「编译安装」性能最好,服务器配置不足可选择「极速安装」
等待安装完成
2.3 PHP配置修改
- 在软件商店找到已安装的PHP,点击「设置」—「配置修改」
- 安装必要扩展(fileinfo、imagemagick等),安装完成后重载配置
- PHP配置参数根据运行环境自行调整,配置完成后重载服务
- 删除禁用函数:找到「禁用函数」列表,删除以下函数:
putenv exec system shell_exec popen proc_open
2.4 放行安全组端口
阿里云安全组放行:放行端口:3306(MySQL)、8000、8080
宝塔面板安全放行:放行端口:3306、8000、8080
第三部分:核心后端部署
三、后端系统部署
3.1 创建后端站点
-
点击「网站」进行添加网站,域名需要先备案才可访问。输入您的后端独立域名,例如:
backend.com
- 浏览器输入后端域名,出现如下界面说明创建成功
3.2 上传后端源码
- 点击网站根目录进入,并删除所有文件
- 在根目录上传从优学宝官网下载的网站后端源码,并进行解压
- 双击压缩文件进行解压
3.3 配置网站运行目录
- 解压后点击网站进行首页设置
- 设置网站目录 — 运行目录为「public」文件夹,保存
3.4 配置伪静态
伪静态配置,确保所有请求都被重定向到入口文件index.php,并且保留原始的查询字符串:
location / {
try_files $uri $uri/ /index.php?$query_string;
}
3.5 Nginx配置文件优化
如果遇到访问问题,可以在软件商店找到Nginx服务,点击「设置」—「配置修改」,在最后一行
include /www/server/panel/vhost/nginx/*.conf;
上方增加下面的配置内容,将 {backend_domain} 替换为您的后端域名:
server {
listen 80;
server_name {backend_domain}; # ← 修改为您的后端域名,如 backend.com
root /www/wwwroot/{backend_domain}/public; # ← 修改为您的后端域名路径
index index.php index.html index.htm;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
location ~ \.php$ {
fastcgi_pass unix:/tmp/php-cgi-82.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$ {
expires 30d;
}
location ~ .*\.(js|css)?$ {
expires 12h;
}
access_log /www/wwwlogs/{backend_domain}.log; # ← 修改为您的后端域名
error_log /www/wwwlogs/{backend_domain}.error.log; # ← 修改为您的后端域名
}
3.6 安装Composer依赖
从宝塔进入终端,配置环境依赖:
安装composer,依次执行以下命令:
# 1、进入完整根目录
cd /www/wwwroot/{backend_domain} # ← 修改为您的后端域名
# 2、执行安装composer
composer install
输入yes,按回车键,等待安装完成:
如果出现版本不兼容提示,说明composer版本不对:
使用以下方法升级composer(任选其一):
# 升级到最新版
composer self-update --stable
# 升级到 Composer 2+
composer self-update --2
# 升级到 Composer 2.2+
composer self-update --2.2
再次输入composer install,输入yes,按回车键,等待安装完成:
出现下面的界面即为安装完成:
3.7 设置生产环境依赖
这里以创建 www-data 作为用户名为例
# 1. 创建 www-data 用户(如果不存在)
useradd -m -s /bin/bash www-data
# 2. 将网站目录权限给 www-data
chown -R www-data:www-data /www/wwwroot/{backend_domain} # ← 修改为您的后端域名
# 3. 切换到 www-data 用户执行 composer
sudo -u www-data composer install --no-dev --optimize-autoloader --classmap-authoritative --no-interaction -d /www/wwwroot/{backend_domain} # ← 修改为您的后端域名
等待安装完成:
看到下面的界面即为安装完成:
四、PHP扩展及依赖软件安装
4.1 安装FFmpeg
通过宝塔面板的「终端」功能登录,执行以下操作:
第一步:终端操作
# 1. 切换到常用目录
cd /usr/local
# 2. 下载FFmpeg静态编译包
wget https://johnvansickle.com/ffmpeg/releases/ffmpeg-release-amd64-static.tar.xz
# 3. 解压下载的文件
tar -xvf ffmpeg-release-amd64-static.tar.xz
第二步:宝塔面板可视化操作
- 登录宝塔面板,点击左侧菜单「文件」
- 在地址栏输入
/usr/local,按回车 - 您会看到刚刚解压出来的文件夹(类似 ffmpeg-7.0.2-amd64-static)
- 双击进入解压出来的文件夹
-
找到两个文件:
ffmpeg和ffprobe(没有扩展名) - 点击上方工具栏的「剪切」按钮
- 在地址栏输入
/usr/bin,按回车 - 点击上方工具栏的「粘贴」按钮
-
在
/usr/bin目录下找到刚才粘贴的ffmpeg和ffprobe文件 -
分别右键点击每个文件,选择「权限」,设置为
755
第三步:验证安装
点击宝塔面板左侧的「终端」,执行以下命令验证:
ffmpeg -version
ffprobe -version
which ffmpeg
4.2 安装phpBolt扩展
通过宝塔面板的「终端」功能登录:
# 进入临时目录
cd /tmp
# 下载扩展包
wget https://phpbolt.com/wp-content/uploads/2024/03/phpBolt-extension-1.0.5.zip
# 解压文件(如果提示unzip不存在,先执行:yum install unzip -y)
unzip phpBolt-extension-1.0.5.zip
宝塔文件管理器复制文件:
- 打开宝塔文件管理器,在路径栏输入
/tmp并回车 -
依次进入:
phpBolt-extension-1.0.5→linux 64→linux 64-php8.2 -
找到
bolt.so文件,右键点击「复制」
-
在路径栏输入:
/www/server/php/82/lib/php/extensions/no-debug-non-zts-20220829/,按回车 - 在空白处右键点击,选择「粘贴」
- 设置文件权限为
755
配置PHP扩展:
在宝塔软件商店找到已安装的PHP版本,点击「设置」—「配置文件」,在底部增加:
extension=/www/server/php/82/lib/php/extensions/no-debug-non-zts-20220829/bolt.so
修改 php-cli.ini:
-
打开宝塔文件管理器,在路径栏输入:
/www/server/php/82/etc/,按回车 -
找到
php-cli.ini文件(如果没有,复制php.ini重命名) - 右键编辑,在底部添加相同的一行:
extension=/www/server/php/82/lib/php/extensions/no-debug-non-zts-20220829/bolt.so
4.3 安装LibreOffice
4.3.1 安装LibreOffice主程序
访问LibreOffice官网或者使用阿里云镜像查看版本号:
- LibreOffice官网:https://download.documentfoundation.org/libreoffice/stable
- 阿里云镜像:https://mirrors.aliyun.com/libreoffice/stable/
进入终端执行以下操作(以25.8.5版本为例):
# 1. 进入临时目录
cd /tmp
# 2. 使用阿里云VPC内网地址下载(速度快)
wget http://mirrors.cloud.aliyuncs.com/libreoffice/stable/25.8.5/rpm/x86_64/LibreOffice_25.8.5_Linux_x86-64_rpm.tar.gz
# 3. 解压安装包
tar -xzf LibreOffice_25.8.5_Linux_x86-64_rpm.tar.gz
# 4. 查看解压出的目录名
ls -d LibreOffice*
# 5. 进入RPMS目录(版本号按实际修改)
cd LibreOffice_25.8.5.2_Linux_x86-64_rpm/RPMS/
# 6. 安装所有RPM包
sudo rpm -Uvh *.rpm
等待安装完成,测试是否安装成功:
# 查找安装路径
ls -l /opt/libreoffice25.8/program/soffice
# 查看版本
/opt/libreoffice25.8/program/soffice --version
创建软链接:
# 创建软链接
sudo ln -s /opt/libreoffice25.8/program/soffice /usr/local/bin/soffice
# 测试命令
soffice --version
4.3.2 安装字体
一次性粘贴到您的 SSH 终端中执行
# 1. 安装字体工具
sudo yum install -y fontconfig mkfontscale
# 2. 创建字体目录
sudo mkdir -p /usr/share/fonts/custom
# 3. 进入你的字体存放目录
cd /www/wwwroot/{backend_domain}/storage/fonts/ # ← 修改为您的后端域名
# 4. 复制三个字体文件到系统字体目录
sudo cp gb2312.ttf msyh.ttf msyhbd.ttf /usr/share/fonts/custom/
# 5. 设置正确的权限
sudo chmod 644 /usr/share/fonts/custom/*.ttf
sudo chmod 755 /usr/share/fonts/custom
# 6. 进入字体目录并生成索引
cd /usr/share/fonts/custom
sudo mkfontscale
sudo mkfontdir
# 7. 刷新系统字体缓存
sudo fc-cache -fv
# 8. 验证字体是否安装成功
echo "=== 已安装的微软雅黑 ==="
fc-list | grep -i "yahei"
echo "=== 已安装的GB2312字体 ==="
fc-list | grep -i "gb2312\|song\|sim"
# 9. 创建字体映射配置
sudo tee /etc/fonts/local.conf << 'EOF'
<?xml version="1.0"?>
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
<fontconfig>
<match target="pattern">
<test qual="any" name="family">
<string>Microsoft YaHei</string>
</test>
<edit name="family" mode="assign" binding="strong">
<string>Microsoft YaHei</string>
</edit>
</match>
<dir>/usr/share/fonts/custom</dir>
</fontconfig>
EOF
# 10. 再次刷新缓存
sudo fc-cache -fv
# 11. 验证
echo "=== 字体映射测试 ==="
fc-match "Microsoft YaHei"
4.4 安装阿里云短信SDK
安装 tea-util 包
# 进入项目目录
cd /www/wwwroot/{backend_domain} # ← 修改为您的后端域名
# 安装 tea-util
composer require alibabacloud/tea-utils --optimize-autoloader
输入yes,按回车键,等待安装完成:
测试类是否存在:
php -r "require 'vendor/autoload.php'; var_dump(class_exists('AlibabaCloud\Tea\Utils\Utils\RuntimeOptions'));"
✅ 环境配置到此结束!
五、后端系统安装向导
5.1 设置目录权限
找到网站根目录,将以下文件夹权限改为777:
storage.envvendorbootstrap/cache
5.2 创建数据库
在宝塔面板点击「数据库」—「添加数据库」,设置数据库名、用户名、密码,点击确定:
5.3 执行安装向导
访问您的后端域名(如
http://{backend_domain}),出现下面的界面即为配置成功:
点击「开始安装」,会检查环境设置:
- 如果缺少扩展或配置问题,请到软件商店找到PHP安装扩展
- 如果文件目录权限问题,请设置目录权限
数据库配置:输入数据库名、用户名、密码,测试连接成功以后,点击下一步:
设置管理员账号:注意账号和密码输入要求:
检查依赖:如果缺少依赖,请安装后重新执行检查:
完成安装(最重要一步):点击最下方「完成安装」:
安装完成,跳转到网站后端默认首页:
5.4 创建Storage软链接
进入终端执行以下命令设置正确的软链接
# 1. 进入网站根目录
cd /www/wwwroot/{backend_domain} # ← 修改为您的后端域名
# 2. 查看当前public目录下是否有storage
ls -la public/ | grep storage
# 3. 如果有旧的storage,先删除
rm -rf public/storage
# 4. 创建正确的软链接
ln -s /www/wwwroot/{backend_domain}/storage/app/public /www/wwwroot/{backend_domain}/public/storage # ← 修改为您的后端域名
# 5. 验证链接是否创建成功
ls -la public/ | grep storage
出现下面界面,说明配置成功:
5.5 配置SSL证书(后端)
网站站点设置中的SSL进行设置,可以选择免费SSL或商业SSL。后端需要手动DNS验证:
在阿里云域名解析增加新的DNS记录,添加完成后回到宝塔面板进行验证:
验证成功,开启「强制HTTPS」:
5.6 设置定时清理任务(可选)
为了定期清理用户下载生成的临时打包文件,释放服务器磁盘空间,建议设置一个定时任务每天自动清理超过24小时的
exports 目录文件。
/storage/app/public/exports/
目录下。随着时间的推移,这些文件会占用大量磁盘空间,建议设置定时清理超过24小时的文件。
5.6.1 在宝塔面板添加定时任务
- 登录宝塔面板,点击左侧菜单「计划任务」
- 点击「添加任务」按钮,按照以下配置填写:
| 配置项 | 填写内容 |
|---|---|
| 任务类型 | 选择「Shell脚本」 |
| 任务名称 | 输入「定时清理超过24小时的打包文件」(可自定义) |
| 执行周期 | 选择「每天」,时间设置为「00:00」 |
| 脚本内容 |
输入以下脚本(请将 {backend_domain} 替换为您的后端域名):
|
# 删除超过24小时的打包文件
EXPORTS_DIR="/www/wwwroot/{backend_domain}/storage/app/public/exports" # ← 修改为您的后端域名
LOG_FILE="/www/wwwroot/{backend_domain}/storage/logs/clean_exports.log" # ← 修改为您的后端域名
# 创建日志目录(如果不存在)
mkdir -p /www/wwwroot/{backend_domain}/storage/logs # ← 修改为您的后端域名
echo "$(date '+%Y-%m-%d %H:%M:%S') - 开始清理超过24小时的文件" >> $LOG_FILE
if [ -d "$EXPORTS_DIR" ]; then
# 统计并删除超过24小时的文件
old_files=$(find "$EXPORTS_DIR" -type f -name "*.zip" -mtime +1)
count=$(echo "$old_files" | wc -l)
if [ $count -gt 0 ]; then
# 计算总大小
total_size=$(find "$EXPORTS_DIR" -type f -name "*.zip" -mtime +1 -print0 | du -ch --files0-from=- | tail -1 | cut -f1)
echo "清理前: $count 个文件, 总大小: $total_size" >> $LOG_FILE
# 执行清理
find "$EXPORTS_DIR" -type f -name "*.zip" -mtime +1 -delete
echo "已删除 $count 个超过24小时的文件" >> $LOG_FILE
else
echo "没有超过24小时的文件需要清理" >> $LOG_FILE
fi
else
echo "目录 $EXPORTS_DIR 不存在" >> $LOG_FILE
fi
echo "$(date '+%Y-%m-%d %H:%M:%S') - 清理完成" >> $LOG_FILE
echo "----------------------------------------" >> $LOG_FILE
- 点击「添加任务」 完成设置
5.6.2 验证定时任务
设置完成后,可以手动执行一次测试:
- 在宝塔面板的「计划任务」列表中找到刚创建的任务
- 点击右侧的「执行」按钮
- 点击「执行日志」查看执行结果,确认任务运行正常
5.6.3 查看清理日志
如果需要查看历史清理记录,可以通过宝塔面板的文件管理器查看日志文件:
- 点击左侧菜单「文件」
-
进入目录:
/www/wwwroot/{backend_domain}/storage/logs/ -
找到
clean_exports.log文件,右键点击「查看」即可查看清理记录
这样就完成了!每天0点会自动清理超过24小时的打包文件。
第四部分:前端模块部署
六、总管理后台部署
6.1 创建站点
网站中新增总管理后台网站域名,输入您的总管理后台独立域名,例如:admin.com,点击确定:
访问域名出现下面界面,表示创建成功:
6.2 上传源码
进入网站根目录,删除所有文件:
在根目录上传优学宝总管理后台代码并进行解压:
6.3 修改API接口地址
修改config.js内的api地址配置,指向您的后端独立域名(如
https://backend.com):
6.4 配置运行目录
设置网站目录 — 运行目录为「根目录」,保存:
6.5 配置伪静态
确保所有请求都被重定向到入口文件index.html,并且保留原始的查询字符串:
location / {
try_files $uri $uri/ /index.html?$query_string;
}
6.6 配置SSL证书
在网站设置中申请SSL,前端选择「文件验证」即可:
七、商户管理后台部署
7.1 创建站点
网站中新增商户管理后台网站域名,输入您的商户管理后台独立域名,例如:merchant.com,点击确定:
访问域名出现下面界面,表示创建成功:
7.2 上传源码
进入网站根目录,删除所有文件:
在根目录上传优学宝商户管理后台代码并进行解压:
7.3 修改API接口地址
修改config.js内的api地址配置,指向您的后端独立域名(如
https://backend.com):
7.4 配置运行目录
设置网站目录 — 运行目录为「根目录」,保存:
7.5 配置伪静态
确保所有请求都被重定向到入口文件index.html,并且保留原始的查询字符串:
location / {
try_files $uri $uri/ /index.html?$query_string;
}
7.6 配置SSL证书
在网站设置中申请SSL,前端选择「文件验证」即可:
八、用户端网站部署
8.1 创建站点
网站中新增用户端网站域名,输入您的用户端独立域名,例如:www.com,点击确定:
访问域名出现下面界面,表示创建成功:
8.2 上传源码
进入网站根目录,删除所有文件:
在根目录上传优学宝用户端代码并进行解压:
8.3 修改API接口地址
修改config.js内的api地址配置,指向您的后端独立域名(如
https://backend.com):
8.4 配置运行目录
设置网站目录 — 运行目录为「根目录」,保存:
8.5 配置伪静态
确保所有请求都被重定向到入口文件index.html,并且保留原始的查询字符串:
location / {
try_files $uri $uri/ /index.html?$query_string;
}
8.6 配置SSL证书
在网站设置中申请SSL,前端选择「文件验证」即可:
第五部分:完成与维护
九、部署完成
9.1 访问地址
恭喜!您已完成优学宝知识付费系统的全部部署!
| 模块 | 访问地址 | 示例 |
|---|---|---|
| 后端系统 | https://{backend_domain} |
https://backend.com |
| 总管理后台 | https://{admin_domain} |
https://admin.com |
| 商户管理后台 | https://{merchant_domain} |
https://merchant.com |
| 用户端网站 | https://{www_domain} |
https://www.com |
9.2 下一步
现在可以登录总管理后台进行系统初始化设置了:
- 登录总管理后台(使用安装时设置的管理员账号)
- 进入「系统设置」配置网站基本信息
- 进入「存储设置」配置OSS(推荐)
- 创建第一个商户
- 登录商户后台开始上传课程
附录
常见问题排查
Q1:Composer安装失败怎么办?
解决方案:
- 检查PHP版本是否为8.2+
- 检查是否已删除禁用函数(putenv、exec等)
- 尝试升级Composer版本:
composer self-update
Q2:FFmpeg安装后无法使用?
解决方案:
- 检查文件权限是否为755
- 检查软链接是否创建成功:
which ffmpeg - 重启PHP服务
Q3:安装向导页面无法访问?
解决方案:
- 检查Nginx配置是否正确
- 检查网站运行目录是否设置为
public - 检查目录权限是否为777
Q4:图片上传失败?
解决方案:
- 检查storage目录权限是否为777
- 检查Storage软链接是否正确创建
- 检查磁盘空间是否充足
域名配置示例
为了方便理解,以下是一个完整的域名配置示例:
二级域名示例:
| 模块 | 示例域名 | 说明 |
|---|---|---|
| 后端系统 | https://api.youxuebao.com |
使用二级域名 |
| 总管理后台 | https://admin.youxuebao.com |
使用二级域名 |
| 商户管理后台 | https://merchant.youxuebao.com |
使用二级域名 |
| 用户端网站 | https://www.youxuebao.com |
使用主域名 |
独立顶级域名示例:
| 模块 | 示例域名 | 说明 |
|---|---|---|
| 后端系统 | https://youxuebao-api.com |
独立顶级域名 |
| 总管理后台 | https://youxuebao-admin.com |
独立顶级域名 |
| 商户管理后台 | https://youxuebao-merchant.com |
独立顶级域名 |
| 用户端网站 | https://youxuebao.com |
独立顶级域名 |
版本更新记录
| 版本号 | 更新日期 | 更新内容 |
|---|---|---|
| V2.0 | 2026-02-22 | 全面改版,优化部署流程,增加常见问题排查,适配多端独立域名部署 |