# 白小泽 DNS 域名分发系统 · 宝塔面板安装教程
适用版本:v1.9.110(构建号 1.9.110)
技术栈:PHP 8 + Vue3 + MySQL,零 Composer 依赖,Vue 已本地化
> 全程在宝塔面板操作,不需要敲命令。唯一需要粘贴命令的地方是「计划任务」,已给出可直接复制的整行。
—
## 一、准备环境
### 面板与组件要求
| 组件 | 要求 | 说明 |
|—|—|—|
| 宝塔面板 | 7.9 及以上 | 免费版即可 |
| PHP | **8.0+(推荐 8.1)** | 不支持 7.x |
| MySQL | 5.7+ / 8.0 | 建议 5.7,兼容性最好 |
| Nginx | 1.20+ | Apache 亦可,本文以 Nginx 为例 |
| 磁盘 | ≥ 500MB | 主要是日志与上传目录 |
### 必需 PHP 扩展(缺一个都装不上)
“`
pdo_mysql mbstring curl openssl json fileinfo
“`
宝塔操作:软件商店 → 已安装 → PHP-8.1 → 安装扩展,逐项确认已装。
装完点「服务」→「重启」。
### 需要放开的 PHP 函数
`putenv`、`proc_open` 不需要;但 **`scandir`、`shell_exec` 不要禁用**(安装向导与更新检测会用到)。
若之前禁用了,在 PHP 设置 → 禁用函数里删掉。
—
## 二、创建站点与数据库
### 1. 创建数据库
宝塔 → 数据库 → 添加数据库:
– 数据库名:如 `bxz_dns`
– 用户名:如 `bxz_dns`
– 密码:**用面板生成的强密码**,记下来
– 字符集:`utf8mb4`
### 2. 创建网站
宝塔 → 网站 → 添加站点:
– 域名:你的域名(如 `dns.example.com`)
– 根目录:`/www/wwwroot/dns.example.com`
– 数据库:**暂不选**,下一步手动填(避免自动创建同名库带来的权限混乱)
– PHP 版本:PHP-8.1
– 其他保持默认
### 3. 记录信息
把这三样抄下来,安装向导要用:数据库名、数据库用户名、数据库密码。
—
## 三、上传源码
1. 把 `bxz-dns-update.zip`(或完整源码包)上传到 `/www/wwwroot/dns.example.com/`
– 宝塔 → 文件 → 上传,或用「远程下载」
2. 右键压缩包 → **解压**,选择解压到当前目录
3. 解压后应看到这些目录:
“`
/www/wwwroot/dns.example.com/
├── app/ 后端(PHP)
├── public/ 站点根目录(必须指向这里)
├── database/ install.sql / seed.sql / update.sql
├── runtime/ 缓存与日志(需可写)
└── 更新说明.md / 更新日志.md 等文档
“`
如果解压出来多了一层目录(如 `dns.example.com/bxz-dns-update/app/`),
把里面的内容**全部剪切**到站点根目录,保证 `app/` 与 `public/` 是根目录下的第一层。
—
## 四、设置网站根目录(关键)
这一步做错,首页只会显示目录列表或 403。
宝塔 → 网站 → 点你的站点 → 设置:
### 1. 网站目录
– 运行目录:改为 **`/public`**
– 勾选「防跨站攻击(open_basedir)」**不要勾**(否则 `app/` 读不到)
### 2. 伪静态
在「伪静态」里粘贴:
“`nginx
location / {
try_files $uri $uri/ /index.php?$query_string;
}
“`
### 3. 配置文件(拒绝访问敏感目录)
在「配置文件」的 `server` 块里加入(放在 `location /` 之前):
“`nginx
# 禁止访问敏感目录:app 是后端代码,runtime 是缓存日志,database 是 SQL 文件
location ~ ^/(app|runtime|database)/ { deny all; }
# 后台路径是 /bxzadmin/。若站点上残留旧的 /admin/ 目录,务必屏蔽
location ^~ /admin/ { return 404; }
# 禁止直接下载配置文件与 SQL
location ~* /(config\.php|install\.sql|seed\.sql)$ { deny all; }
# 自定义 404
error_page 404 = /404.html;
“`
完整的 `server` 块可参考包内 `nginx.conf.example`。
> **安全建议**:后台可再加一层 IP 白名单,把 `1.2.3.4` 换成你的出口 IP:
> “`nginx
> location ^~ /bxzadmin/ { allow 1.2.3.4; deny all; }
> “`
—
## 五、设置运行目录与权限
宝塔 → 文件 → 进入站点根目录,对下面两个目录设置权限:
| 目录 | 权限 | 所有者 |
|—|—|—|
| `runtime/` | 755(不行就 777) | www |
| `public/uploads/` | 755(不行就 777) | www |
操作:右键目录 → 权限 → 所有者改 `www`,权限 `755`,勾选「应用到子目录」。
**`runtime/` 不可写会直接导致网站打不开**(缓存与日志都写不进去)。
—
## 六、运行安装向导
浏览器访问:`http://你的域名/install.php`
### 三步流程
**第 1 步 · 环境检测**
– 检查 PHP 版本、扩展、目录可写
– 全部绿色才能「下一步」
– 有红色项就回到第一节补扩展、改权限
**第 2 步 · 数据库**
– 数据库主机:`127.0.0.1`(不是 localhost,避免走 socket)
– 数据库名 / 用户名 / 密码:填第二节记录的
– 表前缀:默认即可,留空或 `bxz_`
– 会自动建表并导入初始数据(会员等级、默认套餐、公告等)
**第 3 步 · 管理员**
– 设置后台管理员账号与密码
– 邮箱务必填真实邮箱(找回密码要用)
### ⚠️ 装完必须删除 install.php
“`
删除 /www/wwwroot/你的域名/public/install.php
“`
**不删的后果**:任何人访问 `/install.php` 都能重装你的系统,等于把数据库清空重来。
删除后再访问 `/install.php`,应显示 404。
—
## 七、后台初始化配置
后台地址:`http://你的域名/bxzadmin/`
### 1. 站点设置
站点设置 → 基础:站点名称、Logo、主题色(默认 `#006AF3`)、备案号、客服联系方式。
### 2. 邮件配置(验证码、通知都靠它)
站点设置 → 邮件。三种常见配置:
| 邮箱 | SMTP 服务器 | 端口 | 加密 |
|—|—|—|—|
| QQ 邮箱 | `smtp.qq.com` | 465 | SSL |
| 163 邮箱 | `smtp.163.com` | 465 | SSL |
| 腾讯企业邮 | `smtp.exmail.qq.com` | 465 | SSL |
– 发件人账号:完整邮箱地址
– 密码:**不是登录密码,是 SMTP 授权码**
– QQ 邮箱:设置 → 账户 → 开启 SMTP 服务 → 生成授权码
– 163 邮箱:设置 → POP3/SMTP → 开启 → 设置授权码
– 填完点「发送测试邮件」,收到才算配好
### 3. DNS 厂商
DNS厂商 → 新增厂商。内置预设:本系统DNS、腾讯云、阿里云、Cloudflare、DNSPod、华为云、自定义。
– 填 API 地址、API 密钥、Secret
– 点「测试连接」验证密钥是否有效
– **支持暂停 / 支持 NS**:按厂商实际能力勾选
> 已实现真实下发的是腾讯云 DNSPod、阿里云、Cloudflare 三家;
> 其余厂商走通用 REST 约定,保存后同步状态会显示「未生效」并给出原因——这是诚实的失败,不是假装成功。
### 4. 聚合登录
站点设置 → 聚合登录:配置 QQ / 微信 / GitHub 等第三方登录的 AppID 与 AppKey。
### 5. 套餐与会员等级
– 套餐管理:月卡 / 年卡 / 定制三档,设置折扣力度、有效期、适用后缀、是否可叠加
– 会员等级:按成长值 `min_growth` 自动匹配,支付后 `addGrowth()` 累加、`syncLevel()` 升级
### 6. 支付通道
支付 → 支付通道:余额(无条件可用)、支付宝、微信、USDT 等,按需启用并填商户参数。
### 7. 风控中心
风控 → 敏感词:添加需要拦截的词,命中会写风险日志。
—
## 八、配置计划任务
宝塔 → 计划任务 → 添加任务。
任务类型选「访问 URL」,URL 填下面任一条(`令牌` 换成后台「系统信息」里显示的 `cron_token`):
| 任务 | URL | 建议频率 |
|—|—|—|
| 到期清理 | `http://你的域名/cron.php?token=令牌&task=expire` | 每天 1 次(建议凌晨 3 点) |
| USDT 扫描 | `http://你的域名/cron.php?token=令牌&task=usdt` | 每 5 分钟 |
| 全量任务 | `http://你的域名/cron.php?token=令牌&task=all` | 每 10 分钟 |
也可以用 Shell 类型:
“`bash
php /www/wwwroot/你的域名/public/cron.php token=令牌 task=expire
“`
**令牌不对会返回 401**,不会执行任何任务。
> 没挂定时任务也没关系:后台「域名管理」页有「清理到期解析」手动按钮兜底。
—
## 九、配置 SSL
宝塔 → 网站 → 设置 → SSL:
1. 选「Let’s Encrypt」→ 点申请,勾选你的域名
2. 申请成功后打开「强制 HTTPS」
3. 若用 Cloudflare CDN,SSL 选「Cloudflare 灵活」或直接关掉强制跳转,避免重定向循环
配好后把第八节的计划任务 URL 改成 `https://` 开头。
—
## 十、覆盖升级步骤
“`
1. 备份原项目(文件 + 数据库)
文件:宝塔 → 网站 → 备份;数据库:宝塔 → 数据库 → 备份
2. 上传并解压更新包到站点根目录
3. 整个覆盖 app/、public/、database/ 三个目录
⚠️ 不要只挑文件覆盖,漏掉 public/api.php 会导致所有接口报「未知接口:xxx/yyy」
4. 不要覆盖 app/config.php(里面是你的数据库配置,覆盖了就连不上库)
5. 执行 database/update.sql
宝塔 → 数据库 → phpMyAdmin → 导入;或直接重跑一次 install.php 补表补列
6. 重启 PHP-FPM(清 opcache,否则字节码仍是旧的)
宝塔 → 软件商店 → PHP-8.1 → 服务 → 重启
7. 浏览器 Ctrl+F5 强刷(清掉旧的 JS / CSS 缓存)
8. 后台「系统信息」确认构建号已更新为 1.9.101
“`
—
## 十一、常见问题
### 访问首页跳 install.php
系统判定为「未安装」。检查 `app/config.php` 是否存在且数据库配置正确。
若已装好却仍跳转,确认 `runtime/` 可写——配置文件写入失败会导致安装标记丢失。
### 数据库连接失败
– 主机填 `127.0.0.1`,不要填 `localhost`(后者走 socket,路径不对就连不上)
– 确认 `app/config.php` 里的库名、用户名、密码与宝塔数据库页一致
– 确认数据库用户对该库有完整权限
### 邮件发送失败
– 密码填的是 **SMTP 授权码**,不是邮箱登录密码
– 端口 465 + SSL,不要用 25(多数服务器已封禁)
– 后台有「邮件队列」页,可看失败原因与原始报错
### 前台切换英文后刷新又变中文
语言存的是 localStorage,且需要接口 `front/lang` 成功返回。
清缓存或换浏览器会回到默认语言,这是预期行为。
### 右键和 F12 没反应(防调试)
站点开启了防调试。要临时关闭:站点设置 → 安全 → 关闭「禁止右键 / 禁止 F12」。
排查完记得开回来。
### 手机端访问
前台已做响应式,表格在窄屏下转为卡片。后台建议用电脑访问。
### 后台白屏
**九成是 opcache**。覆盖 PHP 文件后必须重启 PHP-FPM。
若重启仍白屏,检查 `runtime/log/` 下当天的错误日志。
### 接口 500
别只看界面上那句「服务器开小差了」。
F12 → 网络 → 点那条 `api.php` → 看 **Response 原文**,里面是 PHP 的真实报错。
### 覆盖文件后仍跑旧代码
同样是 opcache。重启 PHP-FPM 后再 Ctrl+F5。
如果还不行,检查是不是改错了站点目录(服务器上可能有多份)。
### 表格按钮挤成一团 / 竖排
Ctrl+F5 强刷。本次改了 CSS,旧样式缓存会让修复看起来没生效。
—
## 十二、备份与恢复
### 数据库备份
宝塔 → 数据库 → 点你的库 → 备份 → 立即备份。
建议设置自动备份:每天 1 次,保留 7 份。
### 文件备份
宝塔 → 网站 → 备份 → 立即备份(或设置计划备份)。
重点保住三个目录:
“`
app/config.php 数据库配置(升级时绝不能被覆盖)
public/uploads/ 用户上传的头像、工单截图
runtime/ 缓存与日志(可丢)
“`
### 恢复步骤
“`
1. 宝塔 → 数据库 → 点库 → 恢复,选备份文件
2. 宝塔 → 网站 → 备份 → 恢复,选文件备份
3. 确认 app/config.php 仍是你的那份(若被覆盖,手动改回)
4. 重启 PHP-FPM
5. Ctrl+F5 强刷,登录后确认数据正常
“`
**升级前必做备份**。回滚的代价远小于备份的代价。
点点赞赏,手留余香
共0 人



























暂无评论内容