腾讯云快速搭建微信小程序服务

准备域名、SSL证书、服务器

任务时间:20min ~ 40min

小程序后台服务需要通过 HTTPS 访问,在实验开始之前,我们要准备域名和 SSL 证书。

需要一个已备案的域名。

域名购买完成后, 需要将域名解析到实验云主机上,实验云主机的 IP 为:

在腾讯云购买的域名,可以到控制台添加解析记录。

域名设置解析后需要过一段时间才会生效,通过 ping 命令检查域名是否生效 [?],如:

如果 ping 命令返回的信息中含有你设置的解析的 IP 地址,说明解析成功。

注意替换下面命令中的 www.yourmpdomain.com 为您自己的注册的域名

申请提交后,审批结果会以短信的形式通知。审批通过后,可以到 SSL 控制台下载您的证书文件,可参考下面的视频:

搭建小程序开发环境

任务时间:15min ~ 30min

在开始搭建我们的小程序服务器之前,需要先完成客户端小程序开发环境的搭建。

具体注册流程可参考如下视频:

  • 视频 – 注册开发者账号

若您已注册,请点击下一步。

登录微信公众平台后,依次进入 设置开发设置服务器域名修改

扫码完成身份校验后,request 合法域名和 socket 合法域名均填写在上一步准备好的域名地址。

配置完成后,点击 保存并提交。您可以点击如下视频查看如何进行配置:

  • 视频 – 配置小程序服务器信息

要运行本实验配套的小程序代码,请下载下列资源:

源码下载后,请解压到本地工作目录。

开发工具下载后,请安装并启动,然后用微信扫码登录。

登录后,选择 本地小程序项目添加项目,使用以下配置:

  • AppID:填写小程序的 AppID,请登录公众平台后在 设置开发设置开发者 ID 中查看
  • 项目名称:填写任意您喜欢的名称
  • 项目目录:选择刚才解压的配套源码目录(目录包含 app.js

填写完成后,点击 添加项目。具体操作可查看如下视频:

  • 视频 – 运行配套小程序代码

在开发工具的 编辑 面板中,选中 app.js 进行编辑,需要修改小程序通信域名[?],请参考下面的配置:

当然,这步操作也录制了对应的视频:

  • 视频 – 设置实验域名

实验配套源码所用通信域名都会使用该设置,为了您顺利进行实验,请把域名修改为之前步骤准备的域名

搭建 HTTP 服务

任务时间:15min ~ 30min

下面的步骤,将带大家在服务器上使用 Node 和 Express 搭建一个 HTTP 服务器

使用下面的命令安装 NodeJS

安装完成后,使用下面的命令测试安装结果

使用下面的命令在服务器创建一个工作目录:

进入此工作目录

在工作目录创建 package.json 文件,并修改文件的访问权限。

修改 package.json 添加我们服务器包的名称和版本号,可参考下面的示例。

完成后,使用 Ctrl + S 保存文件

在工作目录创建 app.js

修改 app.js 文件,使用 Express.js 来监听 8765 端口[?],app.js文件可参考下面的示例代码。

本实验会以 8765 端口的打开作为实验步骤完成的依据,为了后面的实验步骤顺利进行,请不要使用其它端口号

在开始之前,我们先来安装 [PM2]

PM2 安装时间可能稍长,请耐心等候 [?]

我们的服务器源码里使用到了 Express 模块,下面的命令使用 NPM 来安装 Express

安装完成后,使用 PM2 来启动 HTTP 服务

现在,您的 HTTP 服务已经在 http://<您的 CVM IP 地址>:8765 运行

要查看服务输出的日志,可以使用下面的命令:

如果要重启服务,可以使用下面的命令:

我们使用 PM2 来进行 Node 进程的运行、监控和管理

NPM 仓库在国内访问速度可能不太理想,如果实在太慢可以尝试使用 CNPM 的 Registry 进行安装:npm install pm2 -g --registry=https://r.cnpmjs.org/

搭建 HTTPS 服务

任务时间:15min ~ 30min

微信小程序要求和服务器的通信都通过 HTTPS 进行

在 Ubuntu 上,可直接使用 apt-get 来安装 Nginx

安装完成后,使用 nginx 命令启动 Nginx:

此时访问 http://<您的域名> 可以看到 Nginx 测试页面 [?]

如果你的机器同时安装了其他软件占用80端口,那上面的访问方式就不能使用了,而且 Nginx 都可能启动不了,你需要关闭该软件再重新启动 Nginx。

修改 /etc/nginx 目录的读写权限

将之前下载的 SSL 证书(解压后 Nginx 目录分别以 crt 和 key 作为后缀的文件)通过拖动到左侧文件浏览器 /etc/nginx 目录的方式来上传文件到服务器上。

如何上传 SSL 证书到 /etc/nginx 目录

在 /etc/nginx/conf.d 目录创建 ssl.conf 文件

ssl.conf 文件修改为如下内容

Ctrl + S 保存配置文件,让 Nginx 重新加载配置使其生效:

在浏览器通过 https 的方式访问你解析的域名来测试 HTTPS 是否成功启动

打开配套的小程序,点击 实验一:HTTPS,点击 发送请求 来测试访问结果。

如果服务器响应成功,请点击下一步。

小程序会话

任务时间:45min ~ 90min

小程序不支持 Cookie 存储和跟踪,服务器需要自行实现会话层

使用 apt-get 在机器上安装 [MongoDB] 及其客户端命令行工具:

安装结束后,可以使用下面的命令查看安装的版本:

MongoDB 是一款 NoSQL 数据库,支持 JSON 格式的结构化文档存储和查询,对 JavaScript 有着友好的支持

创建目录,用于 MongoDB 数据和日志存储:

创建后,使用下面的命令来启动 MongoDB:[?]

可以使用下面的命令来检查是否启动成功 [?]

MongoDB 首次启动可能会花费大概 1min 时间,请耐心等待

MongoDB 默认监听 27017 端口等待连接,下面的命令查看当前 27017 端口被哪个进程占用,如果是 MongoDB 的进程,则表示启动成功。

登录本地 MongoDB 服务:

登录后,创建一个用户 webapp [?]:

创建完成后,使用 exit 退出命令行工具。

创建的用户和密码将用于下一步中连接数据库时使用,如果使用不同的用户或密码,注意要保存好

实现小程序的会话功能,我们需要安装 [connect-mongo] 和 [wafer-node-session]

[connect-mongo][https://github.com/jdesboeufs/connect-mongo] 模块通过连接到 MongoDB 为会话提供存储

[wafer-node-session][https://github.com/tencentyun/wafer-node-session] 是由腾讯云提供的独立小程序会话管理中间件

在工作目录创建配置文件 config.js,用于保存我们服务所用的配置[?].

修改配置文件 config.js,可参考下面的实现(注:请将参考配置文件中的 YORU_APP_ID 和 YOUR_APP_SECRET 替换为你申请的小程序对应的 AppID 和 AppSecret):

编辑 app.js,添加会话实现逻辑,可参考下面的代码:

源码编写完成后,重启服务:

重启后,使用配套的小程序完成会话测试:打开配套小程序 – 点击 实验二:会话获取会话,如果您能看到您的微信头像,那就表示会话已经成功获取了。

随着服务变得复杂,我们可以把配置集中起来方便管理,比如目前我们需要保存:服务器运行端口、小程序配置、MongoDB 连接配置

WebSocket 服务

任务时间:45min ~ 90min

本实验使用 ws 模块来在服务器上支持 WebSocket 协议,下面使用 NPM 来安装:

创建 websocket.js 文件,实现 WebSocket 服务

修改 websocket.js 文件,可参考下面的代码:

编辑 app.js,调用 WebSocket 服务,可参考下面代码:

修改完成后,按 Ctrl + S 保存文件,并重启服务:

编辑 Nginx 配置 ssl.conf,添加 WebSocket 支持,可参考下面的配置(注:请将参考配置文件中的 www.example.com 替换为前面步骤申请的域名,将 1_www.example.com_bundle.crt 和 2_www.example.com.key 替换为前面步骤申请并上传的 SSL 证书的名称):

配置完成后,按 Ctrl + S 保存,并且通知 Nginx 进程重新加载配置:

打开配套的小程序,点击 实验三:WebSocket。进入测试页面后,点击 连接 按钮,如果出现连接成功的提示,表示 WebSocket 服务已经正常运行,可以收发消息。

剪刀石头布小游戏

任务时间:45min ~ 90min

创建 /data/release/webapp/game 目录用于存放剪刀石头布小游戏的代码

添加 game/Room.js 实现游戏房间逻辑[?]

修改 game/Room.js,可参考下面的代码:

处理游戏开始、计算结果、积分等逻辑

添加 game/Player.js

修改 game/Player.js,实现玩家逻辑[?],可参考下面的代码:

处理玩家加入游戏、选择出拳、通知其他玩家等逻辑

在实现人类玩家之前,我们先来创建 ComputerPlayer.js 来实现电脑玩家[?]

修改 ComputerPlayer.js 实现电脑玩家

测试游戏逻辑的时候,可能没有其它人可以一起参与,实现一个电脑玩家是不错的选择

人类玩家通过 WebSocket 信道来实现玩家的输入输出[?],我们需要添加 game/Tunnel.js 和 game/HumanPlayer.js 来实现人类玩家逻辑,可参考下面的代码:

修改 game/Tunnel.js 文件

修改 game/HumanPlayer.js 文件

人类玩家和电脑玩家的逻辑是一致的,但是 IO 不同,人类玩家使用之前实现的 WebSocket 服务进行输入输出,而电脑玩家直接使用 EventEmiter 处理

游戏的实现已经完成了,接下来,编辑 websocket.js 添加服务入口,可参考下面的代码:

我们的源码中使用到了 co 进行协程管理,启动游戏服务前,需要先安装:

重启 Node 服务:

打开配套的小程序,点击 实验四 - 剪刀石头布小游戏,点击 开始 按钮进行游戏。

恭喜!您已经完成了小程序服务的全部实验内容!你可以选择保留已经运行的服务,继续进行小程序的学习研究,建议留用机器。

原文链接:https://cloud.tencent.com/developer/article/1453563

© 版权声明
THE END
喜欢就支持一下吧
点赞9 分享