手把手教你搭建Mac環境微信小程序的本地測試服務器

問題的提出

  • Mac環境
  • 方便快捷地搭建小程序的測試服務器
  • 小程序對于網絡請求的URL的特殊要求

    • 不能出現端口號
    • 不能用localhost
    • 必須用https

主要步驟

  • 用json-server搭建簡單的服務器,搭建出來的服務器地址為localhonst:3000
  • 安裝nginx進行反向代理,以便隱藏端口號和替換localhost
  • 搭建https服務
  • 微信小程序設置

用到的工具

  • json-server
  • nginx
  • openssl
  • 微信小程序官方開發工具

json-server的使用

  • 安裝
sudo npm install -g json-server
  • 選一個文件目錄新建json文件,比如cars.json
{"cars": [{"id": 1,"desc": "哈弗H6","completed": false},{"id": 2,"desc": "吉利博越","completed": false},{"id": 3,"desc": "寶駿560","completed": false}]
}
  • 啟動json-server服務:在新建的json文件目錄,運行命令:json-server + 文件名
json-server cars.json

輸出:

Loading cars.json
DoneResources
http://localhost:3000/carsHome
http://localhost:3000
  • 瀏覽器中輸入地址http://localhost:3000/cars就能看到輸出cars.json的內容
  • 至此,就搭建了一個簡單的本地測試服務器,json-server支持get,post等,基本足夠開發測試用了,具體的可以參考json-server官網
  • 為了將localhost:3000/todos這樣的接口改成www.test.com/todos這樣的形式,就需要用nginx進行反向代理

用nginx進行反向代理

  • 安裝nginx
brew install nginx

通過以上方式安裝nginx,我的nginx路徑在/usr/local/etc/nginx

  • 瀏覽器中鍵入http://localhost:8080,訪問到nginx的歡迎界面,即表示nginx安裝成功
  • 配置nginx的反向代理:編輯nginx.conf文件
vi /usr/local/etc/nginx/nginx.conf
  • 修改nginx.conf文件中的server{}內容。這里要注意的是,conf文件里面主要有2個server{},一個是默認監聽http請求的8080端口的,另一個是https請求的。其中https server默認是注釋掉的
server {listen       80;//將原來的8080改成80端口,這樣就能隱藏請求中的端口號了server_name  www.test.com;//這里改成你想要的測試域名server_name_in_redirect off;proxy_set_header Host $host:$server_port;proxy_set_header X-Real-IP $remote_addr;proxy_set_header REMOTE-HOST $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;location / {proxy_pass http://127.0.0.1:3000/;//需要代理的地址,這里是我們json-server的默認地址}
}
  • 重啟nginx服務
sudo nginx -s reload //不帶sudo可能會重啟nginx失敗
  • 不要忘記將你的測試域名加入到hosts文件中啊!!!
//hosts文件中添加測試域名
127.0.0.1 www.test.com
  • 經過以上的設置,nginx代理的設置的完成了。啟動json-server后可以用以下方式訪問瀏覽器
localhost/cars
localhost
www.test.com
www.test.com/cars

其他問題

  • nginx常用的命令
//啟動
nginx//重啟
sudo nginx -s reload//關閉
nginx -s stop
  • Mac修改hosts
Finder的“前往”->“前往文件夾” 輸入 /private/etc 按回車  就可以看到里面的hosts文件了。直接右鍵選擇“文本編輯”打開,修改,保存即可。 
  • 配置nginx碰到FT_Select_size:undefined問題
可以嘗試安裝fontconfig庫解決
  • 碰到其他的文件不存在之類的問題,請仔細檢查命令是否輸入正確,配置文件是否修改正確

https服務安裝

  • 利用openssl生成證書
cd usr/local/etc/nginx/conf
設置server.key:openssl genrsa -des3 -out server.key 1024
參數設置:openssl req -new -key server.key -out server.csr
寫RSA秘鑰:openssl rsa -in server.key -out server_nopwd.key
獲取私鑰:openssl x509 -req -days 365 -in server.csr -signkey server_nopwd.key -out server.crt
  • 修改nginx配置文件nginx.conf
server {listen       80;//將原來的8080改成80端口,這樣就能隱藏請求中的端口號了server_name  www.test.com;//這里改成你想要的測試域名//主要是增加下面三行ssl on;ssl_certificate /usr/local/etc/nginx/server.crt;//你的證書地址ssl_certificate_key /usr/local/etc/nginx/server_nopwd.key;//私鑰地址server_name_in_redirect off;proxy_set_header Host $host:$server_port;proxy_set_header X-Real-IP $remote_addr;proxy_set_header REMOTE-HOST $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;location / {proxy_pass http://127.0.0.1:3000/;//需要代理的地址,這里是我們json-server的默認地址}
}
  • 以上配置以后,用http://www.test.com/cars訪問瀏覽器會出現400 bad request的問題,用https://www.test.com/cars又會出現net::ERR_CONNECTION_REFUSED
  • 繼續修改nginx.conf,主要是修改https server{}模塊,主要修改點:

    • 將https server{}模塊注釋去掉
    • 添加ssl相關配置
    • 添加代理設置
# HTTPS server
#
server {listen       443 ssl;server_name  localhost;#    ssl_certificate      cert.pem;
#    ssl_certificate_key  cert.key;ssl_certificate /usr/local/etc/nginx/server.crt;ssl_certificate_key /usr/local/etc/nginx/server_nopwd.key;#    ssl_session_cache    shared:SSL:1m;
#    ssl_session_timeout  5m;#    ssl_ciphers  HIGH:!aNULL:!MD5;
#    ssl_prefer_server_ciphers  on;server_name_in_redirect off;proxy_set_header Host $host:$server_port;proxy_set_header X-Real-IP $remote_addr;proxy_set_header REMOTE-HOST $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;location / {proxy_pass http://127.0.0.1:3000/;root   html;#      index  index.html index.htm;}
}
  • 至此,https服務配置完成,可以在瀏覽器中用https://www.test.com/cars訪問

其他問題

  • Chrome中老是訪問的不是安全的鏈接
需要將我們前面生成的證書crt文件添加到系統證書里面,并設置為一直信任

微信小程序配置

  • 登陸微信小程序管理頁面,設置-->開發設置-->服務器域名-->添加自己的測試域名。需要注意的是一個月只能修改5次
  • 利用微信小程序打開項目,在配置信息中點擊刷新,即可看到剛剛修改的域名
  • 在需要網絡請求的地方添加log打印,以便查看返回的結果信息
wx.request({url: 'https://www.test.com/cars',method:'GET',header: {'content-type': 'application/json'     },success: function (res) {console.log(res.data)}
})
showRequestInfo()
  • 如果一切正常的話,在調試界面的conole下會輸出json-server服務器返回的objects列表,也就是我們編寫的cars.json文件的內容

其他問題

  • 網絡請求服務器API的時候報此服務器的證書無效.
在項目頁面的基礎信息中,勾選下面的“開發環境不校驗請求域名以及TLS版本

以上就是Mac下搭建小程序服務器的過程。


歡迎關注我的微信公眾號,和我一起學習一起成長!
AntDream

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/277065.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/277065.shtml
英文地址,請注明出處:http://en.pswp.cn/news/277065.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

自定義vue-cli生成項目模板配置(1)

最近在讀《變量》,目前得到的認知之一:慢變量才是決定事物長期發展的因素。 打算自定義vue-cli的腳手架或者根據自己的需要設置項目模板的相關參數,很大程度與慢變量這個概念相關。 當然,我還有一個想法或者認知:我的技…

spring cloud 微服務調用--ribbon和feign調用

這里介紹ribbon和feign調用兩種通信服務調用方式,同時介紹如何引入第三方服務調用。案例包括了ribbon負載均衡和hystrix熔斷--服務降級的處理,以及feign聲明式服務調用。例子包括spring boot項目,用來作為第三方服務供ribbon消費和feign消費客…

35歲前把下面十件事做好

35歲是青春的后期,35歲以后是收獲的季節,如果你沒有資格說這句話,你將會憎恨自己。所以在35歲以前,在爛漫蓬勃的青春年華里,你最好把下面十件事做好: 第一,學會本行業所需要的一切知識并有所發展…

Java筆記:包裝類、toString()方法、單例類、比較(==和equals方法)

1.包裝類 1)包裝類為基本數據類型提供了相應的引用數據類型。(基本數據類型-包裝類)btye-Byte,char-Character,short-Short,float-Floatint-Integer,double-Double,long-Long,boolean-Boolean 2)通過包裝類的構造器來實現吧基本數據類型包裝成…

log4j.xml引用Javaweb項目中配置文件的參數

2019獨角獸企業重金招聘Python工程師標準>>> 由于最近用阿里云日志服務整合log4j,在配置com.aliyun.openservices.log.log4j.LoghubAppender需要設置一些參數,因為項目中有統一的配置文件,所以想要可以直接在log4j.xml中通過${}來…

……

快瘋了快瘋了…… 我無非是想找人說話。已經幾天沒有講話了。 轉載于:https://www.cnblogs.com/belial/archive/2007/04/13/711429.html

時間換算單位

時鐘周期是一個時間的量,人們規定10納秒(ns)為一個時鐘周期。時鐘周期表示了SDRAM所能運行的最高頻率。更小的時鐘周期就意味著更高的工作頻率。對于PC100規格的內存來說,它的運行時鐘周期應該不高于10納秒。納秒與工作頻率之間的…

砂 即懶且忙 只有隨筆

B同學說:砂,你已經好久沒更新你的博了。是啊,我即懶且忙。上周六爬了青云山,公司組織的。一直懶得處理照片。拍了將近300張的照片,可到現在也就才弄了那么幾張。我自戀。照片是自拍的。娘說:天吶&#xff0…

.Net Core創建Docker鏡像

1、.Net Core項目【Lails.Server.Demo】發布到目錄下Lails.Server.Demo\bin\Release\netcoreapp2.1\publish2、上面目錄下新建文件Dockerfile:# 父鏡像FROM microsoft/dotnet:2.1-aspnetcore-runtime AS base# 設置工作目錄WORKDIR /app# 復制發布文件到/app下COPY …

[原]變參函數原理詳解

/*變參函數原理說明:va_start就是求得第一個可變參的地址.下面幾個宏的作用:保是來確定可變參數的列表中每個參數的地址.實現變參函數的要點,就是想辦法取得每個參數的地址.*/#include <stdio.h> #include <stdarg.h>#if 0#define va_list void*#define va_arg(arg…

Web服務器的配置方法

Web服務器的配置方法 一、 安裝IIS 1. 進入[控制面板]-[新增/移除Windows元件]&#xff0c;勾選Internet Information Servers(IIS)如圖&#xff0c;在安裝過程中需要插入windows操作系統光盤2. 建立虛擬目錄 右擊[我的電腦]--管理&#xff0c;找到[…

2018年開發者生態體系狀態調查報告(第一部分)

在2018年年初&#xff0c;jetbrains公司通過調查6000名開發者來了解開發者的生態狀態&#xff0c;最近&#xff0c;調查結果終于整理完畢&#xff0c;以下是得出的結果。一、 日常工作1.1&#xff09;流行語言&#xff1a;今年&#xff0c;使用最受歡迎、最常用與最有前途的語言…

面向對象三大基本特性,五大基本原則

透切理解面向對象三大基本特性是理解面向對象五大基本原則的基礎. 三大特性是&#xff1a;封裝,繼承,多態 所謂封裝&#xff0c;也就是把客觀事物封裝成抽象的類&#xff0c;并且類可以把自己的數據和方法只讓可信的類或者對象操作&#xff0c;對不可信的進行信息隱藏。封裝是…

人事薪資管理系統V1.00功能簡介(適用于工廠)c#.net+SQL Server2000

1. 統計管理1.1 工廠員工綜合統計1.2 按月統計生產訂單總金額1.3 按月統計員工工資1.4 按月統計員工計件工資1.5 員工生日排行榜2. 人事管理2.1 增加員工信息2.2 上傳或更換員工照片2.3 確認員工基本薪資&#xff08;含包月&#xff0c;計件&#xff0c;計…

運維工程師主要工作是做什么?

總結兩句話&#xff1a; 1、保障業務長期穩定運行&#xff08;如網站服務器、游戲服務器等&#xff09;。 2、保障數據安全可靠&#xff08;如用戶名密碼、游戲數據、博客文章、交易數據等&#xff09;。 由這兩句話推演運維工程師要學些什么&#xff1f; 一、保障業務長期穩定…

python3.7 安裝cx_Freeze

遇到的問題簡單描述&#xff1a; 1&#xff0c;直接 pip install cz_freeze 安裝失敗 2&#xff0c;pip cx_Free-*.*.*.tar.gz 安裝失敗 解決辦法&#xff1a; 1&#xff0c;下載 cx_Freeze-5.1.1-cp37-cp37m-win_amd64.whl &#xff08;地址&#xff1a;https://www.lfd.uci…

SiteMesh參考

SiteMesh參考 作者&#xff1a;kongxx (kongxxgmail.com)安裝 首先從sitemesh下載安裝包&#xff0c;這里使用的是2.2.1版本。 創建一個Web應用程序&#xff0c;這里我創建一個名為myapp的Web應用程序&#xff1b; 復制sitemesh-2.2.1.jar文件到{myapp}/WEB-INF/lib目錄下&am…

精通Spring Boot——第十一篇:使用自定義配置

2019獨角獸企業重金招聘Python工程師標準>>> 今天這篇文章給大家介紹自定義配置的兩種方式 第一式&#xff1a; 使用ConfigurationProperties&#xff0c;且看代碼 package com.developlee.customconfig.config;import org.springframework.boot.context.properties…

MySQL 高可用架構在業務層面的應用分析

MySQL 高可用架構在業務層面的應用分析 http://mp.weixin.qq.com/s?__bizMzAxNjAzMTQyMA&mid208312443&idx1&snf9a0d03dd9a1cf3b3575c0241291e421&scene22&srcidseLU5tmZumKLzwVBIHzM#rd http://mp.weixin.qq.com/s?__bizMzAxNjAzMTQyMA&mid20831244…

使用Expresso學習.net正則表達式

什么是RE?想必各位大大在做文件查找的時侯都有使用過萬用字符”*”&#xff0c;比如說想查找在Windows目錄下所有的Word文件時&#xff0c;你可能就會用”*.doc”這樣的方式來做查找&#xff0c;因為”*”所代表的是任意的字符。RE所做的就是類似這樣的功能&#xff0c;但其功…