Files
NeoBot/docs/deployment.md
K2cr2O1 56b1014419 refactor(core): 重构核心模块结构并添加开发文档
将核心模块按功能重新组织为更清晰的结构,包括 managers、handlers 和 utils 目录
添加完整的开发文档,涵盖快速开始、项目结构、核心概念和插件开发指南
更新所有相关模块的导入路径以匹配新的结构
将单例模式实现提取到单独的 singleton.py 文件
2026-01-07 22:51:27 +08:00

3.1 KiB

部署指南

当您的机器人开发完成并准备投入生产环境时,本指南将为您提供部署的最佳实践和建议。

1. 生产环境配置

与开发环境不同,生产环境要求更高的稳定性和安全性。

创建生产配置文件

建议您复制一份 config.toml 并重命名为 config.prod.toml,专门用于生产环境。

关键修改项:

  • 数据库与服务地址:
    • 确保 napcat_wsredis 部分的地址、端口和密码都指向您的生产服务器,而不是本地开发环境。

2. 使用进程守护工具

直接在终端中运行 python main.py 适用于开发,但在生产环境中,如果终端关闭或程序意外崩溃,机器人就会下线。

为了确保机器人能够 7x24 小时稳定运行,您应该使用进程守护工具

推荐工具

  • PM2 (Node.js): 尽管是 Node.js 工具,但 PM2 提供了强大的 Python 进程管理功能,包括崩溃自启、日志管理和性能监控。
  • Supervisor (Python): 一个纯 Python 实现的进程控制系统,配置简单,稳定可靠。
  • Systemd (Linux): Linux 系统自带的服务管理器,可以创建系统服务来管理机器人进程。

使用 PM2 (示例)

  1. 安装 PM2:

    npm install -g pm2
    
  2. 创建生态系统文件: 在项目根目录创建一个 ecosystem.config.js 文件:

    // ecosystem.config.js
    module.exports = {
      apps: [
        {
          name: 'neo-bot', // 应用名称
          script: 'main.py', // 启动脚本
          interpreter: '/path/to/your/venv/bin/python', // 指定虚拟环境的 Python 解释器
          env: {
            'APP_ENV': 'production', // 设置环境变量
          },
        },
      ],
    };
    

    注意: 请务必将 interpreter 路径修改为您服务器上虚拟环境的实际路径。

  3. 启动应用:

    pm2 start ecosystem.config.js
    
  4. 常用 PM2 命令:

    • pm2 list: 查看所有应用状态
    • pm2 logs neo-bot: 查看日志
    • pm2 restart neo-bot: 重启应用
    • pm2 stop neo-bot: 停止应用
    • pm2 startup: 设置开机自启

3. 禁用热重载

热重载功能在开发时非常有用,但在生产环境中会带来不必要的性能开销和潜在的不稳定性。

在部署前,建议您在 main.py注释掉或移除与 watchdog 相关的文件监控代码。

修改 main.py:

# main.py

async def main():
    # ...
    
    # 生产环境中禁用文件监控
    # loop = asyncio.get_running_loop()
    # event_handler = PluginReloadHandler(loop)
    # observer = Observer()
    # if os.path.exists(plugin_path):
    #     observer.schedule(event_handler, plugin_path, recursive=True)
    #     observer.start()
    #     logger.info(f"已启动插件热重载监控: {plugin_path}")
    
    try:
        # ...
    finally:
        # if observer.is_alive():
        #     observer.stop()
        #     observer.join()

遵循以上步骤,您就可以将 NEO Bot 机器人稳定、高效地部署在生产服务器上。