配置node服務器并且鏈接微信公眾號接口配置步驟詳解

 更新時間:2019年06月21日 12:00:53   作者:Maya本尊   我要評論
這篇文章主要介紹了配置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 repo
baseurl=http://nginx.org/packages/centos/7/$basearch/
gpgcheck=0
enabled=1
// 安裝nginx
yum 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=http
sudo firewall-cmd --reload
firewall-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\n');
});
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運行成功,運行成功后,登錄阿里云后臺配置安全組規則
配置成功如下顯示:

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

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

6、配置nginx

// 進入 '/etc/nginx' 文件夾,查看下 'nginx.conf' 配置文件
cd /etc/nginx
ls
vim 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 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監聽,每次改動代碼自動啟動,-i 1 啟動一個實例,根據服務器又幾個核心設置
// -i 0 則會根據機器當前核數自動開啟盡可能多的進程
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
// 關閉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啊,自動回復消息啊,自定義菜單啊,等等等等

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關文章

  • node.js中的console.log方法使用說明

    node.js中的console.log方法使用說明

    這篇文章主要介紹了node.js中的console.log方法使用說明,本文介紹了console.log的方法說明、語法、接收參數、使用實例和實現源碼,需要的朋友可以參考下
    2014-12-12
  • Thinkjs3新手入門之添加一個新的頁面

    Thinkjs3新手入門之添加一個新的頁面

    Thinkjs 是一個快速、簡單的基于MVC和面向對象的輕量級Node.js開發框架,下面這篇文章主要給大家介紹了關于Thinkjs3新手入門之添加一個新的頁面的相關資料,文中通過示例代碼介紹的非常詳細,需要的朋友可以參考下。
    2017-12-12
  • 為什么Node.js會這么火呢?Node.js流行的原因

    為什么Node.js會這么火呢?Node.js流行的原因

    是什么原因讓Node.js突然間如此流行呢?聽起來像是有了一種新的Web開發技術,是這樣嗎?我們來匯總一下。
    2014-12-12
  • Nodejs express框架一個工程中同時使用ejs模版和jade模版

    Nodejs express框架一個工程中同時使用ejs模版和jade模版

    這篇文章主要介紹了Nodejs express框架一個工程中同時使用ejs模版和jade模版 的相關資料,需要的朋友可以參考下
    2015-12-12
  • 使用npm發布Node.JS程序包教程

    使用npm發布Node.JS程序包教程

    這篇文章主要介紹了使用npm發布Node.JS程序包教程,本文講解了配置package.json、注冊npm帳號、發布程序包等內容,需要的朋友可以參考下
    2015-03-03
  • Node.js開啟Https的實踐詳解

    Node.js開啟Https的實踐詳解

    最近因為工作需要,需要將網站切換到了https。其實去年就想遷的遷移過去,但是資金緊缺就找了個免費的證書,實際效果不是很好。但是最近騰訊云推出了免費的ssl證書申請。樓主是親測有效的。下面通過本文來一起看看Node.js開啟Https的詳細步驟吧,有需要的可以參考借鑒。
    2016-10-10
  • 對node通過fs模塊判斷文件是否是文件夾的實例講解

    對node通過fs模塊判斷文件是否是文件夾的實例講解

    今天小編就為大家分享一篇對node通過fs模塊判斷文件是否是文件夾的實例講解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-06-06
  • Centos7 中 Node.js安裝簡單方法

    Centos7 中 Node.js安裝簡單方法

    這篇文章主要介紹了Centos7 中 Node.js安裝簡單方法,非常不錯具有一定的參考借鑒價值,需要的朋友可以參考下
    2016-11-11
  • 利用node實現一個批量重命名文件的函數

    利用node實現一個批量重命名文件的函數

    這篇文章主要給大家介紹了關于利用node實現一個批量重命名文件的函數的相關資料,文中通過示例示例代碼介紹的非常詳細,對大家學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧。
    2017-12-12
  • nodejs的安裝使用與npm的介紹

    nodejs的安裝使用與npm的介紹

    Node.js是一個Javascript運行環境(runtime environment),發布于2009年5月,由Ryan Dahl開發,實質是對Chrome V8引擎進行了封裝。本文詳細介紹了Node.js的安裝和使用,需要的朋友可以參考下
    2019-09-09

最新評論

湖北11选5走势图爱彩乐