配置node服务器并且链接微信公众号接口配置

配置node服务器

在购买好服务器后,用Xshell链接到服务器。

1、安装nvm

curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.34.0/install.sh | bash或者wget -qO- https://raw.githubusercontent.com/nvm-sh/nvm/v0.34.0/install.sh | bash复制代码

安装完,关闭重新启动一下Xshell。

2、用nvm安装node

// 查看当前可安装node版本nvm ls-remote// 选择'nodejs.org'官网LTS稳定版本nvm install v10.16.0// 出现这样的显示表示安装好了,默认的是v10.16.0的node版本,6.9.0的npm版本Now using node v10.16.0 (npm v6.9.0)Creating default alias: default -> v10.16.0// 可以使用命令查看版本node --version // nvm可以安装多个node版本nvm install v10.11.0// 可以使用命令查看安装了多少个node版本nvm ls// 可以使用命令指定默认的node版本,如果安装了多个node版本,一定要指定一个默认的版本nvm alias default v10.11.0// 如果你不想使用默认,只是零时用一下,可以使用命令nvm use v10.11.0复制代码

3、安装nginx

// 查看服务器系统版本$ cat /etc/redhat-release // 安装epel-release 源yum install epel-release -y// 打开源配置vim /etc/yum.repos.d/nginx.repo// 在配置中设置nginx安装源,具体可以参考nginx官网文档('http://nginx.org/en/linux_packages.html#stable')[nginx]name=nginx repobaseurl=http://nginx.org/packages/centos/7/$basearch/gpgcheck=0enabled=1// 安装nginxyum install nginx -y// 查看nginx是否安装成功,成功的话会显示路径 whereis nginx复制代码

4、设置nginx

// 设置开机启动systemctl enable nginx// 启动服务,重启是'systemctl restart nginx',停止是 'stop'systemctl start nginx// 重新加载,因为一般重新配置之后,不希望重启服务,这时可以使用重新加载systemctl reload nginx// 查看服务器状态systemctl status nginx// 如果CentOS7 系统打开了防火墙,还需打开防火墙端口firewall-cmd --zone=public --permanent --add-service=httpsudo firewall-cmd --reloadfirewall-cmd --list-service// 如果要使用反向代理,CentOS7 需要打开网络访问权限setsebool httpd_can_network_connect 1复制代码

5、部署测试项目

// 创建文件夹mkdir server// 进入文件夹cd server// 创建js文件vim home.js// 编写测试代码,注意,这里的ip地址一定要配置成0.0.0.0,如果配置成127.0.0.1,外网会报错端口3000链接不通const http = require('http');const hostname = '0.0.0.0';const port = 3000;const server = http.createServer((req, res) => { res.statusCode = 200; res.setHeader('Content-Type', 'text/plain'); res.end('Hello World');});server.listen(port, hostname, () => { console.log(`服务器运行在 http://${hostname}:${port}/`);});// 启动node home.js// 如果报错'Unhandled 'error' event',可能是端口被占用了,先查看端口占用情况ps -ef|grep node// 如果有占用,删除占用,'xxxx'为'root'后的数字skill -9 xxxxx复制代码

出现:服务器运行在 http://0.0.0.0:3000/ 即表示node运行成功,运行成功后,登录阿里云后台配置安全组规则

配置成功如下显示:

允许自定义 TCP3000/3000IPv4地址段访问0.0.0.0/0 node后台端口复制代码

然后就可以在浏览器地址栏输入你的服务器公网ip地址加上:3000,成功出现Hello World即表示安全组配置成功

6、配置nginx

// 进入 '/etc/nginx' 文件夹,查看下 'nginx.conf' 配置文件cd /etc/nginxlsvim nginx.conf// 低版本的nginx 'nginx.conf' 文件夹里有以下内容// # include /etc/nginx/conf.d/*.conf;// # include /etc/nginx/sites-enabled/*;// 去掉 '#' 号// 创建nginx配置文件,文件名随意,我一般喜欢用项目名加端口号,比如 'wxServer-3000'vim /etc/nginx/conf.d/wxServer-3000.conf// 编写配置文件代码# 项目名字upstream wxServer { # 需要代理的node端口号,也就是你写的端口号 server 0.0.0.0:3000; # nginx最大连接数 keepalive 8;}# nginx服务器实例server { # 代理出去的端口号,默认Http协议的80端口,如果配置其它端口需要更改 SELinux 的设置 listen 0.0.0.0:80; # 别人访问的域名或者ip地址,多个用空格隔开 server_name lzf.fun www.lzf.fun; # 错误日志存放地址 access_log /var/log/nginx/wxServer-3000.log; location / { proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $http_host; proxy_set_header X-NginX-Proxy true; # proxy_pass 设置反向代理用服务器域名,不使用反向代理,直接用上面upstream的名字就可以了 proxy_pass http://wxServer/; proxy_redirect off; } } // 保存配置文件后,检查是否编写错误nginx -t // 出现以下内容为正确nginx: the configuration file /etc/nginx/nginx.conf syntax is oknginx: configuration file /etc/nginx/nginx.conf test is successful// 重新加载nginx服务器systemctl reload nginx// 在阿里云后台开启80端口的安全组,然后在浏览器输入域名,可以看到 'Hello World' 就表示nginx配置成功了复制代码

7、配置PM2

// 安装PM2npm install pm2 -g// 进入你的node项目存放的文件夹,pwd是你的文件夹路径cd pwd// 启动pm2,--watch监听,每次改动代码自动启动,-i 1 启动一个实例,根据服务器又几个核心设置// -i 0 则会根据机器当前核数自动开启尽可能多的进程pm2 start home.js --watch -i 1// 查看pm2pm2 ls// 查看错误日志pm2 logs// 重启pm2 restart home.js// 停止,id通过查看获得pm2 stop home|id// 删除pm2 delete home|id// 了解程序的详细信息pm2 describe home|id// 关闭Xshell,刷新域名,还可以看见 'Hello World' 表示配置成功复制代码

链接微信公众号接口配置

8、编写本地node代码

const Koa = require('koa')const cors = require('koa2-cors')const Router = require('koa-router')const crypto = require('crypto')const app = new Koa()// 微信配置const config = { wechat: { appID: 'appID', appsecret: 'appsecret', token: 'Maya' }}// 使用koa2-cors解决跨域问题app.use( cors({ origin: ctx => { if (ctx.url === '/test') { return false } return '*' }, exposeHeaders: ['WWW-Authenticate', 'Server-Authorization'], maxAge: 5, credentials: true, allowMethods: ['GET', 'POST', 'DELETE'], allowHeaders: ['Content-Type', 'Authorization', 'Accept'] }))// 给微信验证的const wxServer = new Router()wxServer.get('/', async ctx => { const { signature, timestamp, nonce, echostr } = ctx.query const token = config.wechat.token let hash = crypto.createHash('sha1') const arr = [token, timestamp, nonce].sort() hash.update(arr.join('')) const shasum = hash.digest('hex') if (shasum === signature) { return (ctx.body = echostr) } ctx.status = 401 ctx.body = 'Invalid signature'})// 装载所有路由const router = new Router()router.use('/forWx', wxServer.routes(), wxServer.allowedMethods())// 加载路由中间件app.use(router.routes()).use(router.allowedMethods())app.listen(3000)console.log('[demo] start-quick is starting at port 3000')复制代码

9、通过内网穿透的方式测试本地代码是否ok

1、通过localtunnel启动内网穿透,不推荐,有可能启动成功,但是域名链接失败

// 安装npm install -g localtunnel// 开启本地服务器lt --port 3000复制代码

2、通过natapp启动内网穿透,配置需要花费一点时间

可以通过内网穿透工具natapp!这篇文章安装配置,

如果你代码写的是开启3000端口,那么最好也配置成3000端口

tips:如果看到隧道链接成功,但是127.0.0.1:3000端口链接失败的提示,不代表安装配置失败,是需要你启动一下代码

安装配置成功后,启动

node home.js复制代码

能够成功在浏览器上看到 Invalid signature 表示内网穿透成功

10、开启一个微信公众平台测试账号

在微信公众平台测试管理页面,接口配置信息,URL填写你natapp启动的域名加上forWx,比如我的域名是

http://qf7rja.natappfree.cc/forWx复制代码

Token是你自己自定义的,可以随便写,但是要和你本地代码里的Token一致,我这里用的是Maya

点击提交,显示配置成功

11、服务器链接微信公众号接口配置

通过上面的测试账号,验证了代码没有问题,可以配置成功接口配置,剩下的就是把代码上传到服务器了,安装选择rz和sz,当然,使用xftp更好

// 安装yum install lrzsz -y// 上传,执行命令,选择打包文件rz// 下载,filename是你打包的服务器文件夹,或者单个文件sz filename复制代码

上传成功后,解压缩,清除前面的 Hello World 代码,清空 PM2 ,重新把现在代码挂到 PM2 上

在浏览器上输入域名 + forWx 能出现 Invalid signature 表示成功,如果没有出现,配置不成功,需要排查原因

在微信公众平台登录账号,选择基本配置-->服务器配置,然后按照配置测试账号的方式去配置

点击提交,显示配置成功

尾声

嘘~~~长出了一口气,研究了老久,node服务器总算配置成功了,而且已经链接到公众号接口配置,并且我还有一个测试账号

可以用测试账号本地写代码,然后再上传到服务器验证的方式去开发

这样的做的原因是,测试账号玩坏了不心疼,转眼又弄好了一个,服务器玩坏了,配置起来可就麻烦了

剩下的就是开发具体业务了,什么拿到AccessToken啊,自动回复消息啊,自定义菜单啊,等等等等

云服务器有token_配置node服务器并且链接微信公众号接口配置相关推荐

  1. 配置node服务器并且链接微信公众号接口配置(超详细)

    配置node服务器 在购买好服务器后,用Xshell链接到服务器. 1.安装nvm curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.3 ...

  2. 微信公众号 接口配置信息 URL 配置失败(能进入后台方法,无返回信息)

    微信公众号 接口配置信息 URL 配置失败(能进入后台方法,无返回信息) 操作步骤:1.微信公众号输入url.token点提交,提示配置失败. 后台代码: @ResponseBody@RequestM ...

  3. 微信公众号-接口配置信息url和tokken

    一.接入指南 https://developers.weixin.qq.com/doc/offiaccount/Basic_Information/Access_Overview.html 接入概述 ...

  4. PHP 公众号获取用户地理位置,微信公众号接口配置,并利用接口获取用户地理位置...

    微信公众号获取用户地理位置有两种方法: 一是在进入微信公众号时获取,然后微信服务器将位置传到我们的服务器. 二是在公众号网页中,通过 JS-SDK 获取. 本文介绍的是第一种方法,第二种方法的部分内容 ...

  5. nginx tornado php,tornado+nginx+python 微信公众号接入配置

    配置环境:腾讯主机 Ubuntu Server 16.04.1 LTS 64位 需要用到的软件或者包:nginx,tornado框架 xshell6(非必需) 微信公众号测试平台:http://mp. ...

  6. 微信公众号基本配置时出现:“参数错误,请重新填写“ 解决方法

    微信公众号基本配置时出现:"参数错误,请重新填写" 原因 最近在开发微信公众号的后台,因为之前都是使用的测试号所以没有出现过标题的错误,但是昨天更改为服务号以后再配置服务器基本信息 ...

  7. 微信公众号测试号配置,群发消息(go实现)

    配置服务器(以本地服务器127.0.0.1:8080为例) ⑴新建项目(这里用的goframe框架) 路由: var (Main = gcmd.Command{Name: "main&quo ...

  8. php微信公众号测试号token配置失败,微信公众号Token配置失败解决办法

    前言 今天生病在家,由于我的微信公众号被投诉了,因此影视站接口被迫关闭,于是就想着给大家分享 APP,于是就用了下微信的自动回复, 想着能否把这个自动回复对接到 MIPCMS 上,于是就开干.但是微信 ...

  9. 微信公众号分享配置无效。。分享出来的只是纯链接了,如何自定义微信公众号的分享

    微信公众号分享配置无效..分享出来的只是纯链接了 挺久没接微信公众号的项目开发了,最近突然接了一个,结果微信自定义分享给我整懵了.原本配置的好好的,屡试不爽的代码,居然死活不生效,开启debug,开发 ...

最新文章

  1. 事件委托技术原理和使用(js,jquery)
  2. 在医疗领域你知道哪些人工智能黑科技?
  3. rxjava获取异步请求的结果_我为什么不再推荐用 RxJava
  4. 做一个更好的A牌 从《Artifact》2.0看Valve的设计思路
  5. leetcode 322. Coin Change | 322. 零钱兑换(动态规划)
  6. SP5971 LCMSUM - LCM Sum
  7. 2017.9.13 找硬币 失败总结
  8. SpringMVC的拦截器(Interceptor)和过滤器(Filter)的区别与联系
  9. 如何做好手机APP测试?APP测试流程及解决方案
  10. 拉曼光谱避免荧光效应的方法
  11. React Native 连接夜神模拟器
  12. Git教程及常用命令
  13. 俞敏洪在北京大学2008年开学典礼上的演讲辞
  14. SVN客户端 创建分支/合并分支/切换分支
  15. 面试官:RocketMQ是什么,它有什么特性与使用场景?
  16. 最近程序员跟吃饭干上了
  17. 从100PV到1亿级PV网站架构演变
  18. 【Audio driver】mixer_paths.xml文件分析
  19. 【交互设计】熟练使用2B铅笔前Not Open Axure
  20. Linux wget错误,证书无效过期,ERROR: The certificate of ‘mirrors.cnnic.cn‘ has expired.

热门文章

  1. K8S kube-proxy iptables 原理分析
  2. 从华为畅享7爆红双11 看千元市场爆品的新常态
  3. android2.2应用开发之IccCard(sim卡或USIM卡)
  4. 程序分析与优化 - 6 循环优化
  5. 鉴于喀拉拉邦的持续洪灾,UAE Exchange和Unimoni为喀拉拉邦首席部长灾难救援基金汇款免除服务费
  6. NFT 生成物及素材展示(小熊、性别形象、道具)
  7. 全球与中国云浏览器隔离市场深度研究分析报告
  8. java爬虫模拟post请求_java爬虫之使用HttpClient模拟浏览器发送请求方法详解
  9. 百度飞桨7日营——世界冠军带你从零实践强化学习总结
  10. Games101-课程15笔记