千锋教育-做有情怀、有良心、有品质的IT职业教育机构

400-811-9990
当前位置:首页 > 关于学院 > 技术论坛  >  正文

HTML5技术分享 从零搭建微信小程序后台

时间:2017-01-18 16:50:43     来源:千锋教育 作者:千锋

  1.基本硬件准备,以windows server 2008 为例

  //1台主机

  //1个万维网域名

  //域名通过ssl认证

  //--服务器端安装以下--

  //------nginx

  //------wampserver

  //----------Apache

  //----------Mysql

  //----------PHP

  //------node

  //---------express

  //------pm2

  1.以腾讯云为例 服务器搭建

  1.主机与域名DNS解析

  1.购买云主机,购买成功以后,如图:

图片1.png

  2.购买域名,购买成功并认证,如图:

图片2.png

  3.添加域名解析规则:

图片3.png

  4.SSL 认证:

图片4.png

  5.ssl 认证

图片5.png

图片6.png

图片7.png

  认证成功,就可以下载证书配置自己服务器了。

图片8.png

  不同服务器具体配置如下:

  参考https://www.qcloud.com/document/product/400/4143

  2. 笔者使用的是 Nginx 证书部署

  2.1 获取证书

  Nginx文件夹内获得SSL证书文件 1www.domain.com_bundle.crt 和私钥文件 2www.domain.com.key, 1_www.domain.com_bundle.crt 文件包括两段证书代码 “-----BEGIN CERTIFICATE-----”和“-----END CERTIFICATE-----”, 2_www.domain.com.key 文件包括一段私钥代码“-----BEGIN RSA PRIVATE KEY-----”和“-----END RSA PRIVATE KEY-----”。

  2.2 证书安装

  将域名 www.domain.com 的证书文件1www.domain.com_bundle.crt 、私钥文件2www.domain.com.key保存到同一个目录,例如/usr/local/nginx/conf目录下。 更新Nginx根目录下 conf/nginx.conf 文件如下:

  server {

  listen 443;

  server_name www.domain.com; #填写绑定证书的域名

  ssl on;

  ssl_certificate 1_www.domain.com_bundle.crt;

  ssl_certificate_key 2_www.domain.com.key;

  ssl_session_timeout 5m;

  ssl_protocols TLSv1 TLSv1.1 TLSv1.2; #按照这个协议配置

  ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;#按照这个套件配置

  ssl_prefer_server_ciphers on;

  location / {

  root html; #站点目录

  index index.html index.htm;

  }

  }

  配置完成后,先用bin/nginx –t来测试下配置是否有误,正确无误的话,重启nginx。就可以使 https://www.domain.com 来访问了。

  注:

配置文件参数

说明

listen 443

SSL访问端口号为443

ssl on

启用SSL功能

ssl_certificate

证书文件

ssl_certificate_key

私钥文件

ssl_protocols

使用的协议

ssl_ciphers

配置加密套件,写法遵循openssl标准

  2.3 使用全站加密,http自动跳转https(可选)

  对于用户不知道网站可以进行https访问的情况下,让服务器自动把http的请求重定向到https。 在服务器这边的话配置的话,可以在页面里加js脚本,也可以在后端程序里写重定向,当然也可以在web服务器来实现跳转。Nginx是支持rewrite的(只要在编译的时候没有去掉pcre) 在http的server里增加rewrite ^(.*) https://$host$1 permanent; 这样就可以实现80进来的请求,重定向为https了。

  服务器配置

  参考文档:https://github.com/tencentyun/wafer

  后台服务原理:

图片9.png

  2.接下来配置服务器(以官方三木聊天室demo为例)

  2.1 nginx 配置

  server {

  listen 443;

  server_name www.lovmin.cn; #填写绑定证书的域名

  ssl on;

  ssl_certificate 1_www.lovmin.cn_bundle.crt;#下载好的证书文件

  ssl_certificate_key 2_www.lovmin.cn.key;#下载好的证书文件

  ssl_session_timeout 5m;

  ssl_protocols TLSv1 TLSv1.1 TLSv1.2; #按照这个协议配置

  ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;#按照这个套件配置

  ssl_prefer_server_ciphers on;  ​

  location / {

  proxy_pass localhost:5757;#node服务器地址与端口,因为同一台服务器故使用localhost

  }  ​

  }

  2.2 聊天室 server服务配置

  注意:window server 配置文件需要手动 sdk.config 创建到 C:\qcloud\sdk.config

  {

  "serverHost": "www.zhangximufeng.com",//服务器域名

  "authServerUrl": "http://10.141.19.17:8000/",//鉴证服务器地址(其实就是apache服务器地址)

  "tunnelServerUrl": "https://ws.qcloud.com",//这个可以不改,信道服务器地址

  "tunnelSignatureKey": "7fb7d1c161b7ca52d73cce0f1d833f9f5b5ec89",//随机码

  "networkTimeout":30000//可不改

  }  ​

  参考文档地址:

  https://github.com/tencentyun/wafer-node-server-sdk

  demo 源码

  https://github.com/tencentyun/wafer-node-server-demo

  2.3 apache 服务器(鉴证服务器)配置及数据库设

  鉴证服务器

  下载官方 会话服务器源码

  会话服务器的源码

  https://github.com/tencentyun/wafer-session-server

  选择合适的方式部署 Wafer 服务后,按照部署类型:

  · 自动部署 - 无需进行任何操作,会话服务器已经可以使用

  · 镜像部署 - 按照下面步骤进行初始化工作

  · 自行部署 - 按照下面步骤进行初始化工作

  环境准备

  确保机器中已安装 WAMP 环境。Linux server 可以选择安装LAMP 环境

  代码部署

  把本项目代码部署到 /opt/lampp/htdocs/mina_auth 目录中。

  自动建表

  执行下面命令创建运行时所需表:

  /opt/lampp/bin/mysql -u root -p mypassword < /opt/lampp/htdocs/mina_auth/system/db/db.sql

  初始化 appId 和 appSecret

  登录到 MySql 后,手动插入配置到 cAuth 表中。

  /opt/lampp/bin/mysql -u root -p root #登录本地mysql

  use cAuth;

  insert into cAppinfo set appid='Your appid',secret='Your secret';

  测试服务可用性

  curl -i -d'{"version":1,"componentName":"MA","interface":{"interfaceName":"qcloud.cam.id_skey","para":{"code":"001EWYiD1CVtKg0jXGjD1e6WiD1EWYiC","encrypt_data":"DNlJKYA0mJ3+RDXD/syznaLVLlaF4drGzeZvJFmjnEKtOAi37kAzC/1tCBr7KqGX8EpiLuWl8qt/kcH9a4LxDC5LQvlRLJlDogTEIwtlT/2jBWBuWwBC3vWFhm7Uuq5AOLZV+xG9UmWPKECDZX9UZpWcPRGQpiY8OOUNBAywVniJv6rC2eADFimdRR2qPiebdC3cry7QAvgvttt1Wk56Nb/1TmIbtJRTay5wb+6AY1H7AT1xPoB6XAXW3RqODXtRR0hZT1s/o5y209Vcc6EBal5QdsbJroXa020ZSD62EnlrOwgYnXy5c8SO+bzNAfRw59SVbI4wUNYz6kJb4NDn+y9dlASRjlt8Rau4xTQS+fZSi8HHUwkwE6RRak3qo8YZ7FWWbN2uwUKgQNlc/MfAfLRcfQw4XUqIdn9lxtRblaY="}}}' http://127.0.0.1/mina_auth/

  按照源码 db.sql 文件 建立数据库

  数据库设计

  全局信息表 cAppInfo 保存会话服务所需要的配置项。

  Field

  Type

  Null

  key

  Extra

  appid

  varchar(200)

  NO

  PRI

  申请微信小程序开发者时,微信分配的 appId

  secret

  varchar(300)

  NO

  申请微信小程序开发者时,微信分配的 appSecret

  login_duration

  int(11)

  NO

  登录过期时间,单位为天,默认 30 天

  session_duration

  int(11)

  NO

 

 

 

 

会话过期时间,单位为秒,默认为 2592000 秒(即30天)

  ​会话记录 cSessionInfo 保存每个会话的数据。

  Field

  Type

  Null

  key

  Extra

  id

  int(11)

  NO

  MUL

  uuid

  varchar(100)

  NO

  会话 uuid

  skey

  varchar(100)

  NO

  会话 Skey

  create_time

  datetime

  NO

  last_visit_time

  datetime

  NO

  open_id

  varchar(100)

  NO

  MUL

  session_key

  varchar(100)

  NO

  微信服务端返回的 `session_key` 值

  user_info

  varchar(2048)

  YES

  已解密的用户数据

 

会话 ID(自增长)

 

 

会话创建时间,用于判断会话对应的 open_id 和 session_key 是否过期(是否超过 cAppInfo 表中字段 login_duration 配置的天数)

最近访问时间,用于判断会话是否过期(是否超过 cAppInfo 表中字段 session_duration 的配置的秒数)

微信服务端返回的 open_id 值

 

 

  建数据库的详细 SQL 脚本请参考 db.sql

  搭建会话管理服务器

  服务器配置注意:

  1、会话服务器源码中连接mysql数据库的用户名密码确保与数据库保持一致

  2、sdk.config文件在不同server系统中位置不同,具体位置请阅读sdk源码config.js文件

  3、sdk.config文件中不能有注释(后面会把字符串转对象)

  小程序客户端配置

  参考文档:https://github.com/tencentyun/wafer-client-sdk

  demo 地址:https://github.com/tencentyun/wafer-client-demo

  /**

  * 小程序配置文件

  * config.js

  */  ​

  // 此处主机域名修改成腾讯云解决方案分配的域名

  var host = 'www.lovmin.com';  ​

  var config = {  ​

  // 下面的地址配合云端 Demo 工作

  service: {

  host,  ​

  // 登录地址,用于建立会话

  loginUrl: `https://${host}/login`,  ​

  // 测试的请求地址,用于测试会话

  requestUrl: `https://${host}/user`,  ​

  // 测试的信道服务地址

  tunnelUrl: `https://${host}/tunnel`,

  }

  };  ​

  module.exports = config;

  开发者设置

图片10.png

  ​

相关文章

  • 北京天丰利校区(总部)地址:北京市海淀区宝盛北里西区28号天丰利商城4层
    北京沙河校区:北京市昌平区沙阳路18号北京科技职业技术学院广场服务楼2、3层
    咨询电话:400-811-9990
    面授课程:HTML5大前端培训、全链路UI/UE设计培训、PHP全栈+服务器集群培训、JavaEE+分布式开发培训、大数据+人工智能培训、 Unity游戏开发培训、Python培训、云计算+信息安全培训、全栈软件测试培训、智能物联网+嵌入式培训、好程序员
  • 深圳西部硅谷校区地址:深圳市宝安区宝安大道5010号深圳西部硅谷B座A区605-619
    深圳大学城校区地址:深圳市南山区留仙大道1201号大学城创客小镇16栋3楼
    咨询电话: 0755-23015275/23015546-801(硅谷) 0755-86660670-801(大学城)
    面授课程:HTML5大前端培训、全链路UI/UE设计培训、PHP全栈+服务器集群培训、JavaEE+分布式开发培训、大数据+人工智能培训、 Unity游戏开发培训、Python培训、云计算+信息安全培训、全栈软件测试培训、智能物联网+嵌入式培训、好程序员
  • 上海校区地址:上海市宝山区同济支路199号智慧七立方3号楼2-4层
    咨询电话:400-811-9990 021-65233829-609
    面授课程:HTML5大前端培训、全链路UI/UE设计培训、PHP全栈+服务器集群培训、JavaEE+分布式开发培训、大数据+人工智能培训、 Unity游戏开发培训、Python培训、云计算+信息安全培训、全栈软件测试培训、智能物联网+嵌入式培训、好程序员
  • 郑州校区地址:郑州市二七区航海中路60号海为科技园C区10层、12层
    咨询电话:0371-55191750
    面授课程:HTML5大前端培训、全链路UI/UE设计培训、PHP全栈+服务器集群培训、JavaEE+分布式开发培训、大数据+人工智能培训、 Unity游戏开发培训、Python培训、云计算+信息安全培训、全栈软件测试培训、智能物联网+嵌入式培训
  • 广州校区地址:广州市天河区元岗路310号智汇park创意园E座5层
    咨询电话:020-22119207
    面授课程:HTML5大前端培训、全链路UI/UE设计培训、PHP全栈+服务器集群培训、JavaEE+分布式开发培训、大数据+人工智能培训、 Unity游戏开发培训、Python培训、云计算+信息安全培训、全栈软件测试培训、智能物联网+嵌入式培训
  • 大连校区地址:辽宁省大连市高新园区爱贤街10号大连设计城A座901
    咨询电话:400-811-9990
    面授课程:HTML5大前端培训、全链路UI/UE设计培训、PHP全栈+服务器集群培训、JavaEE+分布式开发培训、大数据+人工智能培训、 Unity游戏开发培训、Python培训、云计算+信息安全培训、全栈软件测试培训、智能物联网+嵌入式培训
  • 武汉金融港校区地址:武汉市东湖高新技术开发区光谷大道77号金融港B18栋3楼
    武汉智慧园校区地址:武汉市东湖高新技术开发区光谷大道61号智慧园21栋2楼
    咨询电话:027-59313371
    面授课程:HTML5大前端培训、全链路UI/UE设计培训、PHP全栈+服务器集群培训、JavaEE+分布式开发培训、大数据+人工智能培训、 Unity游戏开发培训、Python培训、云计算+信息安全培训、全栈软件测试培训、智能物联网+嵌入式培训
  • 成都校区地址:成都市武侯区科华北路62号力宝大厦N(北楼)18楼
    咨询电话:400-811-9990 028-83178771
    面授课程:HTML5大前端培训、全链路UI/UE设计培训、PHP全栈+服务器集群培训、JavaEE+分布式开发培训、大数据+人工智能培训、 Unity游戏开发培训、Python培训、云计算+信息安全培训、全栈软件测试培训、智能物联网+嵌入式培训
  • 西安校区地址:西安市雁塔区高新六路52号立人科技C座西区4楼
    咨询电话:029-85363390
    面授课程:HTML5大前端培训、全链路UI/UE设计培训、PHP全栈+服务器集群培训、JavaEE+分布式开发培训、大数据+人工智能培训、 Unity游戏开发培训、Python培训、云计算+信息安全培训、全栈软件测试培训、智能物联网+嵌入式培训
  • 杭州校区地址:浙江省杭州市江干区九堡旺田书画城A座4层
    咨询电话:400-811-9990 0571-86893632
    面授课程:HTML5大前端培训、全链路UI/UE设计培训、PHP全栈+服务器集群培训、JavaEE+分布式开发培训、大数据+人工智能培训、 Unity游戏开发培训、Python培训、云计算+信息安全培训、全栈软件测试培训、智能物联网+嵌入式培训
  • 青岛校区地址:青岛市市北区龙城路卓越世纪中心3号楼8层801
    咨询电话:0532-80911190
    面授课程:HTML5大前端培训、全链路UI/UE设计培训、PHP全栈+服务器集群培训、JavaEE+分布式开发培训、大数据+人工智能培训、 Unity游戏开发培训、Python培训、云计算+信息安全培训、全栈软件测试培训、智能物联网+嵌入式培训
  • 重庆校区地址:重庆市高新区科园一路2号大西洋国际12-1
    咨询电话:400-811-9990 023-68883009
    面授课程:HTML5大前端培训、全链路UI/UE设计培训、PHP全栈+服务器集群培训、JavaEE+分布式开发培训、大数据+人工智能培训、 Unity游戏开发培训、Python培训、云计算+信息安全培训、全栈软件测试培训、智能物联网+嵌入式培训
  • 长沙校区地址:湖南省长沙市岳麓区麓谷企业广场A2栋三单元306号
    咨询电话:0731-85513210
    面授课程:HTML5大前端培训、全链路UI/UE设计培训、PHP全栈+服务器集群培训、JavaEE+分布式开发培训、大数据+人工智能培训、 Unity游戏开发培训、Python培训、云计算+信息安全培训、全栈软件测试培训、智能物联网+嵌入式培训
  • 哈尔滨校区地址:哈尔滨市松北区创新一路699号 科技创新城19号楼B座五楼
    咨询电话:400-811-9990/0451-87173191
    面授课程:HTML5大前端培训、全链路UI/UE设计培训、PHP全栈+服务器集群培训、JavaEE+分布式开发培训、大数据+人工智能培训、 Unity游戏开发培训、Python培训、云计算+信息安全培训、全栈软件测试培训、智能物联网+嵌入式培训
  • 南京校区地址:南京市建邺区应天大街780号应天智汇产业园弘辉园1幢2楼
    咨询电话:400-811-9990
    面授课程:HTML5大前端培训、全链路UI/UE设计培训、PHP全栈+服务器集群培训、JavaEE+分布式开发培训、大数据+人工智能培训、 Unity游戏开发培训、Python培训、云计算+信息安全培训、全栈软件测试培训、智能物联网+嵌入式培训
  • 千锋教育服务号

    了解千锋动态
    关注千锋教育服务号

  • 千锋教育移动站

    扫一扫快速进入
    千锋移动端页面

  • 千锋互联服务号

    扫码匿名提建议
    直达CEO信箱