微信小程序開(kāi)發(fā)——本地調(diào)試

在我們開(kāi)發(fā)小程序時(shí),可能小程序端和后臺(tái)是同時(shí)開(kāi)發(fā)的,這種情況下,如果后臺(tái)代碼寫(xiě)一點(diǎn),再部署到服務(wù)器,然后再調(diào)試小程序,會(huì)很繁瑣。而很多小程序api又必須要經(jīng)過(guò)騰訊服務(wù)器,再轉(zhuǎn)發(fā)到我們自己的后臺(tái),這就要求我們的后臺(tái)能夠被外網(wǎng)訪(fǎng)問(wèn)到。前段時(shí)間寫(xiě)小程序時(shí)嘗試過(guò)幾種方法,這里簡(jiǎn)單介紹一下。

? 首先,對(duì)于那些不需要調(diào)用類(lèi)似用戶(hù)登錄這些必須要appid的功能,我們可以直接在創(chuàng)建項(xiàng)目的時(shí)候,不填appid,這樣小程序就不受合法域名的限制,可以直接訪(fǎng)問(wèn)我們局域網(wǎng)內(nèi)部的后臺(tái)。

? 而對(duì)于用戶(hù)登錄、微信支付等這些api,必須要appid,也必須通過(guò)騰訊的服務(wù)器,這時(shí)候我們就必須讓我們的后臺(tái)能被外網(wǎng)訪(fǎng)問(wèn)到,而且在合法域名配置里面,只能是https。一般我們?cè)陂_(kāi)發(fā)時(shí),肯定都已經(jīng)買(mǎi)好了外網(wǎng)服務(wù)器(比如阿里云ecs),配置什么的也不是本文重點(diǎn),本文假設(shè)你已經(jīng)有一臺(tái)ecs,備案、ssl證書(shū)什么的都搞定了。以下是幾種方案:

  1. 直接使用外網(wǎng)服務(wù)器

    ? 常規(guī)流程,后臺(tái)代碼部署到服務(wù)器,然后小程序調(diào)試。上面已經(jīng)提過(guò),缺點(diǎn)很明顯。但如果說(shuō)你們的需求很明確,后臺(tái)能很快寫(xiě)完,而且不需要經(jīng)常修改,可以這么做。說(shuō)點(diǎn)題外話(huà),對(duì)于部署這部分,可能很多都是本地打包好,比如打包成jar,然后scp或者ftp上傳到服務(wù)器,然后再運(yùn)行。我覺(jué)得可以在服務(wù)器上配置git,直接把代碼托管到服務(wù)器也行,或者代碼在碼云等平臺(tái)的話(huà),在服務(wù)器上用git pull下來(lái)也行,然后直接服務(wù)器運(yùn)行代碼,等后臺(tái)穩(wěn)定后再打包運(yùn)行,我覺(jué)得這么做比較好,因?yàn)槊看未虬紩?huì)花不少時(shí)間。當(dāng)然用docker之類(lèi)的當(dāng)我沒(méi)說(shuō)。

  2. 使用一些內(nèi)網(wǎng)穿透工具

    ? 以前我有用過(guò)一些,ngrok、ittun(基于ngrok)、localtunel ( nodejs ) 都有用過(guò)。優(yōu)點(diǎn)是比較方便,不需要太多配置,但缺點(diǎn)也很明細(xì),不穩(wěn)定。你也可以自己構(gòu)建ngrok。

  3. 通過(guò)外網(wǎng)服務(wù)器轉(zhuǎn)發(fā)到本地服務(wù)器(推薦這種方法)

    ? 這種方法我是最近用過(guò)的,感覺(jué)效果很不錯(cuò),穩(wěn)定,速度快,但我的服務(wù)器是centos, 不知道win server上有沒(méi)有類(lèi)似的。

    ? 首先,開(kāi)啟服務(wù)器的遠(yuǎn)程轉(zhuǎn)發(fā)功能,在/etc/ssh/sshd_config文件末尾加入一句:GatewayPorts yes,然后重啟ssh:sudo systemctl restart sshd.

    ? 然后本地環(huán)境安裝xshell,這里借助它的隧道功能來(lái)轉(zhuǎn)發(fā)。具體的是在屬性>連接>ssh>隧道里面添加一條轉(zhuǎn)發(fā)規(guī)則,比如把服務(wù)器上面的80端口轉(zhuǎn)發(fā)到本地80端口。

    ? 重啟xshell,當(dāng)xshell連接上服務(wù)器時(shí),服務(wù)器上面到80端口的請(qǐng)求就可以轉(zhuǎn)發(fā)到本地80端口了。

    ? 接下來(lái)要解決的是,小程序只能訪(fǎng)問(wèn)https,那我們只需要把ssl:443端口轉(zhuǎn)發(fā)到http:80端口就ok了,直接上nginx部分配置:

    location /admin/ {
      proxy_pass http://localhost/admin/;
    }
    location /image/ {
      proxy_pass http://localhost/image/;
    }
    location /api/ {
      proxy_pass http://localhost/api/;
    }
    

    ? 這樣配置比較有針對(duì)性,比如admin是管理員后臺(tái)接口,給web端調(diào)用,image為圖片路徑,api給小程序調(diào)用。當(dāng)然也可以直接所有的都轉(zhuǎn)發(fā):

    location / {
      proxy_pass http://localhost;
    }
    

    ? 或者說(shuō)你有一個(gè)正常運(yùn)行的版本已經(jīng)在服務(wù)器上運(yùn)行,還需要再配置一個(gè)開(kāi)發(fā)的時(shí)候用,可以這么來(lái):

    location /dev/ {
      proxy_pass http://localhost/;
    }
    

    ? 當(dāng)然道理都一樣,你甚至還可以只在一臺(tái)服務(wù)器上面配置ssl,然后給不同的后臺(tái)配置不同的轉(zhuǎn)發(fā)路徑,這樣其他后臺(tái)就不用上ssl了,前提是服務(wù)器負(fù)載沒(méi)問(wèn)題。當(dāng)然我也就隨口一說(shuō),哈哈。

    ? 最近有點(diǎn)想換工作,可又不想寫(xiě)簡(jiǎn)歷,真特么煩 ?。?!

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Spring Cloud為開(kāi)發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見(jiàn)模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,578評(píng)論 19 139
  • 上一篇《WEB請(qǐng)求處理一:瀏覽器請(qǐng)求發(fā)起處理》,我們講述了瀏覽器端請(qǐng)求發(fā)起過(guò)程,通過(guò)DNS域名解析服務(wù)器IP,并建...
    七寸知架構(gòu)閱讀 81,760評(píng)論 21 356
  • Nginx簡(jiǎn)介 解決基于進(jìn)程模型產(chǎn)生的C10K問(wèn)題,請(qǐng)求時(shí)即使無(wú)狀態(tài)連接如web服務(wù)都無(wú)法達(dá)到并發(fā)響應(yīng)量級(jí)一萬(wàn)的現(xiàn)...
    魏鎮(zhèn)坪閱讀 2,214評(píng)論 0 9
  • 有時(shí)候從心底里衍生出來(lái)的無(wú)奈與絕望,無(wú)法與人言說(shuō),也不必言說(shuō)。
    鴕鳥(niǎo)姑娘閱讀 195評(píng)論 0 0
  • 傍晚時(shí)分,落日的余暉雖然少了些許的熱度,但還是有點(diǎn)刺眼。 上官飛燕正在看熱播的武俠劇,思緒飄到劇中的情懷之中。突然...
    天水訟閱讀 420評(píng)論 0 3

友情鏈接更多精彩內(nèi)容