一、部署前环境准备
1.1 硬件兼容性检查
Mac mini作为部署载体需满足以下条件:
- 硬件配置:建议配备16GB内存+512GB SSD存储
- 系统版本:需运行macOS 12 Monterey或更新版本
- 网络要求:固定IP地址或DDNS动态域名解析
- 电源管理:建议使用UPS不间断电源保障供电
1.2 基础工具链安装
通过终端执行以下命令完成开发环境准备:
# 安装Xcode命令行工具(含编译环境)xcode-select --install# 配置包管理工具(若未安装)/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"# 安装基础开发工具brew install git wget curl coreutils
二、系统级持久化配置
2.1 电源管理优化
通过pmset命令禁用系统休眠机制,确保服务持续运行:
# 禁用所有休眠模式(核心配置)sudo pmset -a disablesleep 1sudo pmset -a hibernatemode 0sudo pmset -a standby 0sudo pmset -a autopoweroff 0# 验证配置生效pmset -g | grep -E "sleep|hibernate|standby"
2.2 远程管理配置
开启SSH服务实现远程维护(生产环境建议配合防火墙规则):
# 启用远程登录(需管理员权限)sudo systemsetup -setremotelogin on# 配置SSH安全策略(可选)echo "PermitRootLogin no" | sudo tee -a /etc/ssh/sshd_configecho "PasswordAuthentication no" | sudo tee -a /etc/ssh/sshd_configsudo systemsetup -setrestartfreeze on # 系统冻结时自动重启
2.3 运行时环境检查
确保Node.js环境满足应用要求:
# 检查当前版本node --version# 通过包管理器安装指定版本(示例为LTS版本)brew install node@18 # 根据实际需求调整版本号# 配置环境变量(可选)echo 'export PATH="/usr/local/opt/node@18/bin:$PATH"' >> ~/.zshrcsource ~/.zshrc
三、应用部署方案
3.1 自动化安装方案
推荐使用标准化安装脚本快速部署:
# 下载并执行安装程序(建议先验证脚本来源)curl -fsSL https://example.com/deploy/install.sh | bash# 典型安装流程包含:# 1. 环境检测与报错处理# 2. 依赖项自动安装# 3. 服务进程守护配置# 4. 开机自启注册
3.2 开发者源码部署
适用于需要定制开发的场景:
# 克隆官方仓库(需提前配置Git)git clone https://github.com/example/repo.gitcd repo# 使用pnpm管理依赖(比npm更高效)npm install -g pnpmpnpm install --frozen-lockfile# 构建生产环境包pnpm build# 启动开发服务器(带热更新)pnpm dev
3.3 容器化部署方案
对于复杂应用推荐使用容器技术:
# 安装Docker Desktop(社区版)brew install --cask docker# 构建Docker镜像docker build -t my-app .# 运行容器(建议配置重启策略)docker run -d \--restart unless-stopped \-p 3000:3000 \--name my-service \my-app
四、服务守护与监控
4.1 进程管理配置
使用launchd实现原生守护进程:
<!-- 示例plist配置文件 ~/Library/LaunchAgents/com.example.service.plist --><plist version="1.0"><dict><key>Label</key><string>com.example.service</string><key>ProgramArguments</key><array><string>/usr/local/bin/node</string><string>/path/to/main.js</string></array><key>RunAtLoad</key><true/><key>KeepAlive</key><true/><key>StandardOutPath</key><string>/tmp/service.log</string><key>StandardErrorPath</key><string>/tmp/service.error.log</string></dict></plist>
4.2 日志管理系统
配置日志轮转与集中存储:
# 创建日志目录sudo mkdir /var/log/myappsudo chown $(whoami) /var/log/myapp# 使用logrotate配置(示例)cat > /etc/logrotate.d/myapp <<EOF/var/log/myapp/*.log {dailymissingokrotate 7compressdelaycompressnotifemptycreate 644 $(whoami) adminsharedscriptspostrotate/bin/kill -HUP SYSLOG senderID >/dev/null 2>&1 || trueendscript}EOF
4.3 监控告警方案
集成基础监控工具链:
# 安装系统监控工具brew install htop glances# 配置基础告警规则(示例使用系统命令)while true; doif ! pgrep -f "node main.js" > /dev/null; thenosascript -e 'display notification "服务异常重启中" with title "告警"'/path/to/startup.shfisleep 60done
五、维护与故障处理
5.1 常见问题排查
| 现象 | 可能原因 | 解决方案 |
|---|---|---|
| 服务频繁重启 | 内存泄漏 | 增加swap空间或优化代码 |
| 远程连接失败 | 防火墙拦截 | 检查pfctl规则或云服务商安全组 |
| 日志不更新 | 权限问题 | 检查日志目录写权限 |
| 构建失败 | 依赖冲突 | 删除node_modules重新安装 |
5.2 备份恢复策略
建议实施3-2-1备份原则:
# 每日自动备份脚本示例backup_dir="/Volumes/Backup/myapp_$(date +%Y%m%d)"mkdir -p "$backup_dir"# 数据库备份mongodump --out "$backup_dir/db"# 配置文件备份cp -r /etc/myapp "$backup_dir/config"# 压缩打包tar -czf "$backup_dir.tar.gz" "$backup_dir"# 异地上传(示例使用scp)scp "$backup_dir.tar.gz" user@backup-server:/storage/
5.3 性能优化建议
- 内存优化:调整Node.js堆内存限制
- 磁盘I/O:将日志存储到独立磁盘
- 网络优化:启用HTTP/2协议
- CPU亲和性:对于多核设备配置进程绑定
六、进阶部署方案
6.1 集群化部署
使用PM2实现多进程管理:
# 安装进程管理器npm install -g pm2# 启动集群(4个工作进程)pm2 start main.js -i 4# 配置负载均衡pm2 startup # 生成开机启动配置pm2 save # 保存当前进程状态
6.2 蓝绿部署方案
实现零停机更新:
# 版本1运行在3000端口node main.js --port 3000 &# 版本2运行在3001端口(测试验证)node main.js --port 3001 --env staging &# 通过Nginx切换流量# 验证通过后终止3000端口进程
6.3 混合云部署
对于高可用需求:
- 主节点部署在本地Mac mini
- 备节点部署在行业常见技术方案虚拟机
- 使用Keepalived实现VIP切换
- 共享存储使用NFS或对象存储服务
本方案通过系统化的配置管理和自动化工具链,实现了Mac mini设备的稳定7×24小时运行。实际部署时建议先在测试环境验证所有流程,生产环境需配合完善的监控告警体系。根据具体业务需求,可灵活选择基础部署方案或进阶集群化方案,平衡稳定性与运维成本。