手把手教你搭建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.mzph.cn/news/277065.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

log4j.xml引用Javaweb项目中配置文件的参数

2019独角兽企业重金招聘Python工程师标准>>> 由于最近用阿里云日志服务整合log4j,在配置com.aliyun.openservices.log.log4j.LoghubAppender需要设置一些参数,因为项目中有统一的配置文件,所以想要可以直接在log4j.xml中通过${}来…

砂 即懒且忙 只有随笔

B同学说:砂,你已经好久没更新你的博了。是啊,我即懒且忙。上周六爬了青云山,公司组织的。一直懒得处理照片。拍了将近300张的照片,可到现在也就才弄了那么几张。我自恋。照片是自拍的。娘说:天呐&#xff0…

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

2019独角兽企业重金招聘Python工程师标准>>> 今天这篇文章给大家介绍自定义配置的两种方式 第一式: 使用ConfigurationProperties,且看代码 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…

数据结构与算法学习笔记之 从0编号的数组

数据结构与算法学习笔记之 从0编号的数组前言数组看似简单,但掌握精髓的却没有多少;他既是编程语言中的数据类型,又是最基础的数据结构;一个小问题:为什么数据要从0开始编号,而不是 从1开始呢?正…

Windows 故障转移+Hyper-V 虚机自动迁移高 可用

Windows 故障转移Hyper-V 虚机自动迁移高 可用 Windows 故障转移Hyper-V 虚机自动迁移高... 1一、系统原理... 31.1 高效率的 VMbus 架构... 31.2 完美支持 Linux 系统... 4二、架构拓朴... 52.1 网络及系统架构拓朴... 52.2 域结构拓朴... 5三、实验资源列表... 63.1 网络设备…

MSSqlServer基础学习01

1.新建登陆用户名,须赋予数据库访问权限方可访问已有的数据库,可以参考如下图片转载于:https://www.cnblogs.com/MyVision/p/11242417.html

javascript删除数组,索引出现问题解决办法。

var data [{ isRemove: 0, name: "项目1" },{ isRemove: 1, name: "项目2" },{ isRemove: 1, name: "项目3" },{ isRemove: 0, name: "项目4" },{ isRemove: 0, name: "项目5" },{ isRemove: 0, name: "项目6" }…

Mircosoft 正式把Windows Mobile改名为Windows Phone,你会因此而购买Windows Phone吗?

简介 本文讲述Windows Phone改名事件,以及Windows Phone发展历史和今后发展策略的想法。 事件 今天下班的时候看报纸,有一段新闻关于昨天(2009年10月6日)Mircosoft正式使用Windows Phone这个名字。我去到原先Windows Mobile的主页,已经全部由…

Linux 下, npm i 老是被killed 已杀死

2019独角兽企业重金招聘Python工程师标准>>> node:v8.12.0 npm v6.4.1 npm i 安装到一半会报这样到错误,并终止: npm WARN deprecated socks1.1.10: If using 2.x branch, please upgrade to at least 2.1.6 to avoid a serious …

phpstudy-5.6.27-nts  安装redis扩展

2019独角兽企业重金招聘Python工程师标准>>> redis扩展安装流程 第一步: 首先直接查看一下phpinfo()的信息 找到下面两条信息 Architecturex86PHP Extension BuildAPI20131226,NTS,VC11Loaded Configuration FileD:\phpStudy\php\php-5.6.27-nts\php.ini…

用DDA Convolution和Perlin Noise来模拟水粉画笔触

在西方,水彩画和水粉画是可以统称为Watercolor的,水粉画通常也称为不透明水彩画或树胶水彩画(Gouache),两者既有相似之处,又有所区别。水粉画是以水作为媒介,这一点,它与水彩画是相同的。所以&a…

刺猬文│从启动方式来看播客链的运行机制—设置验证者

(图片出自网络,版权归原作者所有)上一篇刺猬文我们介绍了播客链是如何实现Dpos的,其实质过程就是:节点A打包,将打包的区块发送给其它的节点,其它节点根据当前时间,判断是否应该由A节…

[记忆碎片的磁盘整理]老妈

卷标:老妈 挂载点:/family/mother 分区格式:亲情 备注:老妈固然是我人生中的至亲,但是搜遍我的大闹,也没能发现一点关于老妈的特殊记忆。老妈是一位再普通不过的女人、妻子、母亲。也本该如此吧。碎片文件&…

探究Java如何实现原子操作(atomic operation)

1. 让我们首先了解下java 中 Volatile 关键字 Volatile可实现java内存模型当中的可见性, java内存模型的可见性: 可见性,是指线程之间的可见性,一个线程修改的状态对另一个线程是可见的。也就是一个线程修改的结果,另一…

Password Creator(HTA)

<!--- 功能&#xff1a; 生成随机密码- 输入&#xff1a; 用户的设置- 输出&#xff1a; 随机密码&#xff0c;同时拷贝到剪切板- 作者&#xff1a; maskx- 版本&#xff1a; v1.0- 历史纪录&#xff1a; 2007-7-11新建 - 创建时间&#xff1a; 200…

Julia 排坑指南

Julia 是一个高效的计算语言&#xff0c;据说性能和C有一拼。 Google也开始支持TPU的Julia&#xff0c; 个人觉得他的可视化比较厉害&#xff0c;下面是自己安装过程的截图&#xff0c;由于Julia的服务器在国外&#xff0c;所以下载的过程会出现一些不可描述的问题&#xff0c;…

Windows Server 2016之RDS配置证书

证书我们可以自己创建也可以到阿里云申请&#xff0c;一次申请可以用一年&#xff0c;&#xff08;自己创建的证书是不受信任的&#xff09;所以我们在阿里云上申请的&#xff0c;下面我们就把申请到的证书下载下来&#xff0c;放到一个文件夹里&#xff0c;并解压接下来我们就…

2018阿里云双11拼团大促主会场全攻略

为什么80%的码农都做不了架构师&#xff1f;>>> 摘要&#xff1a; 在双十一这个一年唯一一次的大幅度降价促销日&#xff0c;怎样才能花最少的钱配置最特惠的云服务&#xff1f;云栖社区特为各位开发者奉献出省钱大法如下&#xff01; 2018阿里云双十一拼团大促活动…

匿名用户访问用发布站点模板创建网站的列表项时要求登录的问题解决

因为发布站点中的一个Feature被打开了&#xff0c;造成将列表FormPage的查看给Lock了&#xff0c;所以需要登录&#xff0c;将其关闭就OK了。哈哈。英文KB&#xff1a;Users are unexpectedly prompted to enter their credentials when they access a list in a Windows Share…