Document Win7 server update procedure

This commit is contained in:
reddaniel110
2026-10-14 11:40:38 +08:00
parent 4aaa6c6a14
commit 630c759455
3 changed files with 55 additions and 0 deletions
+2
View File
@@ -39,6 +39,8 @@ cd ..
Windows 7 SP1 服务器使用单独的 [Win7 离线打包说明](packaging/win7/README_WIN7.md)。离线打包包包含 Python 3.8.10 官方安装程序、32/64 位离线依赖、两步构建脚本和自检;请在目标服务器生成 EXE。Win7 环境不要执行上面的 Python 3.11 打包命令。 Windows 7 SP1 服务器使用单独的 [Win7 离线打包说明](packaging/win7/README_WIN7.md)。离线打包包包含 Python 3.8.10 官方安装程序、32/64 位离线依赖、两步构建脚本和自检;请在目标服务器生成 EXE。Win7 环境不要执行上面的 Python 3.11 打包命令。
已有 Win7 服务器更新正式版本时,请按 [服务器版本更新操作手册](packaging/win7/服务器版本更新操作手册.md) 操作;[PDF 打印版](output/pdf/Win7服务器版本更新操作手册_20261014.pdf)可下载到服务器边看边做。
## 主要能力 ## 主要能力
- 采购单和委外单,供应商/物料库、中文 XLS/XLSX 导入。 - 采购单和委外单,供应商/物料库、中文 XLS/XLSX 导入。
@@ -0,0 +1,53 @@
# 采购订单系统:Win7 服务器版本更新操作手册
适用版本:2026-10-14 工单更新包(源码提交 `4aaa6c6`)
适用场景:一台 Windows 7 SP1 电脑运行 `PO_Server_Win7.exe`,员工在公司局域网内用电脑或手机访问。
操作原则:**先在独立目录打包并完成自检,再停旧服务、备份数据、替换 EXE。** 整个公司只运行一个正式服务实例。
## 开始前:确认这三件事
1. 确认正在运行的 EXE 所在目录,记为“正式服务目录”,例如 `D:\PO_Server`。记录员工实际访问的内网地址和端口、当前 EXE 文件名、是否通过快捷方式或开机任务启动。
2. 确认数据目录。未设置 `PO_DATA_DIR` 时,数据在正式 EXE 同目录的 `instance`、`uploads`、`exports`;若设置过 `PO_DATA_DIR`,数据在该变量指定的目录。最重要的数据库是 `instance\po.db`。**不要把新包中不存在的空数据目录当成旧数据。**
3. 安排维护时间,通知正在制单、审批的同事先保存并退出。更新期间所有电脑和手机都暂时无法访问系统。
> 本次工单更新不改数据库表结构,也不重新生成历史已审批 PDF。若从更早版本跨级升级,程序启动时仍可能执行旧版本所需的数据库迁移;因此备份步骤不能省略。
## 一、在服务器上生成新 EXE(旧服务保持运行)
1. 把 `PO_Win7_SourceBuild_v4_20261014_issue1.zip` 复制到服务器,完整解压到一个**新目录**,例如 `C:\PO_Win7Build_20261014`。不要覆盖以前的打包目录,也不要解压到正式服务目录。压缩包的 SHA-256 为:
`77e199eb20a80313845d1729d867a98f73ca7c21172ab0a83357ddea260565dc`
2. 如果上一个包已成功使用 Python 3.8.10,保留上一个包所在目录。新包会尝试复用可用的 Python。必要时在新包根目录新建 `python_path.txt`,只填旧 `python.exe` 的完整路径,例如 `C:\旧打包目录\.python38\python.exe`。
3. 在新包根目录双击 `01_install_env.cmd`,等待出现 `SETUP COMPLETE`。失败时查看 `logs\setup-时间.log`,不要继续替换正式程序。系统若要求重启,先重启后再运行。
4. 双击 `02_build_exe.cmd`,等待出现 `BUILD COMPLETE`。新程序位于新包的 `dist\日期-位数\PO_Server_Win7.exe`;同目录 `BUILD_INFO.json` 记录打包机器、源码提交和 EXE 哈希。出现 `BUILD FAILED` 时保持旧服务运行,查看 `build\日期-位数\build.log`。
打包脚本在隔离的临时目录自检,不使用正式订单数据库。生成 EXE 后才进入停机窗口。
## 二、停机、备份、替换
1. 在服务器上关闭旧 EXE 的命令窗口或按原有服务管理方式停止,确认原内网地址暂时无法打开。**不要让新旧 EXE 同时访问同一个 `po.db`。**
2. 在另一块硬盘或另一台受信任电脑上建立带日期时间的备份文件夹,例如备份介质上的 `PO_Backup\20261014-1430`。把**正式服务目录完整复制**进去,至少包含旧 EXE、`instance`、`uploads`、`exports`。若使用 `PO_DATA_DIR`,还要把该变量指向的**整个数据目录**单独复制进去。备份后确认备份目录内能找到 `instance\po.db`,并保留旧 EXE 与备份配套。
3. 如果服务器另有完整项目源码及 Python,可再运行 `python tools\backup_db.py --data-dir "实际数据目录"` 做一次 SQLite 一致性备份。离线打包包不包含该工具;停机后的完整目录副本是必需的回退备份,必须放在服务目录之外。
4. 把新建的 `PO_Server_Win7.exe` 复制到**原正式服务目录**。先把旧 EXE 改名为 `PO_Server_Win7_old_日期.exe`,再把新 EXE 命名为原来启动方式指向的文件名。**只替换 EXE,不替换、不删除 `instance`、`uploads`、`exports`,也不要复制新包中的空目录过去。**
5. 如果原来设置了 `PO_DATA_DIR`、`PO_HOST`、启动端口参数或开机任务,继续使用原配置和同一个数据目录。按原方式启动新 EXE,查看窗口是否显示“已启动”和实际端口。默认端口是 8080;被占用时会尝试后续端口,因此必须核对窗口显示的端口。若端口意外改变,先检查旧进程是否仍在运行。
## 三、验收后恢复使用
1. 用服务器本机浏览器打开 `http://127.0.0.1:实际端口`;再用一台员工电脑和一部连接公司 Wi-Fi 的手机打开原内网地址。确认能登录,且**不出现首次初始化页面**。若出现要求重新初始化,请立即停止新 EXE,检查数据目录是否指向旧 `instance\po.db`,不要继续新建管理员。
2. 核对最近订单的单号、供应商、审批记录、付款/交货状态,并下载一份已审批的历史 PDF;历史 PDF 内容应保持原样。
3. 核对本次新功能:供应商搜索;新建订单选供应商;编辑订单搜索物料;订单列表按物料查历史订单、复制下单;工作台的“未交付”“已交付已收票待付款”“已完成”和“其他待跟进”。复制订单会清空旧交期,新单需重新填写并核对单价。
4. 由管理员在“物料库”按业务需要点击一次“同步历史审批价”,把升级前已审批订单的物料单价补录到物料库。该操作会更新**物料库默认价**,不会修改历史订单或归档 PDF;执行前先确认已完成备份,完成后抽查几种常用物料。
5. 如已启用企业微信通知,用一张明确标为测试的订单,在业务负责人知情下验证审批群消息和公司 Wi-Fi 内手机审批。不要把生产群通知当成打包自检的一部分。确认原内网地址、端口和通知配置仍正确。
6. 验收通过后,通知同事恢复使用。保留旧 EXE、升级前数据备份和新包,至少到完成一轮正常业务核对后再按公司备份制度处理。
## 四、失败时回退
- **新 EXE 无法启动,且没有产生新业务数据:**停止新 EXE;把本次停机前备份的服务目录及独立数据目录恢复到原位置;用原启动方式运行旧 EXE,核对原订单和登录。不要只换回旧 EXE,却让它继续使用已被新版迁移的数据库。
- **新 EXE 已产生订单、审批、付款或通知:**先停止服务并保存当前目录的副本,记录新业务和已发送的通知,再由业务负责人决定如何迁移或补录。直接恢复旧数据库会丢失升级后的记录;恢复旧通知队列还可能造成重复推送。
- **出现首次初始化页面或订单为空:**这通常表示程序连接到了另一个数据目录。立即停止,检查 `PO_DATA_DIR`、EXE 所在目录和 `instance\po.db`,不要在空库上继续操作。
- **新服务跑到 8081 等端口:**先核对旧进程是否完全退出,以及端口是否被其他程序占用。员工网址和企业微信通知中的内网地址应以最终实际端口为准。
本手册用于正式服务器版本替换。首次安装、Win7 环境故障和企业微信配置细节见同包 `README_WIN7.txt` 及现有使用升级手册。Win7 现场打包、局域网访问和真实企业微信发送仍需在目标服务器实际验收。