Files
chongming-core/deploy/chongming.service
T

75 lines
3.2 KiB
Desktop File
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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)。
# 可选:APP_SERVER=granian|uvicorn|gunicorn 切换 HTTP 服务器(默认 Linux 下
# gunicorn,Windows 下 uvicorn);三者的启动参数同取自 [production.server]。
# 可选:CHONGMING_RPC_LOCAL=0 关闭 inline 插件的进程内直调快路径(默认开启;
# 仅影响本进程托管的 inline 副本,external 插件始终走 Zenoh)。
[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 编译产物,前台运行所选服务器 master(默认 Linux 分支为
# gunicorn,可用 APP_SERVER 切到 granian/uvicorn)
ExecStart=/data/chongming/chongming
# 所有相对路径(config.toml / config/ / resources/*.mbank / static.svfs /
# data/ / logs/ / uploads/)均相对工作目录解析,必须指向安装目录
WorkingDirectory=/data/chongming
# 非特权用户运行(HTTP 8000 / MQTT 1883 / Zenoh 7447 等端口均无需 root)
User=linaro
Group=linaro
UMask=0027
# 每机可选覆盖(如 APP_WORKERS),文件不存在时忽略(- 前缀)
EnvironmentFile=-/etc/chongming.env
Environment=PYTHONUNBUFFERED=1
# 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
# 优雅停机:SIGTERM 由服务器 master 排空 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