今天把之前开发的公众号代码从新浪云服务器转移到阿里云服务器了,期间在配置微信公众号的url时遇到一些问题,耽误了一些时间,下面简要介绍一下。
之前在新浪云服务器,按照官方提供的一些开发配置文档,很轻松的就配置成功了,具体方法可参考链接:http://blog.csdn.net/u010483897/article/details/78051785
今天放到阿里云服务器上,代码原封不动,想着应该只是配置需要修改一下,其实也就只有微信服务器的URL地址需要变动一下而已,代码是没必要修改的。其中,main.py的代码展示如下,因为后面介绍的会跟这部分代码有关:
import web
from handle import Handle
urls = ('/wx', 'Handle',)
if __name__ == '__main__':
app = web.application(urls, globals())
app.run()
其中的handle.py文件里面有一个Handle类,用来处理GET和POST请求。
但是我按照最初的思维,修改了一下url为:http://X.X.X.X/weChat(其中X.X.X.X为我阿里云服务器的ip地址,weChat是我的项目在阿里云服务器上面的文件夹名称),然后运行阿里云服务器上的代码:python main.py
显示如下:
注意上面图片中最下面一行:http://0.0.0.0:8080/,可以看出,阿里云服务器默认监听的是8080端口,但是公众号发送的消息是发送到80端口的,所以此处阿里云服务器是收不到公众号服务器发送来的消息的。最开始,我查了好多文章,大都是说的好复杂啊,甚至使用Nginx将80端口的消息映射到8080端口的,但是我还是采取了最笨的也是最简单的方法,即启动程序时设定端口:python main.py 80。此时,启动页面如下:
已经可以监听80端口了。
之后点击微信公众号配置提交按钮,却显示:Token验证失败,同时阿里云服务器显示如下:
可以看出,明显的微信公众号后台发来的请求,没有根据填写的URL找到相应的内容。又修改URL为:http://X.X.X.X/weChat/wx,还是不行。明明main.py函数里面已经把wx映射到Handle类里面了,觉得应该可以运行GET函数,返回Token了,但是的的确确是找不到这些内容。
后来,多次修改URL和main.py函数,终于成功了。修改方法是:修改main.py函数的:
urls = ('/weChat', 'Handle',)
具体针对网上有很多别的方法配置的,我觉得都好难。