From ba384df5c2b3c6d417c951d7b759824546f8adbc Mon Sep 17 00:00:00 2001 From: chakcy <947105045@qq.com> Date: Tue, 18 Aug 2026 12:31:20 +0800 Subject: [PATCH] =?UTF-8?q?add:=20deploy/chongming.service=20systemd=20?= =?UTF-8?q?=E5=8D=95=E5=85=83=EF=BC=8C=E7=AE=A1=E7=90=86=20Nuitka=20?= =?UTF-8?q?=E6=89=93=E5=8C=85=E5=BA=94=E7=94=A8=EF=BC=88=E5=B7=A5=E4=BD=9C?= =?UTF-8?q?=E7=9B=AE=E5=BD=95/=E9=9D=9E=E7=89=B9=E6=9D=83=E7=94=A8?= =?UTF-8?q?=E6=88=B7/=E4=BC=98=E9=9B=85=E5=81=9C=E6=9C=BA/=E8=87=AA?= =?UTF-8?q?=E6=84=88=E9=87=8D=E5=90=AF=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- deploy/chongming.service | 65 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 65 insertions(+) create mode 100644 deploy/chongming.service diff --git a/deploy/chongming.service b/deploy/chongming.service new file mode 100644 index 0000000..8ac489e --- /dev/null +++ b/deploy/chongming.service @@ -0,0 +1,65 @@ +# 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= 覆盖 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 分支) +ExecStart=/opt/chongming/chongming +# 所有相对路径(config.toml / config/ / resources/*.mbank / static.svfs / +# data/ / logs/ / uploads/)均相对工作目录解析,必须指向安装目录 +WorkingDirectory=/opt/chongming + +# 非特权用户运行(HTTP 8000 / MQTT 1883 / Zenoh 7447 等端口均无需 root) +User=chongming +Group=chongming +UMask=0027 + +# 每机可选覆盖(如 APP_WORKERS),文件不存在时忽略(- 前缀) +EnvironmentFile=-/etc/chongming.env +Environment=PYTHONUNBUFFERED=1 + +# 优雅停机: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