基于CentOS搭建微信订阅号后台服务-云服务器玩法在线试验

[复制链接]
查看: 406|回复: 0
发表于 2020-4-7 17:24:41 | 显示全部楼层 |阅读模式
实验内容微信公众号后台自带的功能可能有时不能满足我们的需要,这时候我们就需要搭建自己的服务端。本实验带您从零开始,基于 NodeJS 搭建起一个可以支撑微信订阅号自动回复的服务,包括 HTTP 部署、后台模块服务。免费在线实验地址:点击进入
实验资源:云服务器,没有云服务器的朋友推荐1折抢购:69元/年的阿里云服务器、或者99元/年的腾讯云服务器软件环境CentOS 7.2 64 位

一、准备域名
微信公众平台需要配置服务器地址 URL 访问,在实验开始之前,我们要准备域名。
域名注册
如果您还没有域名,可以在阿里云或者腾讯云注册域名
域名解析
域名购买完成后, 需要将域名解析到实验云主机上,实验云主机的 IP 为:
  1. <您的 CVM IP 地址>
复制代码
域名设置解析后需要过一段时间才会生效,通过 ping 命令检查域名是否生效,如:
  1. ping www.yourmpdomain.com
复制代码
如果 ping 命令返回的信息中含有你设置的解析的 IP 地址,说明解析成功。
  1. 注意替换命令中的 www.yourmpdomain.com 为您自己的注册的域名
复制代码

二、申请微信个人订阅号
在开始搭建我们的订阅号服务器之前,需要先拿到订阅号相关信息。

注册开发者账号
如果你还不是微信订阅号开发者,请先在微信公众平台注册:
  1. https://mp.weixin.qq.com
复制代码
获取微信订阅号公众平台认证字段信息
我们需要获取3个字段:AppID Token EncodingAESKey。

登录微信公众平台,依次进入 开发 - 基本配置 可以拿到 AppID。

在基本配置 - 服务器配置 - 修改配置 表单中:

URL 填第一步申请的域名;

Token 用户根据提示填写,用于后面校验服务端合法性;

EncodingAESKey 点击随机生成按钮来生成。

当点击表单提交按钮时,微信会通过 Token 来校验 URL 的合法性,这个我们在后面步骤实现,此界面暂时保留不关闭。



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

安装 NodeJS 和 NPM
使用下面的命令安装 NodeJS 和 NPM

  1. curl --silent --location https://rpm.nodesource.com/setup_8.x | sudo bash -
  2. yum install nodejs -y
复制代码
安装完成后,使用下面的命令测试安装结果
  1. node -v
复制代码
编写 HTTP Server 源码
创建工作目录
使用下面的命令在服务器创建一个工作目录:
  1. mkdir -p /data/release/weapp
复制代码
进入此工作目录
  1. cd /data/release/weapp
复制代码
创建 package.json
在刚才创建的工作目录创建 package.json,添加我们服务器包的名称和版本号,可参考下面的示例。

示例代码:/data/release/weapp/package.json
  1. {
  2.     "name": "weapp",
  3.     "version": "1.0.0"
  4. }
复制代码
完成后,使用 Ctrl + S 保存文件

添加 Server 源码
在工作目录创建 app.js,使用 Express.js 来监听 5050 端口[?],可参考下面的示例代码(注:请将 app.js 文件中的token/appid/encodingAESKey等配置项替换为您的订阅号对应的取值)。

示例代码:/data/release/weapp/app.js
  1. // 引用 express 来支持 HTTP Server 的实现
  2. const express = require('express');

  3. // 引用微信公共平台自动回复消息接口服务中间件
  4. var wechat = require('wechat');

  5. // 创建一个 express 实例
  6. const app = express();

  7. // 配置微信公众平台参数,在教程第二步中获取
  8. var config = {
  9.     token: 'your token', // 填第二步中获取的 `token`
  10.     appid: 'your appid', // 填第二步中获取的 `appid`
  11.     encodingAESKey: 'your encodingAESKey', // 填第二步中获取的 `encodingAESKey`
  12.     checkSignature: true // 可选,默认为true。由于微信公众平台接口调试工具在明文模式下不发送签名,所以如要使用该测试工具,请将其设置为false
  13. };

  14. app.use(express.query());

  15. app.use('/', wechat(config, function (req, res, next) {
  16.     res.reply({
  17.         content: '你好,Hello World!',
  18.         type: 'text'
  19.     });
  20. }));

  21. // 监听端口,等待连接
  22. const port = 5050;
  23. app.listen(port);

  24. // 输出服务器启动日志
  25. console.log(`Server listening at http://127.0.0.1:${port}`);
复制代码
本实验会以 5050 端口的打开作为实验步骤完成的依据,为了后面的实验步骤顺利进行,请不要使用其它端口号

运行 HTTP 服务
安装 PM2
在开始之前,我们先来安装
  1. npm install pm2 --global
复制代码
PM2 安装时间可能稍长,请耐心等候
安装 Express
我们的服务器源码里使用到了 Express 模块,下面的命令使用 NPM 来安装 Express
  1. cd /data/release/weapp
  2. npm install express --save
复制代码
安装 Wechat
我们的服务器源码里使用到了 Wechat 模块,下面的命令使用 NPM 来安装 Wechat
  1. cd /data/release/weapp
  2. npm install wechat --save
复制代码
启动服务
安装完成后,使用 PM2 来启动 HTTP 服务
  1. cd /data/release/weapp
  2. pm2 start app.js
复制代码
现在,您的 HTTP 服务已经在 http://<您的 CVM IP 地址>:5050 运行

要查看服务输出的日志,可以使用下面的命令:
  1. pm2 logs
复制代码
如果要重启服务,可以使用下面的命令:
  1. pm2 restart app
复制代码
  1. 我们使用 PM2 来进行 Node 进程的运行、监控和管理
  2. NPM 仓库在国内访问速度可能不太理想,如果实在太慢可以尝试使用 CNPM 的 Registry 进行安装:npm install pm2 -g --registry=https://r.cnpmjs.org/
复制代码

四、搭建 nginx 对外服务
NodeJs只是侦听的机器上的 5050 端口,我们使用 nginx 侦听 80 端口提供对外域名服务

安装 Nginx
在 CentOS 上,可直接使用 yum 来安装 Nginx
  1. yum install nginx -y
复制代码
安装完成后,使用 nginx 命令启动 Nginx:
  1. nginx
复制代码
此时,访问 http://<您的域名> 可以看到 Nginx 的测试页面
  1. 如果无法访问,请重试用 nginx -s reload 命令重启 Nginx
复制代码

配置 HTTP 反向代理
外网用户访问服务器的 Web 服务由 Nginx 提供,Nginx 需要配置反向代理才能使得 Web 服务转发到本地的 Node 服务。

Nginx 配置目录在 /etc/nginx/conf.d,我们在该目录创建 wechat.conf

示例代码:/etc/nginx/conf.d/wechat.conf
  1. server {
  2.         listen 80;
  3.         server_name www.example.com; # 改为第一步申请的域名

  4.         location / {
  5.             proxy_pass http://127.0.0.1:5050;
  6.         }
  7.     }
复制代码
按 Ctrl + S 保存配置文件,让 Nginx 重新加载配置使其生效:
  1. nginx -s reload
复制代码
在浏览器通过 http 的方式访问你解析的域名来测试 HTTP 是否成功启动
五、使用Server端回复微信消息
提交服务端配置
我们将第二步微信公众平台中保留的表单提交,同时将 基本配置 - 服务器配置 启用

关注、发送与消息回复
首先通过二维码关注微信订阅号

在聊天界面向微信公众号发送一条消息

最终我们会回到一条 你好,Hello World! 的回复

大功搞成
恭喜!您已经完成了搭建微信订阅号后台服务的实验内容!


腾讯云
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

精彩图文



在线客服(工作时间:9:00-22:00)
400-600-6565

内容导航

微信客服

Copyright   ©2015-2019  云服务器社区  Powered by©Discuz!  技术支持:尊托网络     ( 湘ICP备15009499号-1 )