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