#!/bin/bash # 安装 WeChat-Nanobot Bridge 为系统服务 set -e SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" PROJECT_DIR="$(dirname "$SCRIPT_DIR")" SERVICE_NAME="weixin-nanobot-bridge" SERVICE_FILE="/etc/systemd/system/${SERVICE_NAME}.service" echo "🔧 安装 WeChat-Nanobot Bridge 系统服务" echo " 项目目录: $PROJECT_DIR" echo "" # 检查权限 if [ "$EUID" -ne 0 ]; then echo "❌ 请使用 sudo 运行此脚本" echo " sudo ./scripts/install-service.sh" exit 1 fi # 创建服务文件 echo "📝 创建服务文件..." cat > "$SERVICE_FILE" << EOF [Unit] Description=WeChat-Nanobot Bridge Service Documentation=https://github.com/nanocode/nanocode After=network.target Wants=network.target [Service] Type=simple User=ubuntu Group=ubuntu WorkingDirectory=$PROJECT_DIR Environment="HOME=/home/ubuntu" Environment="PATH=/usr/local/bin:/usr/bin:/bin:/home/ubuntu/.local/bin" Environment="PYTHONPATH=$PROJECT_DIR/src" Environment="NANOBOT_BRIDGE_HOST=0.0.0.0" Environment="NANOBOT_BRIDGE_PORT=5000" # 启动命令 ExecStart=/usr/bin/python3 $PROJECT_DIR/src/server.py # 重启策略 Restart=always RestartSec=10 StartLimitInterval=60s StartLimitBurst=3 # 日志 StandardOutput=append:$PROJECT_DIR/logs/service.log StandardError=append:$PROJECT_DIR/logs/service-error.log # 安全设置 NoNewPrivileges=false ProtectSystem=false ProtectHome=false [Install] WantedBy=multi-user.target EOF echo "✅ 服务文件已创建: $SERVICE_FILE" # 重载 systemd echo "🔄 重载 systemd..." systemctl daemon-reload # 启用开机自启 echo "🚀 启用开机自启..." systemctl enable "$SERVICE_NAME" echo "" echo "🎉 安装完成!" echo "" echo "管理命令:" echo " 启动服务: sudo systemctl start $SERVICE_NAME" echo " 停止服务: sudo systemctl stop $SERVICE_NAME" echo " 重启服务: sudo systemctl restart $SERVICE_NAME" echo " 查看状态: sudo systemctl status $SERVICE_NAME" echo " 查看日志: sudo journalctl -u $SERVICE_NAME -f" echo "" echo "是否现在启动服务? (y/n)" read -r response if [[ "$response" =~ ^[Yy]$ ]]; then systemctl start "$SERVICE_NAME" sleep 2 systemctl status "$SERVICE_NAME" --no-pager fi