日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

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

發(fā)布時間:2024/3/13 编程问答 20 豆豆
生活随笔 收集整理的這篇文章主要介紹了 配置node服务器并且链接微信公众号接口配置(超详细) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

配置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 復制代碼

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

2、用nvm安裝node

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

3、安裝nginx

// 查看服務器系統(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è)置開機啟動 systemctl enable nginx// 啟動服務,重啟是'systemctl restart nginx',停止是 'stop' systemctl start nginx// 重新加載,因為一般重新配置之后,不希望重啟服務,這時可以使用重新加載 systemctl reload nginx// 查看服務器狀態(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、部署測試項目

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

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

配置成功如下顯示:

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

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

6、配置nginx

// 進入 '/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配置文件,文件名隨意,我一般喜歡用項目名加端口號,比如 'wxServer-3000' vim /etc/nginx/conf.d/wxServer-3000.conf// 編寫配置文件代碼 # 項目名字 upstream wxServer {# 需要代理的node端口號,也就是你寫的端口號server 0.0.0.0:3000;# nginx最大連接數(shù)keepalive 8; }# nginx服務器實例 server {# 代理出去的端口號,默認Http協(xié)議的80端口,如果配置其它端口需要更改 SELinux 的設(shè)置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 設(shè)置反向代理用服務器域名,不使用反向代理,直接用上面upstream的名字就可以了proxy_pass http://wxServer/;proxy_redirect off;}}// 保存配置文件后,檢查是否編寫錯誤 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服務器 systemctl reload nginx// 在阿里云后臺開啟80端口的安全組,然后在瀏覽器輸入域名,可以看到 'Hello World' 就表示nginx配置成功了 復制代碼

7、配置PM2

// 安裝PM2 npm install pm2 -g// 進入你的node項目存放的文件夾,pwd是你的文件夾路徑 cd pwd// 啟動pm2,--watch監(jiān)聽,每次改動代碼自動啟動,-i 1 啟動一個實例,根據(jù)服務器又幾個核心設(shè)置 // -i 0 則會根據(jù)機器當前核數(shù)自動開啟盡可能多的進程 pm2 start home.js --watch -i 1// 查看pm2 pm2 ls// 查看錯誤日志 pm2 logs// 重啟 pm2 restart home.js// 停止,id通過查看獲得 pm2 stop home|id// 刪除 pm2 delete home|id// 了解程序的詳細信息 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']}) )// 給微信驗證的 const wxServer = new Router() wxServer.get('/', async ctx => {const { signature, timestamp, nonce, echostr } = ctx.queryconst token = config.wechat.tokenlet 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 = 401ctx.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// 開啟本地服務器 lt --port 3000 復制代碼

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

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

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

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

安裝配置成功后,啟動

node home.js 復制代碼

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

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

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

http://qf7rja.natappfree.cc/forWx 復制代碼

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

點擊提交,顯示配置成功

11、服務器鏈接微信公眾號接口配置

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

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

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

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

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

點擊提交,顯示配置成功

尾聲

噓~~~長出了一口氣,研究了老久,node服務器總算配置成功了,而且已經(jīng)鏈接到公眾號接口配置,并且我還有一個測試賬號

可以用測試賬號本地寫代碼,然后再上傳到服務器驗證的方式去開發(fā)

這樣的做的原因是,測試賬號玩壞了不心疼,轉(zhuǎn)眼又弄好了一個,服務器玩壞了,配置起來可就麻煩了

剩下的就是開發(fā)具體業(yè)務了,什么拿到AccessToken啊,自動回復消息啊,自定義菜單啊,等等等等

參考

阿里云配置 node.js + Nginx 反向代理 CentOS 7 下 yum 安裝和配置 Nginx nodejs微信公眾號開發(fā)——1.接入微信公眾號

轉(zhuǎn)載于:https://juejin.im/post/5d09864b6fb9a07f0052ddfe

總結(jié)

以上是生活随笔為你收集整理的配置node服务器并且链接微信公众号接口配置(超详细)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。