腾讯云搭建个人订阅号服务器
用腾讯云作为个人订阅号后端服务器
腾讯云服务
- 进入腾讯云 官网,购买轻量云服务器即可,我购买的65元/年,镜像系统为Ubuntu 20.04
- 购买后进入控制台,进入自己购买的轻量应用服务器,重置密码,开启服务器
- 使用Tabby、xshell等远程进行远程连接,默认用户名为ubuntu,使用
sudo su
切换到管理员身份运行
Nginx配置(非必需)
使用Nginx 进行反向代理
# install Nginx
sudo apt-get install nginx
sudo /etc/init.d/nginx start #启动nginx
sudo /etc/init.d/nginx stop # 停用nginx
sudo systemctl status nginx # 查看nginx运行状态
sudo rm /etc/nginx/sites-enabled/default #删除默认配置
sudo touch /etc/nginx/sites-available/wechat_connector#建立项目文件
sudo ln -s /etc/nginx/sites-available/wechat_connector/etc/nginx/sites-enabled/wechat_connector #设置软链接
sudo vim /etc/nginx/sites-enabled/wechat_connector #编辑项目文件
# 添加以下配置文件
server {
server_name localhost; # 个人域名
listen 80; # 端口
location /weixin {
# 代理端口,此处需要在云服务器安全组开启8000端口
proxy_pass http://127.0.0.1:8000;
}
}
安装完成后进入http://ip:80即可看到如下画面表示安装成功:
Miniconda配置
整个内容的交互基本通过Python完成,此处安装miniconda3 创建单独的Python环境
sudo apt-get upgrade
sudo apt-get update
cd /home
# install miniconda package
sudo wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh
sh Miniconda3-latest-Linux-x86_64.sh
export PATH=/root/miniconda3/bin:$PATH # 添加环境变量
source /root/.bashrc # 环境变量生效
echo $PATH # 输出环境变量,安装完成后重新连接服务器进入root
# create python env
conda create -n wechat python=3.8 ipykernel
conda activate wechat
pip install werobot
screen使用
为保证后台进程的运行,需要在后台开启,这里我使用简单的screen
包运行多个命令后台,更推荐使用Supervisor
守护进程:
sudo apt-get install screen
# screen基本命令
screen -S SessionName # 创建为name的会话
screen -ls # 查看所有会话
screen -r **** # 重新连接会话
screen -S **** -X quit # 删除会话
crtl + a + d # 退出会话
killall screen # 关闭所有进程
werobot
- 关于订阅号后台消息与用户的互动,这里我们主要使用Python的Werobot 包,此处连接服务的常用配置参数有:
SERVER="auto",
HOST="0.0.0.0",
PORT="80",
SESSION_STORAGE=None,
APP_ID="your APP_ID",
APP_SECRET="your_APP_SECRET",
ENCODING_AES_KEY="XWbRw4lacZrkfhslfldsjflsdjflds02t3"
- 其中的HOST和PORT为服务器的公网IP以及80端口,开发者ID和APPSecret登录进入个人订阅号 的基本配置即可查看,忘记密码直接重置即可
- 接着点击修改配置,记录EncodingAESKey:
简单对话机器人
功能描述:此处机器人为一个计算器,收到1+2+3类似输出结果,其他则输出“Please try again!”,运行vim /home/ubuntu/robot.py,添加以下代码:
import re
import werobot
from werobot.replies import TextReply, ImageReply, VoiceReply, SuccessReply
from werobot.replies import ArticlesReply, Article, SuccessReply, MusicReply
# 输入微信公众平台请求凭证
robot = werobot.WeRoBot(token='your token') # 写入服务器配置填写的 Token
def cal(str):
try:
result = str(eval(str))
except:
result = 'Please try again!'
return result
# @robot.text 修饰的 Handler 只处理文本消息
@robot.text
def reply_text(message):
print(message.content)
return cal(message.content)
robot.config.update(
SERVER="auto",
HOST="0.0.0.0",
PORT="80",
SESSION_STORAGE=None,
APP_ID="your APP_ID",
APP_SECRET="your_APP_SECRET",
ENCODING_AES_KEY="XWbRw4lacZrkfhslfldsjflsdjflds02t3"
)
robot.run()
screen -S wechat
conda activate wechat
python robot.py
# ctrl+a+d 退出
注意:使用过程重复发消息会导致阻塞,使用ps -fA | grep python
进行查询,并使用kill对应进程,具体可参考StackOverflow
。
💬 评论