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