# 更新指南

本文用于宝塔面板或手动部署场景下的程序更新。更新前请先完整备份，避免覆盖用户原有数据库配置和上传资源。

## 更新前必须备份

1. 备份网站目录。
2. 备份数据库。
3. 记录当前 PHP 版本、网站运行目录、伪静态、SSL 和计划任务配置。

宝塔面板建议操作：

- 网站目录：先压缩整个站点目录保存一份。
- 数据库：进入“数据库”页面导出 SQL 备份。

## 覆盖更新时必须保留

以下文件或目录不要从新版压缩包覆盖掉：

- `config.php`：数据库连接配置。
- `install/install.lock`：安装锁文件，防止误触发重新安装。
- 上传图片、附件、二维码、商品图片等运行期资源目录。
- 服务器本地的 SSL 证书、伪静态、计划任务和宝塔站点配置。
- 用户自行二开的模板或文件，除非已经确认要用新版替换。

当前仓库已经忽略 `install/install.lock`，新版安装包不会自带安装锁；但已经安装好的线上站点应该保留服务器本地生成的锁文件。

## 推荐更新流程

1. 下载 GitHub 最新包，或使用 Git 拉取最新代码。
2. 在本地或临时目录解压新版程序。
3. 删除新版包里的 `config.php`，避免覆盖线上数据库配置。
4. 将新版程序文件覆盖到网站目录。
5. 确认线上 `install/install.lock` 仍存在。
6. 如果更新日志写明有数据库升级，按对应 SQL 或后台升级步骤执行。
7. 清理缓存后访问首页、后台、下单、支付、订单查询等关键页面。

## 数据库升级注意事项

不是每次覆盖文件都需要升级数据库。以后每次更新会在以下位置说明是否涉及数据库变更：

- `CHANGELOG.md`
- 后台“更新日志”页面

如果更新说明包含 SQL 变更，请先备份数据库，再执行升级 SQL。不要在未备份数据库的情况下直接导入结构变更。

## 不要这样更新

- 不要删除整个网站目录后重新上传，除非已经确认备份了 `config.php`、上传资源和数据库。
- 不要重新运行安装向导来更新老站。
- 不要覆盖线上 `config.php`。
- 不要把测试站数据库导入正式站。
- 不要在未看更新日志的情况下执行数据库 SQL。

## 更新后检查

- 首页是否 HTTP 200。
- 后台是否能登录。
- 商品列表、下单、支付、订单查询是否正常。
- 后台“系统设置”是否保留原站点信息。
- SSL、伪静态和运行目录是否保持不变。
- PHP 错误日志是否有新报错。

遇到异常时，先停止继续覆盖，使用备份的网站目录和数据库回滚，再根据错误日志定位问题。
