本文适用于无法通过后台「系统更新中心」完成在线升级,需要使用官方离线更新包手工升级 DBErp 的场景。
升级前请务必完整备份当前站点程序和数据库,并确认备份可用。
一、解压更新包
将官方离线更新包解压到临时目录。
不要直接解压到正在运行的 DBErp 网站目录。
后续再将更新包中的程序文件覆盖到当前站点。
二、进入维护模式
在 DBErp 网站根目录执行:
php artisan down三、覆盖程序文件
将更新包中的 DBErp 宿主程序文件覆盖到网站根目录。
通常包括:
app/
bootstrap/
config/
database/migrations/
lang/
public/
resources/
routes/以及更新包中存在的根目录程序文件,例如:
artisan
composer.json
composer.lock以下内容不要覆盖或删除
.env
storage/
public/storage
plugins/其中:
.env保留当前站点配置;storage/保留运行数据、日志及相关文件;public/storage保持现有状态;plugins/为当前已安装插件,不应通过宿主更新包整体覆盖。
四、处理 vendor
如果更新包中包含:
vendor.bundle.zip则先备份当前:
vendor/然后将 vendor.bundle.zip 解压得到的新 vendor/ 整体替换当前站点的 vendor/。
确认最终存在:
vendor/autoload.php如果更新包中没有 vendor.bundle.zip,则保留当前 vendor/。
普通离线升级过程中不要自行执行:
composer update也不要自行重新安装依赖。
五、删除废弃文件
如果当前版本升级说明中明确列出了需要删除的旧文件,则按清单删除。
如果没有废弃文件清单,直接跳过。
不要自行扩大删除范围。
六、执行数据库升级
在网站根目录执行:
php artisan migrate --force --no-interaction迁移成功后执行:
php artisan optimize:clear如果数据库迁移失败,不要继续修改版本号,也不要恢复网站访问。
应先排查错误;如果无法解决,使用升级前的程序和数据库备份完整回退。
七、更新版本号
确认数据库升级成功后,打开本次离线更新包中的:
manifest.json找到:
"to_version": "3.0.3",
"to_update_version": 300030然后修改网站根目录 .env 中对应的版本信息:
DBERP_DISPLAY_VERSION="3.0.3"
DBERP_UPDATE_VERSION=300030对应关系为:
to_version → DBERP_DISPLAY_VERSION
to_update_version → DBERP_UPDATE_VERSION请直接使用本次离线更新包 manifest.json 中的值,不要自行推算或修改版本号。
除这两项外,不要修改 .env 中其他配置。
修改完成后再次执行:
php artisan optimize:clear八、恢复网站
执行:
php artisan up九、检查升级结果
升级完成后,建议确认以下内容:
系统信息中的版本号已经更新;
后台可以正常登录;
商品、库存、采购、销售、结算等主要功能可以正常打开;
已安装插件仍然存在并可以正常使用;
原有附件和上传文件正常;
系统日志中没有持续出现新的异常。
确认运行正常后,再清理本次升级产生的临时文件和 vendor 备份。
十、升级失败回退
如果升级失败:
保持网站维护状态;
恢复升级前的完整站点程序;
恢复升级前的数据库备份;
执行:
php artisan optimize:clear
php artisan up程序和数据库应恢复到同一个升级前状态。
注意事项
离线升级时请特别注意:
升级前必须备份站点和数据库;
不要直接把更新包解压到生产网站目录;
不要覆盖
.env;不要删除
storage/;不要覆盖
public/storage;不要整体覆盖
plugins/;不要执行
composer update;不要执行
migrate:fresh、migrate:refresh、db:wipe等清库命令;有
vendor.bundle.zip时整份替换vendor/;数据库迁移成功后再更新 DBErp 版本号;
版本号以离线更新包中的
manifest.json为准;升级失败时程序和数据库一起回退。
标准升级流程
备份站点和数据库
→ 解压更新包
→ 进入维护模式
→ 覆盖宿主程序
→ 处理 vendor
→ 删除废弃文件
→ 执行数据库迁移
→ 清理缓存
→ 根据 manifest.json 更新版本号
→ 恢复网站
→ 检查升级结果