🍎 macOS 部署

支持 macOS 11 (Big Sur) 及以上,Intel 与 Apple 芯片(M 系列)都支持,脚本会自动挑对二进制。

快速开始

# 把二进制和 deploy/macos 目录一起拷到 Mac(二进制会自动按芯片挑)
cd deploy/macos
chmod +x install.sh
sudo ./install.sh

脚本会自动:

  1. uname -m 判断芯片 → Intel 用 opsmonitor-server-darwin-amd64,M 系列用 -arm64
  2. 装到 /usr/local/opsmonitor/opsmonitor-server
  3. 生成配置 /usr/local/etc/opsmonitor/opsmonitor.env(权限 600)
  4. 注册 launchd 守护 com.opsmonitor.server(开机自启 + 崩溃自动拉起)
  5. 若系统防火墙开着,自动为本程序放行入站
  6. 打印只显示一次的控制台账号与通信密钥
为什么用 launchd 而不是 nohup

macOS 上只有 launchd 托管的进程才能可靠地开机自启并自动重启。

常用参数

sudo ./install.sh -f ./opsmonitor-server-darwin-arm64   # 指定二进制
sudo ./install.sh --addr :8000                          # 换端口
sudo ./install.sh --token '你的密钥' --admin-pass '你的密码'
sudo ./install.sh --public-url http://10.0.0.5:9999
sudo ./install.sh --uninstall                           # 卸载(保留数据)

目录规划

路径用途
/usr/local/opsmonitor/opsmonitor-server主程序
/usr/local/opsmonitor/start-server.shlaunchd 调用的包装脚本(加载配置后 exec 主程序)
/usr/local/opsmonitor/data/opsmonitor.dbSQLite 数据库
/usr/local/opsmonitor/logs/server.log程序日志
/usr/local/etc/opsmonitor/opsmonitor.env配置(权限 600)
/Library/LaunchDaemons/com.opsmonitor.server.plistlaunchd 单元

日常运维

# 日志
tail -f /usr/local/opsmonitor/logs/server.log

# 状态
sudo launchctl print system/com.opsmonitor.server | head -20

# 重启 / 停止 / 启动
sudo launchctl kickstart -k system/com.opsmonitor.server
sudo launchctl bootout system/com.opsmonitor.server
sudo launchctl bootstrap system /Library/LaunchDaemons/com.opsmonitor.server.plist

# 临时禁用开机自启(不禁用当前运行)
sudo launchctl disable system/com.opsmonitor.server

手工部署(不用脚本)

sudo mkdir -p /usr/local/opsmonitor/{data,logs} /usr/local/etc/opsmonitor
sudo install -m 0755 opsmonitor-server-darwin-arm64 /usr/local/opsmonitor/opsmonitor-server
sudo cp ../linux/opsmonitor.env.example /usr/local/etc/opsmonitor/opsmonitor.env
sudo vi /usr/local/etc/opsmonitor/opsmonitor.env     # 改 OPSM_TOKEN / OPSM_ADMIN_PASS
sudo chmod 600 /usr/local/etc/opsmonitor/opsmonitor.env

# 包装脚本:launchd 不读环境文件,必须先 source 再 exec
cat > /usr/local/opsmonitor/start-server.sh <<'EOF'
#!/bin/sh
set -a; [ -f /usr/local/etc/opsmonitor/opsmonitor.env ] && . /usr/local/etc/opsmonitor/opsmonitor.env; set +a
exec /usr/local/opsmonitor/opsmonitor-server
EOF
sudo chmod 755 /usr/local/opsmonitor/start-server.sh

sudo launchctl bootstrap system /Library/LaunchDaemons/com.opsmonitor.server.plist

常见排障

现象处理
提示「无法打开,因为 Apple 无法检查其是否包含恶意软件」二进制是自行编译未签名的:sudo xattr -dr com.apple.quarantine /usr/local/opsmonitor/opsmonitor-server
launchctl bootstrap 报 Bootstrap failed: 5单元文件语法或权限问题:确认属主 root:wheel、权限 644;先 bootout 再重试
服务反复重启看 logs/server.log;常见是端口占用或数据目录权限
别的机器打不开页面系统设置 → 网络 → 防火墙,确认本程序已允许传入连接
Apple 芯片误用 Intel 版报 Bad CPU type in executable。换 darwin-arm64 重新执行
启动日志指纹不是 278D-4852-7191-E7CE二进制不是本版本产物