如何在云服务器部署Python Telegram Bot?(不使用Heroku类服务)
部署python-telegram-bot机器人到云服务器/虚拟主机步骤
一、服务器基础准备
- 选择支持SSH登录的云服务器(如阿里云、腾讯云ECS)或虚拟主机,优先选Ubuntu/Debian系统(命令通用性强)。
- 通过SSH连接服务器:
ssh 用户名@服务器公网IP,使用密码或密钥完成登录。
二、配置Python环境
更新系统软件包
- Ubuntu/Debian:
sudo apt update && sudo apt upgrade -y - CentOS/RHEL:
sudo yum update -y
- Ubuntu/Debian:
安装Python3和pip
- Ubuntu/Debian:
sudo apt install python3 python3-pip -y - CentOS/RHEL:
sudo yum install python3 python3-pip -y
- Ubuntu/Debian:
安装指定版本的python-telegram-bot
执行命令安装v20.0a2版本:pip3 install python-telegram-bot==20.0a2若需要环境变量管理工具,可额外安装:
pip3 install python-dotenv
三、部署机器人代码
上传代码到服务器
- 方式1:用SCP直接传输本地代码:
scp /本地代码路径/your_bot.py 用户名@服务器IP:/服务器目标路径/ - 方式2:通过Git拉取代码(需先将代码上传到GitHub/GitLab):
git clone 你的代码仓库地址
- 方式1:用SCP直接传输本地代码:
配置机器人Token
- 推荐用
.env文件存储Token(避免硬编码泄露):在代码目录创建.env文件,写入:TELEGRAM_BOT_TOKEN=你的机器人Token - 在代码中读取Token(需已安装python-dotenv):
from dotenv import load_dotenv import os load_dotenv() TOKEN = os.getenv("TELEGRAM_BOT_TOKEN")
- 推荐用
测试运行
进入代码目录,执行启动命令:python3 your_bot.py测试机器人能否正常响应消息,确认无报错后再进行后台部署。
四、后台运行与开机自启
方式1:用nohup临时后台运行(适合快速测试)
执行命令让进程在后台运行,日志输出到bot.log:
nohup python3 your_bot.py > bot.log 2>&1 &
- 查看进程:
ps aux | grep python3 - 停止进程:
kill 进程ID
方式2:用systemd管理(生产环境推荐,稳定可靠)
- 创建systemd服务文件:
sudo nano /etc/systemd/system/telegram-bot.service - 写入以下内容(替换路径和用户信息):
[Unit] Description=Telegram Bot Service After=network.target [Service] User=botuser # 建议用普通用户,而非root,可先创建:sudo adduser botuser WorkingDirectory=/home/botuser/your-bot-code # 代码所在目录 ExecStart=/usr/bin/python3 /home/botuser/your-bot-code/your_bot.py # 代码文件路径 Restart=always # 进程崩溃自动重启 RestartSec=5 [Install] WantedBy=multi-user.target - 保存并退出(nano中按
Ctrl+O回车,再按Ctrl+X) - 启动服务并设置开机自启:
sudo systemctl start telegram-bot sudo systemctl enable telegram-bot - 查看服务状态与日志:
- 状态:
sudo systemctl status telegram-bot - 实时日志:
sudo journalctl -u telegram-bot -f
- 状态:
五、日常维护
- 更新代码:修改代码后上传到服务器,执行
sudo systemctl restart telegram-bot重启服务。 - 日志监控:定期查看日志文件或journalctl输出,排查运行异常。
- 安全建议:使用普通用户运行机器人,定期更新系统和依赖包;若使用Webhook模式,需配置SSL证书确保通信安全。
内容的提问来源于stack exchange,提问作者AhmadRezaMozafari
相关产品推荐
相关产品推荐

