侧边栏壁纸
博主头像
恪晨博主等级

前端程序员

  • 累计撰写 141 篇文章
  • 累计创建 41 个标签
  • 累计收到 17 条评论

目 录CONTENT

文章目录

Ubuntu+Node.js搭建微信公众号服务

恪晨
2021-03-04 / 0 评论 / 1 点赞 / 1,309 阅读 / 1 字 / 正在检测是否收录...

前言

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

域名准备

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

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

domain

公众号准备

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

server-config

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

服务器环境安装

  • Nodejs安装

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

    安装命令:

        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

      apt-get install nginx
    
  • pm2安装

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

      npm install -g pm2
    

服务编写

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

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

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

        {
            "name": "weapp",
            "version": "1.0.0",
            "dependencies": {
                "express": "^4.17.1",
                "wechat": "^2.1.0"
            }
        }
    
  • 新建一个app.js:touch app.js,文件内容如下:

        // 引用 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文件,内容如下:
      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!的回复,就表示我们的服务已经搭建完成了,可以做后续的操作了。 我这里 你好呀 和原来是接口啊呵呵 的回复是因为我公众号配置了机器人。

总结

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

1

评论区