生产验收标准
本页是安装负责人与运维团队按同一标准判断“可投入运行”的检查清单。 安装完成并不意味着服务启动过一次,而是指 重启/备份/健康检查/安全/验收证据 全部留存到位。
1. Go / No-Go 标准
| 区分 | Go 标准 | No-Go |
|---|---|---|
| 部署模式 | 新装使用 container_mode=true | 在新机器上以 plantpulse.service native 方式运行 |
| systemd | plantpulse-edge.service active + enabled | active 但未 enabled,或处于 restart loop |
| 健康检查 | /api/v1/system/health HTTP 200 + components UP | HTTP 503、component DOWN、响应持续延迟 |
| 版本 | /api/v1/system/version 中记录 image_tag / build_date | tag 未确认,以旧 image 启动 |
| 网络 | 已确认 WAN、PLC NIC、DNS/NTP、平台 API 可达性 | PLC 网络持有 default route,NTP 未同步 |
| 安全 | /etc/kopens/credentials.txt root 0600,初始 admin 密码已修改 | 保留默认/共享密码,无凭据交接记录 |
| 备份 | backup.sh 成功执行 1 次 + .sha256 存在 | 未执行备份,或备份仅存在于同一磁盘 |
| 可恢复性 | 已生成 doctor.sh 或 acceptance log | 故障时无可提交的证据 |
只要有一项为 No-Go,就不要投入运行,请按照 安装故障排查 或 容器模式运行指南 中的升级(escalation)流程处理。
2. 安装前审批项
安装前运维团队需确认的值:
| 项目 | 示例 |
|---|---|
EDGE_ID | EDGE_00303 |
SITE_ID | SITE_00001 |
| 平台 host / API key | SERVER_HOST、SERVER_API_KEY |
| PLC NIC / WAN NIC | LAN1_IFACE、LAN2_IFACE |
| static IP / gateway / DNS | LAN1_IP、LAN2_IP、LAN2_GATEWAY、LAN2_DNS |
| image tag 策略 | latest 或固定 IMAGE_TAG=2026-YYYYMMDD |
| 初始凭据策略 | 随机生成或由运维团队指定 |
| 外部备份位置 | NAS / S3 / 运维备份服务器 |
凭据不要留在聊天记录或邮件正文中,应通过 root 专用文件或运维密钥保管库传递。
3. Secret-safe 安装 env
为避免密码和 API key 留在 shell history 中,请使用 root 专用 env 文件。
sudo -i
umask 077
install -m 600 /dev/null /root/pp-edge-install.env
${EDITOR:-vi} /root/pp-edge-install.env
文件内容示例:
export EDGE_ID=EDGE_00303
export SITE_ID=SITE_00001
export SERVER_HOST=192.168.0.41
export SERVER_API_KEY='<platform-api-key>'
export LAN1_IFACE=enp1s0
export LAN1_IP=192.168.100.10/24
export LAN2_IFACE=enp2s0
export LAN2_IP=192.168.0.10/24
export LAN2_GATEWAY=192.168.0.1
export LAN2_DNS=192.168.0.1
# export IMAGE_TAG=2026-20260524
执行:
sudo -i
set -a
. /root/pp-edge-install.env
set +a
cd /opt/kopens/install
bash install.sh
即使由运维团队直接指定初始密码,也应在同一文件中写入 ADMIN_PASS、API_KEY、MQTT_PASS、
OPCUA_PASS、CERT_PASS 并保持 chmod 600。官方 cert password key 仅使用 CERT_PASS 一个。
4. 验收证据收集
安装完成后,用以下命令生成不含密文的证据文件。
sudo -i
OUT=/root/pp-edge-acceptance-$(date +%Y%m%d-%H%M%S).txt
{
echo "# PlantPulse Edge acceptance"
date -Is
echo
echo "## host"
hostnamectl
uname -a
timedatectl
echo
echo "## service"
systemctl is-enabled plantpulse-edge.service || true
systemctl is-active plantpulse-edge.service || true
systemctl status plantpulse-edge.service --no-pager | sed -n '1,40p'
echo
echo "## version"
curl -ks https://127.0.0.1/api/v1/system/version | python3 -m json.tool
echo
echo "## health"
curl -ks https://127.0.0.1/api/v1/system/health | python3 -m json.tool
echo
echo "## ports"
ss -lntp | grep -E ':(80|443|1883|1884|6379|7799|9042|1880|12000|12443)([[:space:]]|$)' || true
echo
echo "## storage"
df -h /opt /data1 2>/dev/null || df -h
echo
echo "## docker"
docker ps --filter name=plantpulse-edge --format 'table {{.Names}}\t{{.Image}}\t{{.Status}}'
} > "$OUT"
chmod 600 "$OUT"
sha256sum "$OUT" > "$OUT.sha256"
echo "$OUT"
验收时需交付给运维团队的内容:
- acceptance text 文件路径与 sha256
/data1/pp-backups/pe-backup-*.tar.zst与.sha256/tmp/pe-doctor-*.tar.zst与.sha256(出现问题时)- 网关 IP、
EDGE_ID、SITE_ID、image tag、安装日期时间 - 凭据是否已完成交接(密码原文另按安全流程处理)
5. 重启验证
投入运行前,至少执行一次 service restart 并确认自动恢复。
sudo systemctl restart plantpulse-edge.service
sleep 30
sudo bash /opt/kopens/install/bin/health.sh
curl -ks https://127.0.0.1/api/v1/system/health | python3 -m json.tool
已注册 PLC 连接的现场,重启后还需确认采集状态与最新值刷新情况。
6. 备份与恢复准备
sudo bash /opt/kopens/install/bin/backup.sh
ls -lh /data1/pp-backups/
sha256sum /data1/pp-backups/pe-backup-*.tar.zst | tail -1
首次备份需复制到外部 NAS/S3/运维备份服务器。仅有同一磁盘上的备份无法完成故障恢复。
7. 运维团队接收后的锁定
- 确认
/etc/kopens/credentials.txt权限为0600 root - 初始 admin 密码已修改
- 确定
/root/pp-edge-install.env的保留策略:迁移至运维密钥保管库后从设备删除,或保持 root 0600 - 防火墙仅放行必须对 WAN 暴露的端口
- 登记运维团队联系方式与升级路径
- 预约下次巡检日期与备份验证日期