2026-08-18 12:31:20 +08:00
|
|
|
|
# chongming.service — systemd 管理打包后的 chongming 应用(Nuitka 单二进制 + 模块库)
|
|
|
|
|
|
#
|
|
|
|
|
|
# 安装步骤(以 /opt/chongming 为例,目录名可改,需同步修改下方 WorkingDirectory/ExecStart):
|
|
|
|
|
|
# sudo mkdir -p /opt/chongming
|
|
|
|
|
|
# sudo cp -r build/. /opt/chongming/ # 打包产物:chongming 二进制 + config.toml + config/ + resources/ + static.svfs
|
|
|
|
|
|
# sudo useradd --system --home /opt/chongming --shell /usr/sbin/nologin chongming
|
|
|
|
|
|
# sudo chown -R chongming:chongming /opt/chongming
|
|
|
|
|
|
# sudo cp deploy/chongming.service /etc/systemd/system/
|
|
|
|
|
|
# sudo systemctl daemon-reload
|
|
|
|
|
|
# sudo systemctl enable --now chongming
|
|
|
|
|
|
#
|
|
|
|
|
|
# 常用操作:
|
|
|
|
|
|
# systemctl status chongming # 状态
|
|
|
|
|
|
# journalctl -u chongming -f # 实时日志(应用自身日志另见 /opt/chongming/logs/)
|
|
|
|
|
|
# systemctl restart chongming # 重启(SIGTERM 优雅排空,最长等待 30s)
|
|
|
|
|
|
#
|
|
|
|
|
|
# 可选:/etc/chongming.env 中写 APP_WORKERS=<N> 覆盖 worker 数(默认取
|
|
|
|
|
|
# config.toml [production.server].workers,打包版通常为 4)。
|
|
|
|
|
|
|
|
|
|
|
|
[Unit]
|
|
|
|
|
|
Description=Chongming Zenoh Gateway (FastAPI + Zenoh + MQTT)
|
|
|
|
|
|
Wants=network-online.target
|
|
|
|
|
|
After=network-online.target
|
|
|
|
|
|
|
|
|
|
|
|
# 60s 内失败 5 次则放弃(避免配置错误导致崩溃循环)
|
|
|
|
|
|
StartLimitIntervalSec=60
|
|
|
|
|
|
StartLimitBurst=5
|
|
|
|
|
|
|
|
|
|
|
|
[Service]
|
|
|
|
|
|
Type=simple
|
|
|
|
|
|
|
|
|
|
|
|
# 打包应用入口:Nuitka 编译产物,前台运行 gunicorn master(Linux 分支)
|
2026-09-02 11:34:30 +08:00
|
|
|
|
ExecStart=/data/chongming/chongming
|
2026-08-18 12:31:20 +08:00
|
|
|
|
# 所有相对路径(config.toml / config/ / resources/*.mbank / static.svfs /
|
|
|
|
|
|
# data/ / logs/ / uploads/)均相对工作目录解析,必须指向安装目录
|
2026-09-02 11:34:30 +08:00
|
|
|
|
WorkingDirectory=/data/chongming
|
2026-08-18 12:31:20 +08:00
|
|
|
|
|
|
|
|
|
|
# 非特权用户运行(HTTP 8000 / MQTT 1883 / Zenoh 7447 等端口均无需 root)
|
2026-09-02 11:34:30 +08:00
|
|
|
|
User=linaro
|
|
|
|
|
|
Group=linaro
|
2026-08-18 12:31:20 +08:00
|
|
|
|
UMask=0027
|
|
|
|
|
|
|
|
|
|
|
|
# 每机可选覆盖(如 APP_WORKERS),文件不存在时忽略(- 前缀)
|
|
|
|
|
|
EnvironmentFile=-/etc/chongming.env
|
|
|
|
|
|
Environment=PYTHONUNBUFFERED=1
|
2026-08-19 11:44:29 +08:00
|
|
|
|
# ffmpeg 位于非标准路径(AI Box 的 sophon-ffmpeg):覆盖默认 PATH 才能被
|
|
|
|
|
|
# shutil.which / create_subprocess_exec 找到(RTSP 拉流依赖);若 ffmpeg 还依赖
|
|
|
|
|
|
# 私有动态库,再补一条 Environment=LD_LIBRARY_PATH=/opt/sophon/sophon-ffmpeg-latest/lib
|
|
|
|
|
|
Environment=PATH=/opt/sophon/sophon-ffmpeg-latest/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
|
2026-08-18 12:31:20 +08:00
|
|
|
|
|
|
|
|
|
|
# 优雅停机:SIGTERM 由 gunicorn 排空 worker,等在途请求/告警上传完成
|
|
|
|
|
|
KillSignal=SIGTERM
|
|
|
|
|
|
KillMode=control-group
|
|
|
|
|
|
TimeoutStopSec=30
|
|
|
|
|
|
|
|
|
|
|
|
# 异常退出自动拉起
|
|
|
|
|
|
Restart=on-failure
|
|
|
|
|
|
RestartSec=3
|
|
|
|
|
|
|
|
|
|
|
|
# Zenoh / MQTT / 并发连接放开文件描述符上限
|
|
|
|
|
|
LimitNOFILE=65535
|
|
|
|
|
|
LimitNPROC=65535
|
|
|
|
|
|
|
|
|
|
|
|
# 轻量加固(应用无 setuid/特权端口需求,不影响运行)
|
|
|
|
|
|
PrivateTmp=true
|
|
|
|
|
|
NoNewPrivileges=true
|
|
|
|
|
|
|
|
|
|
|
|
[Install]
|
|
|
|
|
|
WantedBy=multi-user.target
|