前言

基于Ubuntu服务器搭建公众号后端服务,使用了Nodejs进行验证,涉及配置域名,nginx转发等内容。

域名准备

微信公众平台需要配置服务器地址 URL 访问,在实验开始之前,我们要准备域名,可以购买或使用某些免费的域名。
这里我使用了我自己的域名:http://wechat.wangboweb.site。

购买域名后,可以在域名管理中添加域名解析,将要设置的域名添加一个A记录,记录值为服务器公网IP,这样我们的域名就准备好了。

domain

公众号准备

如果没有公众号,需要先在微信公众平台注册公众号。注册好后,进入后台,找到开发-基本配置-服务器配置,这里会展示后面需要用到的服务器地址、令牌、消息加解密密钥;
这里的域名地址就是上一步中我们绑定的那个域名,令牌的话是自定义的根据要求填写就可以了,加解密密钥是自动生成的。
这里因为环境还没有搭建好,所以保存的时候会提升不能保存,所以先不着急。

server-config

到这里,准备工作就做好了,接下来进行环境搭建。

服务器环境安装

  • Nodejs安装

    默认安装nodejs的话可能会版本太低,因此这里使用了另外一种方式,也比较简单,其实是就说是设置了安装源,详情可以查看https://github.com/nodesource/distributions

    安装命令:

    1
    2
    3
    curl -fsSL https://deb.nodesource.com/setup_14.x | sudo -E bash -

    sudo apt-get install -y nodejs

    通过这两条命令就可以安装14.x版本的nodejs,npm也会自动安装

    查看是否安装成功:
    node-version

  • Nginx安装

    执行安装命令,默认安装路径在/etc/nginx

    1
    apt-get install nginx
  • pm2安装

    因为后续要使用node服务,所以安装pm2进行持久化服务管理

    1
    npm install -g pm2

服务编写

  • 新建一个目录/data/weapp:mkdir /data/weapp

  • 进入该目录:cd /data/weapp

  • 新建一个package.json:touch package.json,文件内容如下:

    1
    2
    3
    4
    5
    6
    7
    8
    {
    "name": "weapp",
    "version": "1.0.0",
    "dependencies": {
    "express": "^4.17.1",
    "wechat": "^2.1.0"
    }
    }
  • 新建一个app.js:touch app.js,文件内容如下:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    // 引用 express 来支持 HTTP Server 的实现
    const express = require('express');

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

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

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

    app.use(express.query());

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

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

    // 输出服务器启动日志
    console.log(`Server listening at http://127.0.0.1:${port}`);
  • 安装项目依赖:npm install --save express wechat

  • 启动项目:pm2 app.js, 如下图则表示启动成功

    pm2-start

  • 配置nginx代理

    • 进入Nginx配置目录:cd /etc/nginx/conf.d
    • 新建一个wechat.conf 文件:touch wechat.conf
    • 因为Nginx的默认配置中会将conf.d文件夹下的.conf后缀的配置文件都include进去
    • 编写wechat.conf文件,内容如下:
      1
      2
      3
      4
      5
      6
      7
      8
      server {
      listen 80;
      server_name wechat.wangboweb.site; # 你的域名

      location / {
      proxy_pass http://127.0.0.1:5050; # 将访问域名代理到5050端口
      }
      }
  • 公众号后台配置中添加相关内容,启用即可
    server-config

  • 服务器安全组开启5050 端口供外部访问,因为我的是腾讯云的服务器,配置如下:
    safe-config

测试

对你的公众号发送任意消息,会收到一句你好,Hello World!的回复,就表示我们的服务已经搭建完成了,可以做后续的操作了。 我这里 你好呀 和原来是接口啊呵呵 的回复是因为我公众号配置了机器人。

总结

到这里,我们的环境就搭建完成啦,整个过程其实也挺简单的,后续就可以进行相关的开发了。