[基于Python的微信公众号后台开发:1]配置对接阿里云服务器

news/2024/11/15 6:14:45/

文章目录

      • 1、先准备好一台ECS服务器
      • 2、安装宝塔面板
      • 3、新建站点
      • 4、配置Nginx
      • 5、服务器安装Flask和Gevent
      • 6、敲代码
      • 7、跑起来
      • 8、提交服务器配置
      • 9、测试
      • 10、POST参数解密

1、先准备好一台ECS服务器

1-1.png

2、安装宝塔面板

新手上路推荐装上宝塔面板,这样管理起来比较方便,里面的功能也齐全,可以省去很多敲复杂命令和解决报错的时间,宝塔面板官网为 bt.cn ,操作系统不同,安装的命令也会不同,可以参照官网给的教程进行安装,在这里我就不详细介绍了,有不懂的问题可以私信我哈

3、新建站点

在宝塔面板安装好Nginx,然后新建一个站点,绑定好域名,同时记得到阿里云后台解析好域名
1-2.png

4、配置Nginx

在 配置文件 这里,滑到最底下,在红框2的位置添加以下代码,注意缩进,保持与原文件格式一致
添加此配置的作用是让Nginx把根目录映射到内网的5000端口,当有人输入域名访问时直接链接到此端口

location / {proxy_pass http://[此处替换服务器的内网IP地址]:5000;}

ps:不想用根目录的话也可以用其他目录,如:http://域名/wx等,修改为以下代码即可

location /wx {proxy_pass http://[此处替换服务器的内网IP地址]:5000;}

1-3.png

5、服务器安装Flask和Gevent

安装命令

pip install flask
pip install gevent

6、敲代码

根据个人习惯哈,可以在服务器SSH上直接用VIM写,我的话习惯在本地用Pycharm写好然后上传到服务器来跑

  • 参照Flask官方给的技术文档 (https://dormousehole.readthedocs.io/en/1.1.2/quickstart.html#id2) ,写个最小应用
    1-4.png
  • 同时也参照微信公众平台官方给的技术文档 (https://developers.weixin.qq.com/doc/offiaccount/Basic_Information/Access_Overview.html) ,根据所给参数和工序编写逻辑代码
    1-5.png
from flask import Flask, request, abort
from gevent import pywsgi
import hashlibflask_app = Flask(__name__)@flask_app.route('/', methods=["GET", "POST"])
def home():# 微信服务器发来的三个get参数signature = request.args.get("signature")timestamp = request.args.get("timestamp")nonce = request.args.get("nonce")# 公众号后台自己填写的tokentoken = "[此处替换Token]"# 加进同一个列表里list1 = [token, timestamp, nonce]# 排序list1.sort()# 把列表转换成字符串str1 = "".join(list1)# 生成sha1值sha1_str = hashlib.sha1(str1.encode("utf-8")).hexdigest()# 与signature参数比对# 若不一致if signature != sha1_str:# 被认定为非微信服务器发来的get请求# 返回403拒接请求abort(403)# 若一致else:# 判断# 若为get请求则认定为开发者第一次配置服务器if request.method == "GET":# 定义echostr参数echostr = request.args.get("echostr")# 判断get参数中是否含有echostr参数if echostr:# 若存在则按官方文档要求原样返回return echostr# 若不存在则返回400错误请求else:abort(400)if __name__ == '__main__':# 此配置解决WSGI报错问题server = pywsgi.WSGIServer(('0.0.0.0', 5000), flask_app)server.serve_forever()

7、跑起来

这边我把文件命名为launch.py,然后跑起来
命令

python launch.py

回车后下面不报错就没问题了

8、提交服务器配置

到微信公众平台,进入配置页面
1-6-.png
填写URL、Token、EncodingAESKey和选择消息加密方式

  • URL:填写服务器绑定的域名
  • Token:随便写一个,稍微带点难度就可以
  • EncodingAESKey:建议随机生成,也可以自己写,难度要尽量大
  • 消息加密方式:根据不同的需求和场景选择,建议选择安全模式,我这边也选择安全模式
    填写好点击提交
    1-7.png
  • 顶部提示提交成功,然后点击启用,那么恭喜你配置成功
  • 顶部提示提交失败,在服务器上找找问题,比如:http或https是否写错、检查服务器入方向端口是否开放,服务器防火墙是否关闭、是否允许外网设备访问等等

9、测试

在微信给自己的公众号发几条消息看看服务器有没有收到
1-8.jpg
回到SSH窗口

  • 若发出消息后立刻有微信服务器的POST请求过来,则为测试成功
    1-9.png
  • 若没有POST请求过来,请检查此.py文件是否跑起来等

10、POST参数解密

请看下期


http://www.ppmy.cn/news/699748.html

相关文章

从零开发微信公众号(PC)

框架使用Express,开发前先下载Express到项目目录 npm i express //下载Express框架 npm i //下载框架所需的依赖 内网穿透,因为微信服务器需要访问到你的服务器域名,每次开机测试都要运行穿透软件 (113条消息) sunny-ngrok 的…

linux 的ps 参数设置,Linux中 ps命令的参数讲解

Linux命令ps: (Process Status的缩写)该命令常常用来用来列出系统中当前运行的进程。ps是显示瞬间进程的状态,并不动态连续;如果想对进程进行实时监控应该用top命令 -a 显示所有终端机下执行的进程,除了阶段作业领导者之外。 a 显…

长连接方案及相关概念、技术

长连接方案及相关概念、技术 1. 概念1.1. socket1.2. websocket1.2.1. websocket 集群方案 1.3. webservice1.3.1. 概念1.3.2. 首先,还是看各种文档资料,熟悉一下什么是webservice、为什么、怎么做1.3.3. 然后就是动手搞事(代)情(码)~ 1.4. RESTful1.4.1…

手把手教你--JAVA微信支付(公众号支付JSAPI)

自己的第一篇博客,请各位看官海涵! JAVA开发微信支付-公众号支付/微信浏览器支付(JSAPI) 写这篇文章的目的有2个,一是自己的项目刚开发完微信支付功能,趁热回个炉温习一下,二也是帮助像我这样对微信支付不熟悉,反复看了多天文档还是一知半解,原理都没摸…

mysql远程链连接oracle_linux远程连接oracle数据库命令

Linux 常用操作总结 1.linux下启动和关闭weblogic ssh远程连接Linux服务器 a.startt weblogic:1)找到/Oracle/Middleware/user_projects/domains/用户_domain目录。2)执行 nohup ./startWebLogic.sh(nohup... 文章 shy丶gril 2016-05-20 1272浏览量 Linux+Oracle环境下如何将A…

通过链接关注微信公众号

小刀拉屁股,让你开开眼!!! 1. 首先登陆微信公众平台 地址:https://mp.weixin.qq.com/ 2. 在这个页面右键查看网页源代码 3. 然后全局搜索"uin_base64",图中有机密信息所以打了马赛克,然后复…

公众号开发需要注意的几个小问题

背景: 上一篇博客回忆了下公众号开发的基本流程,这篇博客记录下遇到的几个小问题吧。ps:实际开发当然不止这点问题。。 1.通过code获取openid时报错 {"errcode":40163,"errmsg":"code been used, hints: [ req_id:…

python批量下载公众号历史文章(二)

【背景】 在上一个版本里,实现了半自动的下载,需要通过手工进行抓包操作。通过fiddler截获历史文章raw文件保存到本地;通过python进行解析,获得文章信息(含访问url、标题、发布时间等)的列表;然…