溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

如何配置node服務(wù)器并且鏈接微信公眾號接口配置

發(fā)布時(shí)間:2021-08-17 14:05:23 來源:億速云 閱讀:106 作者:小新 欄目:web開發(fā)

這篇文章主要為大家展示了“如何配置node服務(wù)器并且鏈接微信公眾號接口配置”,內(nèi)容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領(lǐng)大家一起研究并學(xué)習(xí)一下“如何配置node服務(wù)器并且鏈接微信公眾號接口配置”這篇文章吧。

配置node服務(wù)器

在購買好服務(wù)器后,用Xshell鏈接到服務(wù)器。

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

安裝完,關(guān)閉重新啟動一下Xshell。

2、用nvm安裝node

// 查看當(dāng)前可安裝node版本
nvm ls-remote
// 選擇'nodejs.org'官網(wǎng)LTS穩(wěn)定版本
nvm install v10.16.0
// 出現(xiàn)這樣的顯示表示安裝好了,默認(rèn)的是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可以安裝多個(gè)node版本
nvm install v10.11.0
// 可以使用命令查看安裝了多少個(gè)node版本
nvm ls
// 可以使用命令指定默認(rèn)的node版本,如果安裝了多個(gè)node版本,一定要指定一個(gè)默認(rèn)的版本
nvm alias default v10.11.0
// 如果你不想使用默認(rèn),只是零時(shí)用一下,可以使用命令
nvm use v10.11.0

3、安裝nginx

// 查看服務(wù)器系統(tǒng)版本
$ cat /etc/redhat-release 
// 安裝epel-release 源
yum install epel-release -y
// 打開源配置
vim /etc/yum.repos.d/nginx.repo
// 在配置中設(shè)置nginx安裝源,具體可以參考nginx官網(wǎng)文檔('http://nginx.org/en/linux_packages.html#stable')
[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/centos/7/$basearch/
gpgcheck=0
enabled=1
// 安裝nginx
yum install nginx -y
// 查看nginx是否安裝成功,成功的話會顯示路徑
whereis nginx

4、設(shè)置nginx

// 設(shè)置開機(jī)啟動
systemctl enable nginx
// 啟動服務(wù),重啟是'systemctl restart nginx',停止是 'stop'
systemctl start nginx
// 重新加載,因?yàn)橐话阒匦屡渲弥螅幌M貑⒎?wù),這時(shí)可以使用重新加載
systemctl reload nginx
// 查看服務(wù)器狀態(tài)
systemctl status nginx
// 如果CentOS7 系統(tǒng)打開了防火墻,還需打開防火墻端口
firewall-cmd --zone=public --permanent --add-service=http
sudo firewall-cmd --reload
firewall-cmd --list-service
// 如果要使用反向代理,CentOS7 需要打開網(wǎng)絡(luò)訪問權(quán)限
setsebool httpd_can_network_connect 1

5、部署測試項(xiàng)目

// 創(chuàng)建文件夾
mkdir server
// 進(jìn)入文件夾
cd server
// 創(chuàng)建js文件
vim home.js
// 編寫測試代碼,注意,這里的ip地址一定要配置成0.0.0.0,如果配置成127.0.0.1,外網(wǎng)會報(bào)錯(cuò)端口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\n');
});
server.listen(port, hostname, () => {
console.log(`服務(wù)器運(yùn)行在 http://${hostname}:${port}/`);
});
// 啟動
node home.js
// 如果報(bào)錯(cuò)'Unhandled 'error' event',可能是端口被占用了,先查看端口占用情況
ps -ef|grep node
// 如果有占用,刪除占用,'xxxx'為'root'后的數(shù)字
skill -9 xxxxx

出現(xiàn):服務(wù)器運(yùn)行在 http://0.0.0.0:3000/ 即表示node運(yùn)行成功,運(yùn)行成功后,登錄阿里云后臺配置安全組規(guī)則
配置成功如下顯示:

允許 自定義 TCP 3000/3000 IPv4地址段訪問 0.0.0.0/0 node后臺端口

然后就可以在瀏覽器地址欄輸入你的服務(wù)器公網(wǎng)ip地址加上:3000,成功出現(xiàn)Hello World即表示安全組配置成功

6、配置nginx

// 進(jìn)入 '/etc/nginx' 文件夾,查看下 'nginx.conf' 配置文件
cd /etc/nginx
ls
vim nginx.conf
// 低版本的nginx 'nginx.conf' 文件夾里有以下內(nèi)容
// # include /etc/nginx/conf.d/*.conf;
// # include /etc/nginx/sites-enabled/*;
// 去掉 '#' 號
// 創(chuàng)建nginx配置文件,文件名隨意,我一般喜歡用項(xiàng)目名加端口號,比如 'wxServer-3000'
vim /etc/nginx/conf.d/wxServer-3000.conf
// 編寫配置文件代碼
# 項(xiàng)目名字
upstream wxServer {
# 需要代理的node端口號,也就是你寫的端口號
server 0.0.0.0:3000;
# nginx最大連接數(shù)
keepalive 8;
}
# nginx服務(wù)器實(shí)例
server {
# 代理出去的端口號,默認(rèn)Http協(xié)議的80端口,如果配置其它端口需要更改 SELinux 的設(shè)置
listen 0.0.0.0:80;
# 別人訪問的域名或者ip地址,多個(gè)用空格隔開
server_name lzf.fun www.lzf.fun;
# 錯(cuò)誤日志存放地址
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 設(shè)置反向代理用服務(wù)器域名,不使用反向代理,直接用上面upstream的名字就可以了
proxy_pass http://wxServer/;
proxy_redirect off;
}
}
// 保存配置文件后,檢查是否編寫錯(cuò)誤
nginx -t
// 出現(xiàn)以下內(nèi)容為正確
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
// 重新加載nginx服務(wù)器
systemctl reload nginx
// 在阿里云后臺開啟80端口的安全組,然后在瀏覽器輸入域名,可以看到 'Hello World' 就表示nginx配置成功了

7、配置PM2

// 安裝PM2
npm install pm2 -g
// 進(jìn)入你的node項(xiàng)目存放的文件夾,pwd是你的文件夾路徑
cd pwd
// 啟動pm2,--watch監(jiān)聽,每次改動代碼自動啟動,-i 1 啟動一個(gè)實(shí)例,根據(jù)服務(wù)器又幾個(gè)核心設(shè)置
// -i 0 則會根據(jù)機(jī)器當(dāng)前核數(shù)自動開啟盡可能多的進(jìn)程
pm2 start home.js --watch -i 1
// 查看pm2
pm2 ls
// 查看錯(cuò)誤日志
pm2 logs
// 重啟
pm2 restart home.js
// 停止,id通過查看獲得
pm2 stop home|id
// 刪除
pm2 delete home|id
// 了解程序的詳細(xì)信息
pm2 describe home|id
// 關(guān)閉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']
})
)
// 給微信驗(yàn)證的
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、通過內(nèi)網(wǎng)穿透的方式測試本地代碼是否ok

1、通過localtunnel啟動內(nèi)網(wǎng)穿透,不推薦,有可能啟動成功,但是域名鏈接失敗

// 安裝
npm install -g localtunnel
// 開啟本地服務(wù)器
lt --port 3000

2、通過natapp啟動內(nèi)網(wǎng)穿透,配置需要花費(fèi)一點(diǎn)時(shí)間

可以通過內(nèi)網(wǎng)穿透工具natapp!這篇文章安裝配置,

如果你代碼寫的是開啟3000端口,那么最好也配置成3000端口

tips:如果看到隧道鏈接成功,但是127.0.0.1:3000端口鏈接失敗的提示,不代表安裝配置失敗,是需要你啟動一下代碼

安裝配置成功后,啟動

node home.js

能夠成功在瀏覽器上看到 Invalid signature 表示內(nèi)網(wǎng)穿透成功

10、開啟一個(gè)微信公眾平臺測試賬號

在微信公眾平臺測試管理頁面,接口配置信息,URL填寫你natapp啟動的域名加上forWx,比如我的域名是

http://qf7rja.natappfree.cc/forWx

Token是你自己自定義的,可以隨便寫,但是要和你本地代碼里的Token一致,我這里用的是Maya

點(diǎn)擊提交,顯示配置成功

11、服務(wù)器鏈接微信公眾號接口配置

通過上面的測試賬號,驗(yàn)證了代碼沒有問題,可以配置成功接口配置,剩下的就是把代碼上傳到服務(wù)器了,安裝選擇rz和sz,當(dāng)然,使用xftp更好

// 安裝
yum install lrzsz -y
// 上傳,執(zhí)行命令,選擇打包文件
rz
// 下載,filename是你打包的服務(wù)器文件夾,或者單個(gè)文件
sz filename

上傳成功后,解壓縮,清除前面的 Hello World 代碼,清空 PM2 ,重新把現(xiàn)在代碼掛到 PM2 上

在瀏覽器上輸入域名 + forWx 能出現(xiàn) Invalid signature 表示成功,如果沒有出現(xiàn),配置不成功,需要排查原因

在微信公眾平臺登錄賬號,選擇基本配置-->服務(wù)器配置,然后按照配置測試賬號的方式去配置。

以上是“如何配置node服務(wù)器并且鏈接微信公眾號接口配置”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對大家有所幫助,如果還想學(xué)習(xí)更多知識,歡迎關(guān)注億速云行業(yè)資訊頻道!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI