配置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版本 nvmls-remote //选择'nodejs.org'官网LTS稳定版本 nvminstallv10.16.0 //出现这样的显示表示安装好了,默认的是v10.16.0的node版本,6.9.0的npm版本 Nowusingnodev10.16.0(npmv6.9.0) Creatingdefaultalias:default->v10.16.0 //可以使用命令查看版本 node--version //nvm可以安装多个node版本 nvminstallv10.11.0 //可以使用命令查看安装了多少个node版本 nvmls //可以使用命令指定默认的node版本,如果安装了多个node版本,一定要指定一个默认的版本 nvmaliasdefaultv10.11.0 //如果你不想使用默认,只是零时用一下,可以使用命令 nvmusev10.11.0
3、安装nginx
//查看服务器系统版本 $cat/etc/redhat-release //安装epel-release源 yuminstallepel-release-y //打开源配置 vim/etc/yum.repos.d/nginx.repo //在配置中设置nginx安装源,具体可以参考nginx官网文档('http://nginx.org/en/linux_packages.html#stable') [nginx] name=nginxrepo baseurl=http://nginx.org/packages/centos/7/$basearch/ gpgcheck=0 enabled=1 //安装nginx yuminstallnginx-y //查看nginx是否安装成功,成功的话会显示路径 whereisnginx
4、设置nginx
//设置开机启动 systemctlenablenginx //启动服务,重启是'systemctlrestartnginx',停止是'stop' systemctlstartnginx //重新加载,因为一般重新配置之后,不希望重启服务,这时可以使用重新加载 systemctlreloadnginx //查看服务器状态 systemctlstatusnginx //如果CentOS7系统打开了防火墙,还需打开防火墙端口 firewall-cmd--zone=public--permanent--add-service=http sudofirewall-cmd--reload firewall-cmd--list-service //如果要使用反向代理,CentOS7需要打开网络访问权限 setseboolhttpd_can_network_connect1
5、部署测试项目
//创建文件夹
mkdirserver
//进入文件夹
cdserver
//创建js文件
vimhome.js
//编写测试代码,注意,这里的ip地址一定要配置成0.0.0.0,如果配置成127.0.0.1,外网会报错端口3000链接不通
consthttp=require('http');
consthostname='0.0.0.0';
constport=3000;
constserver=http.createServer((req,res)=>{
res.statusCode=200;
res.setHeader('Content-Type','text/plain');
res.end('HelloWorld\n');
});
server.listen(port,hostname,()=>{
console.log(`服务器运行在http://${hostname}:${port}/`);
});
//启动
nodehome.js
//如果报错'Unhandled'error'event',可能是端口被占用了,先查看端口占用情况
ps-ef|grepnode
//如果有占用,删除占用,'xxxx'为'root'后的数字
skill-9xxxxx
出现:服务器运行在http://0.0.0.0:3000/即表示node运行成功,运行成功后,登录阿里云后台配置安全组规则
配置成功如下显示:
允许自定义TCP3000/3000IPv4地址段访问0.0.0.0/0node后台端口
然后就可以在浏览器地址栏输入你的服务器公网ip地址加上:3000,成功出现HelloWorld即表示安全组配置成功
6、配置nginx
//进入'/etc/nginx'文件夹,查看下'nginx.conf'配置文件
cd/etc/nginx
ls
vimnginx.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
//编写配置文件代码
#项目名字
upstreamwxServer{
#需要代理的node端口号,也就是你写的端口号
server0.0.0.0:3000;
#nginx最大连接数
keepalive8;
}
#nginx服务器实例
server{
#代理出去的端口号,默认Http协议的80端口,如果配置其它端口需要更改SELinux的设置
listen0.0.0.0:80;
#别人访问的域名或者ip地址,多个用空格隔开
server_namelzf.funwww.lzf.fun;
#错误日志存放地址
access_log/var/log/nginx/wxServer-3000.log;
location/{
proxy_set_headerX-Real-IP$remote_addr;
proxy_set_headerX-Forwarded-For$proxy_add_x_forwarded_for;
proxy_set_headerHost$http_host;
proxy_set_headerX-NginX-Proxytrue;
#proxy_pass设置反向代理用服务器域名,不使用反向代理,直接用上面upstream的名字就可以了
proxy_passhttp://wxServer/;
proxy_redirectoff;
}
}
//保存配置文件后,检查是否编写错误
nginx-t
//出现以下内容为正确
nginx:theconfigurationfile/etc/nginx/nginx.confsyntaxisok
nginx:configurationfile/etc/nginx/nginx.conftestissuccessful
//重新加载nginx服务器
systemctlreloadnginx
//在阿里云后台开启80端口的安全组,然后在浏览器输入域名,可以看到'HelloWorld'就表示nginx配置成功了
7、配置PM2
//安装PM2 npminstallpm2-g //进入你的node项目存放的文件夹,pwd是你的文件夹路径 cdpwd //启动pm2,--watch监听,每次改动代码自动启动,-i1启动一个实例,根据服务器又几个核心设置 //-i0则会根据机器当前核数自动开启尽可能多的进程 pm2starthome.js--watch-i1 //查看pm2 pm2ls //查看错误日志 pm2logs //重启 pm2restarthome.js //停止,id通过查看获得 pm2stophome|id //删除 pm2deletehome|id //了解程序的详细信息 pm2describehome|id //关闭Xshell,刷新域名,还可以看见'HelloWorld'表示配置成功
链接微信公众号接口配置
8、编写本地node代码
constKoa=require('koa')
constcors=require('koa2-cors')
constRouter=require('koa-router')
constcrypto=require('crypto')
constapp=newKoa()
//微信配置
constconfig={
wechat:{
appID:'appID',
appsecret:'appsecret',
token:'Maya'
}
}
//使用koa2-cors解决跨域问题
app.use(
cors({
origin:ctx=>{
if(ctx.url==='/test'){
returnfalse
}
return'*'
},
exposeHeaders:['WWW-Authenticate','Server-Authorization'],
maxAge:5,
credentials:true,
allowMethods:['GET','POST','DELETE'],
allowHeaders:['Content-Type','Authorization','Accept']
})
)
//给微信验证的
constwxServer=newRouter()
wxServer.get('/',asyncctx=>{
const{signature,timestamp,nonce,echostr}=ctx.query
consttoken=config.wechat.token
lethash=crypto.createHash('sha1')
constarr=[token,timestamp,nonce].sort()
hash.update(arr.join(''))
constshasum=hash.digest('hex')
if(shasum===signature){
return(ctx.body=echostr)
}
ctx.status=401
ctx.body='Invalidsignature'
})
//装载所有路由
constrouter=newRouter()
router.use('/forWx',wxServer.routes(),wxServer.allowedMethods())
//加载路由中间件
app.use(router.routes()).use(router.allowedMethods())
app.listen(3000)
console.log('[demo]start-quickisstartingatport3000')
9、通过内网穿透的方式测试本地代码是否ok
1、通过localtunnel启动内网穿透,不推荐,有可能启动成功,但是域名链接失败
//安装 npminstall-glocaltunnel //开启本地服务器 lt--port3000
2、通过natapp启动内网穿透,配置需要花费一点时间
可以通过内网穿透工具natapp!这篇文章安装配置,
如果你代码写的是开启3000端口,那么最好也配置成3000端口
tips:如果看到隧道链接成功,但是127.0.0.1:3000端口链接失败的提示,不代表安装配置失败,是需要你启动一下代码
安装配置成功后,启动
nodehome.js
能够成功在浏览器上看到Invalidsignature表示内网穿透成功
10、开启一个微信公众平台测试账号
在微信公众平台测试管理页面,接口配置信息,URL填写你natapp启动的域名加上forWx,比如我的域名是
http://qf7rja.natappfree.cc/forWx
Token是你自己自定义的,可以随便写,但是要和你本地代码里的Token一致,我这里用的是Maya
点击提交,显示配置成功
11、服务器链接微信公众号接口配置
通过上面的测试账号,验证了代码没有问题,可以配置成功接口配置,剩下的就是把代码上传到服务器了,安装选择rz和sz,当然,使用xftp更好
//安装 yuminstalllrzsz-y //上传,执行命令,选择打包文件 rz //下载,filename是你打包的服务器文件夹,或者单个文件 szfilename
上传成功后,解压缩,清除前面的HelloWorld代码,清空PM2,重新把现在代码挂到PM2上
在浏览器上输入域名+forWx能出现Invalidsignature表示成功,如果没有出现,配置不成功,需要排查原因
在微信公众平台登录账号,选择基本配置-->服务器配置,然后按照配置测试账号的方式去配置
点击提交,显示配置成功
尾声
嘘~~~长出了一口气,研究了老久,node服务器总算配置成功了,而且已经链接到公众号接口配置,并且我还有一个测试账号
可以用测试账号本地写代码,然后再上传到服务器验证的方式去开发
这样的做的原因是,测试账号玩坏了不心疼,转眼又弄好了一个,服务器玩坏了,配置起来可就麻烦了
剩下的就是开发具体业务了,什么拿到AccessToken啊,自动回复消息啊,自定义菜单啊,等等等等
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。