腾讯云+CentOS 7.2+python:搭建微信公众号后台入门教程
因為想自己編寫微信公眾號后臺的程序,實現一些小功能,為以后的開發做準備,所以就從零開始,摸索著注冊微信公眾號,租用服務器,搭建環境進行開發。
簡單的搭建過程中也經歷了一些波折,踩了不少坑,僅留此文給跟我類似的沒有相關經驗的朋友進行參考,可能出現的紕漏請多多包涵。
查找資料的時候,發現微信后臺服務器配置的資料大多都是有關第三方平臺,所以寫下篇記錄作為記錄和參考。
本文提及的相關經驗僅適用于:利用騰訊云服務器、CentOS 7.2系統、python腳本搭建公眾號后臺。
參考微信公眾平臺技術文檔的總體思路進行展開:
1.申請服務器
因為想著租用服務器的主要目的是微信公眾平臺開發,所以直接選擇了騰訊云服務器(可供選擇的還有阿里、新浪等,似乎用新浪的服務器搭建微信后臺更簡便?網上例程挺多的搜“SAE” “微信公眾號”就能找到不少資料).
要注意的是,官方文檔中提到的學生優惠“云+校園計劃”現在已經失效了,之前優惠購買的學生用戶可以繼續獲得優惠券,以優惠價格虛購至畢業?,F在購買只能按統一的價格結算,不過具體結算時有一點點優惠。
服務器購買可以參考這里,因為對服務器要求不高,主要是自己跑程序,我買的是最低價格的配置。
接下來是選擇鏡像,直接選擇了官方推薦的CentOS 7.2 64位操作系統。
再下一步是選擇存儲與網絡,可以根據自己的需求選擇,最后是設置信息,重點是設置自己的密碼。
此外還可以在這里按需要選擇安全組(安全組與開放端口有關),這里不確定也沒有關系,后期可以再重新修改和設置安全組。
最后付款就可以完成服務器的租用流程。
關于Linux服務器的詳細配置中如果有疑問,可以參考官方鏈接
2.搭建服務
這一步的主要任務是安裝需要的軟件,官方指南里提到的需要安裝或者更新的軟件有:
python2.7版本以上
web.py
libxml2, libxslt, lxml python
熟悉的話可以直接進入服務器進行配置,首次接觸可以參考以下步驟:
①在控制臺中查看自己的云主機,點擊“登錄”,在彈出框中分別輸入自己的用戶名和密碼登錄云主機。
使用這個界面登錄云主機需要先登錄騰訊云,操作比較麻煩,可以使用Xshell登錄騰訊云。
具體方法網上有很多教程,比如成航先森的這篇用Xshell登錄騰訊云Linux云服務器,不過經過測試,既可以使用用戶名+密碼的模式登錄,也可以使用SSH秘鑰。
②安裝和更新軟件
騰訊云提供了Yum下載源,在CentOS環境下可以通過Yum愉快地安裝和更新軟件。
可參考的幫助文檔在這里。
這里有坑:
a. 部分文檔中推薦安裝 mysql-server ,我在嘗試安裝的時候會出現失敗,網上資料表示改為mariadb-server mariadb-libs mariadb即可。更改后成功安裝。
b. 當時我并沒有通過yum成功安裝web.py 最后是通過easy_install安裝成功的
//安裝setuptools wget -q http://peak.telecommunity.com/dist/ez_setup.py python ez_setup.py //安裝web.py easy_install web.py
新建main.py文件,如下:
vim main.py輸入i 進入編輯狀態,可直接把官方例程拷貝到編輯器內:
# -*- coding: utf-8 -*- # filename: main.py import weburls = ('/wx', 'Handle', )class Handle(object):def GET(self):return "hello, this is a test"if __name__ == '__main__':app = web.application(urls, globals())app.run()退出編輯狀態時按esc 再依次輸入:wq 保存并退出。
④運行腳本
a. 為腳本增加執行權限:
chmod u+x main.pyb.運行腳本 sudo python main.py 80
80表示使用80端口,在寫好腳本并運行后,我一直不能通過“http://自己服務器外網IP:80/wx”訪問服務器并查看到腳本里返回的“hello,this is a test”。
我在這里困了很長時間,后來突然想到,自己的服務器是不是沒有打開80端口。于是打開服務器安全組查看,果然只打開了22端口(因為出于安全考慮,官方推薦配置linux服務器只打開22端口)。
到這里,新建一個開放所有端口的規則就可以了,然后關聯實例,選擇自己的云主機。規則本身是按時間遠近順序進行覆蓋的,所以配置好后再訪問“http://自己服務器外網IP:80/wx”,就ok了。
3.申請公眾號
略過
4.進行開發者配置
①修改main.py的內容
# -*- coding: utf-8 -*- # filename: main.py import web from handle import Handleurls = ('/wx', 'Handle', )if __name__ == '__main__':app = web.application(urls, globals())app.run()②新建handle.py # -*- coding: utf-8 -*- # filename: handle.pyimport hashlib import webclass Handle(object):def GET(self):try:data = web.input()if len(data) == 0:return "hello, this is handle view"signature = data.signaturetimestamp = data.timestampnonce = data.nonceechostr = data.echostrtoken = "xxxx" #請按照公眾平臺官網\基本配置中信息填寫list = [token, timestamp, nonce]list.sort()sha1 = hashlib.sha1()map(sha1.update, list)hashcode = sha1.hexdigest()print "handle/GET func: hashcode, signature: ", hashcode, signatureif hashcode == signature:return echostrelse:return ""except Exception, Argument:return Argument
這里的token填寫一個字符串,相當于一個暗號,長度3-32位,沒有具體的要求,寫好后記下來,比如官方例程中的hello2016。
登錄自己注冊的公眾號,在左側“開發”中選擇“基本配置”。
點擊修改配置:
在url中輸入:http://外網IP:端口號/wx
token:輸入自己在程序中設置好的暗號,如hello2016
Encoding AESKey:點擊隨機生成
成功后點擊提交即可。
這里有坑:
我一直使用chrome瀏覽器,每次點擊提交之后,系統上方出現提示:“系統發生錯誤,請稍后重試”,在網上搜了很久都沒有找到類似的問題以及解決方法。
但使用瀏覽器直接訪問的時候,網頁響應內容(“hello, this is handle view”)是沒有問題的。
第二天又試了一下,依然報錯,于是在微信上找了騰訊客服,可是對方把我的問題升級之后((⊙﹏⊙) 也不知道"已升級"是個什么鬼),就暫時沒了回音。
在這里糾結了兩天,突然想到可以從瀏覽器的開發者工具里查看瀏覽器接收的反饋,和有關錯誤類型的信息。
于是找到了這么一句和錯誤有關的信息:
{"base_resp":{"ret":-1,"err_msg":"system error"}}
硬著頭皮把這句話丟到網上搜了一下,看到唯一相關的信息里,有人說是瀏覽器的原因,說是使用qq瀏覽器之后問題就解決了。
馬上下了一個QQ瀏覽器試了一下,問題依然,沒有活得更多有價值的線索。
這時候看到自己測試網頁的時候經常用的瀏覽器(Google Chrome Canary),俗稱金絲雀,鬼使神差試了一下,居然就提交成功了。
④若要啟用自己的后臺,則點擊啟用。
P.S.最后這個系統錯誤的現象最后通過更換瀏覽器解決了,至于具體原因,騰訊客服暫時還沒有回復我,如果有了明確的回復,后期再來更新。
第一次寫和技術相關的博客,也是第一接觸后臺,把自己遇到的坑記下來,希望可以幫到和我一樣的人。
文中引用的文檔/博客/手冊均已說明。
文中可能有不對的地方,歡迎大家指正。
總結
以上是生活随笔為你收集整理的腾讯云+CentOS 7.2+python:搭建微信公众号后台入门教程的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: mysql存储手机号
- 下一篇: 【Redis】数据结构的应用——GEO