deploy: 添加 systemd 服务单元与配置模板(开机自启/自动重启/journald 日志)
This commit is contained in:
@@ -103,4 +103,27 @@ python3 /tmp/bolt_http_test.py # HTTP 端到端
|
|||||||
## 平台
|
## 平台
|
||||||
|
|
||||||
- Linux / macOS(完整功能:进程组杀、信号处理)
|
- Linux / macOS(完整功能:进程组杀、信号处理)
|
||||||
- Windows(基础功能:`cmd /C`、`taskkill /T` 杀进程树;无信号优雅退出)
|
- Windows(基础功能:`cmd /C`、`taskkill /T` 杀进程树;无信号优雅退出)
|
||||||
|
## systemd 服务部署(开机自启)
|
||||||
|
|
||||||
|
仓库内 `deploy/` 提供现成的部署文件:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
sudo install -m 0755 target/release/bolt /usr/local/bin/bolt
|
||||||
|
sudo cp deploy/bolt.service /etc/systemd/system/
|
||||||
|
sudo cp deploy/bolt.env.example /etc/bolt.env # 按需修改(监听地址在 service 文件 ExecStart)
|
||||||
|
sudo systemctl daemon-reload
|
||||||
|
sudo systemctl enable --now bolt # 开机自启 + 立即启动
|
||||||
|
```
|
||||||
|
|
||||||
|
常用管理命令:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
systemctl status bolt # 查看状态
|
||||||
|
systemctl restart bolt # 重启(改完配置后)
|
||||||
|
systemctl stop bolt # 停止
|
||||||
|
systemctl disable bolt # 取消开机自启
|
||||||
|
journalctl -u bolt -f # 实时查看日志
|
||||||
|
```
|
||||||
|
|
||||||
|
特性:崩溃自动重启(`Restart=on-failure`,2 秒间隔)、优雅停机(SIGTERM 时杀掉所有子进程树)、日志进 journald、`LimitNOFILE=65536`。默认监听 `127.0.0.1:8080`,对外暴露前务必在 `/etc/bolt.env` 设置 `BOLT_TOKEN`。
|
||||||
|
|||||||
@@ -0,0 +1,26 @@
|
|||||||
|
# bolt 服务配置文件(EnvironmentFile)
|
||||||
|
# 修改后: systemctl restart bolt
|
||||||
|
#
|
||||||
|
# 注意:这是远程命令执行入口,监听公网时务必设置 BOLT_TOKEN!
|
||||||
|
# 启动参数(监听地址)在 /etc/systemd/system/bolt.service 的 ExecStart 中修改。
|
||||||
|
|
||||||
|
# 认证令牌(必填,若监听 0.0.0.0 对外暴露)
|
||||||
|
#BOLT_TOKEN=请改成强随机串
|
||||||
|
|
||||||
|
# 命令白名单(非空时仅允许列出的命令,用逗号分隔)
|
||||||
|
#BOLT_ALLOW=git,docker,curl
|
||||||
|
|
||||||
|
# 命令黑名单(前缀匹配)
|
||||||
|
#BOLT_DENY=rm,mkfs
|
||||||
|
|
||||||
|
# 默认命令超时毫秒(0 = 无限)
|
||||||
|
#BOLT_TIMEOUT_MS=30000
|
||||||
|
|
||||||
|
# 默认工作目录
|
||||||
|
#BOLT_CWD=/root
|
||||||
|
|
||||||
|
# 单流输出捕获上限(支持 K/M/G)
|
||||||
|
#BOLT_MAX_OUTPUT=1M
|
||||||
|
|
||||||
|
# 额外允许的 HTTP Origin(默认仅 localhost/127.0.0.1)
|
||||||
|
#BOLT_ALLOW_ORIGIN=https://example.com
|
||||||
@@ -0,0 +1,28 @@
|
|||||||
|
[Unit]
|
||||||
|
Description=bolt - 极速单文件 MCP 命令执行服务器
|
||||||
|
Documentation=https://git.jocay.qzz.io/jocay/bolt
|
||||||
|
After=network-online.target
|
||||||
|
Wants=network-online.target
|
||||||
|
|
||||||
|
[Service]
|
||||||
|
Type=simple
|
||||||
|
ExecStart=/usr/local/bin/bolt --http 127.0.0.1:8080
|
||||||
|
# 修改监听地址示例(对外暴露请务必在 /etc/bolt.env 设置 BOLT_TOKEN):
|
||||||
|
# ExecStart=/usr/local/bin/bolt --http 0.0.0.0:8080
|
||||||
|
EnvironmentFile=-/etc/bolt.env
|
||||||
|
Restart=on-failure
|
||||||
|
RestartSec=2
|
||||||
|
# 优雅停机:收到 SIGTERM 后 bolt 会杀掉全部子进程再退出
|
||||||
|
TimeoutStopSec=10
|
||||||
|
# 日志进 journald
|
||||||
|
StandardOutput=journal
|
||||||
|
StandardError=journal
|
||||||
|
SyslogIdentifier=bolt
|
||||||
|
|
||||||
|
# 安全加固(保持宽松:命令执行需要完整权限)
|
||||||
|
# ProtectSystem / ProtectHome 不开启,否则子命令无法写文件
|
||||||
|
NoNewPrivileges=false
|
||||||
|
LimitNOFILE=65536
|
||||||
|
|
||||||
|
[Install]
|
||||||
|
WantedBy=multi-user.target
|
||||||
Reference in New Issue
Block a user