SIFANGDA · DEPLOYMENT READINESS

四方达智慧营养健康餐厅
服务器部署手册 V0.1(历史版本)

本页基于旧“1 台 ECS + 1 台 RDS”假设,已被 2026-07-27 的双服务器架构确认覆盖,仅保留追溯,不得用于现场执行。

更新:2026-07-24 状态:历史版本 / 禁止执行 证据:项目输入 + 同类实装参考 安全:不含生产凭据

01 当前结论

本版本已废止为执行入口。四方达当前架构为 1 台应用服务器 + 1 台独立数据库服务器,通过 ToDesk 跳板电脑后 SSH 登录,当前没有域名。请使用 双服务器部署准备包V0.2 运行手册
四方达目前只确认了容量基线,尚未确认 openEuler 完整版本、CPU 架构、RDS 类型/版本、代码分支、发布包哈希、业务标识、域名证书和 Redis 形态。因此本版可以指导准备与评审,但不能直接宣称“可上线”。
3000 人已确认容量档位
1 × ECS8 核 / 16 GB / 10 M / 500 GB
1 × RDS4 核 / 8 GB / 250 GB

02 部署目标与参考拓扑

目标范围包括 PC 管理端、手机端、AI 视觉与营养结算、条码结算、CPT-S30A × 1CPT-GMPOS200 × 3,以及支撑这些能力的应用、数据库、任务、日志、备份与监控。

浏览器 / 手机 / 设备
域名 + HTTPS
ECS 应用节点
RDS 私网数据库

ECS 候选运行组件

Nginx Web 入口
PHP 7.3 主项目
PHP 7.4 AI API
Redis(本机候选)
Supervisor / Cron
业务代码与运行日志
单台 ECS 不具备应用高可用。若合同要求高可用,需另行增加负载均衡、双应用节点、共享文件或对象存储、集中 Redis 和无状态化设计。

03 滨州复用边界

可以参考禁止照搬
应用与数据库分离的部署顺序滨州 IP、域名、端口和项目路径
/workspace/wwwroot 目录组织bzjk 业务标识、数据库名和初始化数据
Nginx + 双 PHP 的运行思路数据库账号、Redis 口令及任何明文凭据
Redis、扩展、Supervisor、Cron 检查方法滨州 MySQL 本机安装步骤;四方达使用 RDS
包哈希、配置回读、分层验收方法固定表数量和滨州专属设备/菜品/商户数据

04 参数冻结与停止条件

参数当前口径状态责任
ECS 容量8 核、16 GB、10 M、500 GB已确认客户 IT
RDS 容量4 核、8 GB、250 GB已确认客户 IT
系统与架构openEuler;24.03 LTS 官方来源已登记,最终版本和 x86/ARM 未定待确认研发 + 客户 IT
RDS 类型/版本/高可用必须与 SQL 和驱动兼容待确认研发 + 客户 IT
代码与发布包仓库、分支、提交、版本、SHA256待确认研发
业务标识与数据库使用四方达专属值,禁止沿用 bzjk待确认研发
域名与 HTTPS正式域名、证书、回调地址待确认客户 IT
RedisECS 本机或独立托管实例待确认研发 + 客户 IT
支付/账户/条码业务与真实资金验收边界待确认产品 + 客户 + 研发
资源低于基线、包无 SHA256、系统/RDS 不兼容、数据库无备份、出现其他客户标识,或要求把秘密写入文档/Git 时,必须停止生产部署。

05 发布材料与凭据处理

每个安装包、应用包、SQL、配置包都必须登记名称、版本、来源、适用架构和 SHA256。摘要不匹配时不得解压。

mkdir -p /root/sifangda-deploy/packages
cd /root/sifangda-deploy/packages
sha256sum -c SHA256SUMS
  • RDS 管理账号只用于建库、授权和迁移,不进入应用配置。
  • 主业务库与 AI 业务库优先使用独立最小权限账号。
  • Redis 口令、RDS 密码、OSS 密钥和证书私钥走密码管理器或受控秘密输入。
  • 现场记录只保存“已配置/验证通过”和秘密指纹,不保存原文。

06 ECS 与 RDS 资源验收

ECS 回读

uname -m
cat /etc/os-release
lscpu
free -h
lsblk -f
df -hT
ip -br addr
ip route
timedatectl

RDS 回读

确认数据库完整版本、实例系列、高可用、字符集、时区、最大连接数、自动备份、手动快照、恢复入口、私网连通性、TLS 和告警责任人。

nc -vz __RDS_PRIVATE_HOST__ __RDS_PORT__
mysql --ssl-mode=PREFERRED \
  -h __RDS_PRIVATE_HOST__ -P __RDS_PORT__ \
  -u __DEPLOY_DB_USER__ -p \
  -e "SELECT VERSION(), NOW();"

07 应用服务器环境

候选基线来自滨州实装:LNMP 2.2、Nginx 1.26.x、PHP 7.3.33、PHP 7.4.33、phpredis 5.3.5 兼容线、Mosquitto 扩展、Redis 和 Supervisor。四方达必须锁定具体版本、安装包和 SHA256 后再执行。

mkdir -p /workspace/wwwroot /workspace/wwwlogs
mkdir -p /workspace/releases /workspace/backups
mkdir -p /workspace/wwwroot/__MAIN_BUSINESS__/{current,project}
mkdir -p /workspace/wwwroot/__AI_BUSINESS__/{current,project}
mkdir -p /workspace/wwwroot/log/__MAIN_BUSINESS__/cron
mkdir -p /workspace/wwwroot/log/__AI_BUSINESS__/cron
chown -R www:www /workspace/wwwroot /workspace/wwwlogs
chmod 750 /workspace/backups

PHP 7.3 与 7.4 的扩展必须分别按各自 ABI 编译,不能跨版本复制 .so

nginx -v
/usr/local/php/bin/php -v
/usr/local/php7.4/bin/php -v
/usr/local/php/bin/php -m | grep -Ei "pdo|mysql|redis|mosquitto"
/usr/local/php7.4/bin/php -m | grep -Ei "pdo|mysql|redis|mosquitto"

08 RDS 数据库初始化

  1. 确认自动备份,并创建手动快照或等效备份。
  2. 在同版本测试库完成一次全量导入与应用启动验证。
  3. 创建四方达专属主业务库、AI 业务库和最小权限账号。
  4. 使用受控秘密输入导入 SQL,不在命令行或文档记录密码。
  5. 按四方达发布清单核对表、字符集、SQL Mode 和业务初始化数据。
mysql -h __RDS_PRIVATE_HOST__ -P __RDS_PORT__ \
  -u __DEPLOY_DB_USER__ -p \
  __MAIN_DATABASE__ < __MAIN_INIT_SQL__

mysql -h __RDS_PRIVATE_HOST__ -P __RDS_PORT__ \
  -u __DEPLOY_DB_USER__ -p \
  __AI_DATABASE__ < __AI_INIT_SQL__
不得套用滨州固定表数量。组织、商户、business、设备、菜品和 OSS 配置中出现 bzjk 或其他客户标识时停止发布。

09 版本化发布与配置回读

新版本目录
摘要与占位符检查
原子切换 current
冒烟与确认

上传到新版本目录,不覆盖当前版本。完成配置、依赖、RDS/Redis 连通性和静态资源检查后,再原子切换 current 软链接。

grep -RInE "__[A-Z0-9_]+__|bzjk|bziht" \
  /workspace/wwwroot/__MAIN_BUSINESS__/current \
  /workspace/wwwroot/__AI_BUSINESS__/current

主项目回读业务标识、RDS、Redis、AI API、日志、OSS、回调和时区;AI API 回读 AI/主业务关联、数据库、Redis、算法、相机、菜品、设备和消息服务。第三方秘密只验证指纹。

10 Nginx、Supervisor、Cron 与日志

Nginx / HTTPS

  • 80 只跳转 HTTPS,443 作为正式入口。
  • AI API 内部端口只监听 127.0.0.1
  • PHP 7.3 处理主项目,PHP 7.4 处理 AI API。
  • 证书私钥仅 root 可读,不进入 Git 或文档。
nginx -t
ss -lntp | grep -E ":(80|443|__AI_INTERNAL_PORT__)[[:space:]]"
curl -kI --resolve "__SIFANGDA_DOMAIN__:443:127.0.0.1" \
  "https://__SIFANGDA_DOMAIN__/"

Supervisor / Cron

只使用四方达专属配置;业务任务以 www 运行,明确单例、幂等、日志、告警和重启策略。

supervisorctl reread
supervisorctl update
supervisorctl status all
sleep 90
supervisorctl status all
crontab -l -u www
systemctl status crond --no-pager

11 分层验收与通过标准

基础设施层

Nginx / PHP-FPM / Supervisor / Cron 正常
Redis(如本机)仅绑定必要地址
ECS 到 RDS 私网与 TLS 可用
磁盘、内存、时间同步正常

应用层

登录页和静态资源正常
主项目连接 RDS、Redis、AI API
Supervisor 90 秒稳定复查通过
无跨域、证书、Mixed Content 错误

业务层

PC / 手机端登录与权限
组织、菜品、营养数据
CPT-S30A 相机、算法、学习识别
3 台 CPT-GMPOS200 登记与收银
条码、价格与异常码处理
支付/账户、退款和对账
支付方式、账户体系和条码规则未确认前,只能完成非资金链路验证,不得进行真实扣款。

12 回滚与常见问题

应用回滚

  1. 停止新版本 Supervisor 任务。
  2. current 切回上一已验证版本。
  3. 平滑重载 PHP-FPM 和 Nginx。
  4. 恢复上一版 Supervisor/Cron 配置并复测。

数据库回滚

不可逆迁移必须停止写入,由数据库管理员按 RDS 快照/备份恢复。应用回滚不等于数据库自动回滚,发布前须明确代码与数据库兼容矩阵。

排障顺序

问题优先检查
ECS 无法连接 RDS私网地址、VPC 路由、白名单、安全组、端口、TLS、账号 Host
Nginx 检查失败log_format、证书、include、FPM socket、重复端口、server_name
PHP 扩展异常ABI、php.ini 加载位置、重复 extension、依赖库
Supervisor 反复退出PHP 路径、工作目录、占位符、RDS/Redis/消息服务、日志权限
页面正常但设备/AI 异常设备网络 → 登记 → 算法激活 → 菜品同步 → business → 消息服务 → 日志

13 升级 V1.0 前必须确认

  1. ECS CPU 架构和 openEuler 完整版本。
  2. RDS 数据库类型、版本、高可用等级和备份恢复策略。
  3. 主项目、AI API、PC/手机端的仓库、分支、提交、版本和 SHA256。
  4. 主业务标识、AI 业务标识和两个数据库名。
  5. Redis 使用 ECS 本机还是独立托管实例。
  6. 正式域名、HTTPS 证书和外部回调地址。
  7. 支付方式、账户体系、商户和真实资金验收边界。
  8. 条码规则、商品/菜品映射和异常处理规则。
  9. AI 算法、相机、菜品库、设备初始化责任人与验收样本。
  10. RDS 备份保留期、RTO/RPO、监控告警和恢复责任人。
上述问题关闭后,由交付负责人把 Markdown 真源升级为 V1.0“现场执行版”,补齐实际参数、发布清单和验证证据,再进入生产实施。

查看完整 Markdown 真源与当次部署记录模板 →