返回首页

8 分钟部署 Telegram 机器人 | 开发者指南

在 VPS 上 8 分钟部署 Telegram 机器人的实用指南。详细服务器设置、通过 SFTP 项目传输、PM2 自动启动配置。解决常见部署问题。

如何在 8 分钟内部署 Telegram 机器人:实用指南
Advertisement 728x90

# 在 VPS 上快速部署 Telegram 机器人:从本地运行到全天候在线

你已经开发好了你的 Telegram 机器人,但本地运行无法保证持续可用性。大多数开发者在部署到生产环境时感到困惑,被 Docker 和 Kubernetes 等海量信息淹没。其实,你只需 8 分钟和最少资源就能部署。本指南展示如何在廉价 VPS 上部署 aiogram 机器人,无需复杂设置,只用基本 Linux 工具。

准备基础设施

选择云提供商对机器人可靠运行至关重要。Timeweb Cloud 提供 12 个地理区域的服务器访问,包括俄罗斯以外的位置。这对于使用在俄罗斯被封锁的 API(Groq、ChatGPT 等人工智能服务)至关重要。对于无外部依赖的机器人,俄罗斯数据中心即可。

关键服务器参数:

Google AdInline article slot
  • 操作系统:Ubuntu 24.04 LTS
  • 配置:最低(1 vCPU、1 GB RAM、25 GB SSD)
  • 费用:从 290 ₽/月起
  • 备份:建议启用

创建实例时,检查备份选项。备份可防护:

  • 服务器崩溃
  • SQLite 数据库损坏
  • 代码更新错误
  • 意外文件删除

Timeweb 的备份系统允许你从过去 7 天每 24 小时的备份中恢复项目状态。这在测试新功能时防止数据丢失至关重要。

设置服务器环境

激活服务器后,通过 SSH 连接:

Google AdInline article slot
ssh root@your_IP_address

更新系统包并安装所需组件:

sudo apt update && sudo apt upgrade -y
sudo apt install python3 python3-pip git -y
npm install pm2 -g

重要提示:在安装依赖前检查 Python 版本:

python3 --version

对于使用虚拟环境的的项目,运行:

Google AdInline article slot
python3 -m venv venv
source venv/bin/activate
pip install -r requirements.txt

传输项目并启动

使用 SFTP 传输文件。在 FileZilla 中输入:

  • 主机:服务器 IP 地址
  • 用户名:root
  • 密码:从控制面板获取
  • 端口:22

复制项目到服务器后:

  • 进入项目目录
  • 激活虚拟环境
  • 安装依赖
  • 通过 PM2 启动机器人
cd /root/your_project
source venv/bin/activate
pm2 start main.py --name "telegram-bot"

PM2 确保重启后自动重启并监控崩溃。检查进程状态:

pm2 status

维护和更新

进行代码更改时,严格遵循此清单:

  • 通过 SFTP 编辑文件(FileZilla → 查看/编辑)
  • 保存更改(Ctrl+S)
  • 在 FileZilla 中确认同步
  • 在 PM2 中重启进程
pm2 restart telegram-bot

排查问题时,使用:

  • pm2 logs — 查看实时日志
  • pm2 monit — 监控资源
  • pm2 resurrect — 崩溃后恢复

关键要点

  • 始终使用 .env 存储令牌
  • 每 24 小时设置自动备份
  • 在独立分支测试更新
  • 使用 htop 监控内存使用
  • 定期更新系统包

性能优化

对于高负载机器人(超过 1000 名活跃用户),推荐步骤:

  • 设置交换文件
sudo fallocate -l 2G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
  • 限制 PM2 资源

在 ecosystem.config.js 中:

module.exports = {
  apps: [{
    name: 'telegram-bot',
    script: 'main.py',
    instances: 1,
    autorestart: true,
    max_memory_restart: '300M'
  }]
}
  • 防火墙设置
sudo ufw allow OpenSSH
sudo ufw allow 22/tcp
sudo ufw enable

新手常见错误是未使用守护进程运行机器人。关闭 SSH 会话会导致进程终止。PM2 解决此问题,但需正确配置自动启动:

pm2 startup
sudo env PATH=$PATH:/usr/bin pm2 startup systemd -u root --hp /root

为可用性监控,在机器人代码中添加简单健康检查端点:

from aiogram import Router

router = Router()

@router.message(Command('health'))
async def health_check(message: Message):
    await message.answer('Bot is running')

定期检查日志中的 Telegram API 连接错误。常见问题:

  • .env 中的无效令牌
  • IP 地址被封锁
  • 超过速率限制
  • Webhook 处理错误

使用 webhook 时,设置 Nginx 作为反向代理并配置 SSL 证书。对于低负载机器人,轮询模式足够,无需额外基础设施。

— Editorial Team

Advertisement 728x90

继续阅读