推薦使用CentOS操作系統,本人在使用Ubuntu操作系統時安裝第三方軟件不是很順利,導致在微信公衆號服務器配置的Token驗證失敗不通過上浪費大量時間。
以下是 CentOS 和 Ubuntu的介紹:
拋開內核版本來說,Linux各發行版用的內核都是一樣的,不同的只是安裝的軟件包。
CentOS是RedHat的社區版本,可以兼容RedHat的RPM安裝包,一般用作服務器,預安裝的也都是服務器的內容。除了沒有RedHat服務外(反正要錢的咱也不會買),用起來與RedHat相差不大。包管理一般用rpm或者yum來管理。
Ubuntu是基於Debian發行版和GNOME桌面環境,也有KDE版本,屬於較流行的發行版,它強化了圖形方面的功能,有面向一般用戶的桌面版本,也有服務器版本。因爲其桌面版本比較漂亮,有較多多媒體方面的軟件和ubuntu軟件中心的支持,對一般用戶也還算好用,所以較流行。其服務器版本也就沒什麼好說了,都差不太多。包管理一般用apt-get。
阿里雲服務器+微信公衆號配置操作如下:
1、購買阿里雲服務器服務https://www.aliyun.com/,從“雲服務器ECS”進入實例
遠程登入服務器,輸入root + 密碼登入(實例,端口系統會默認選好)。
2、CentOS後臺服務器的搭建
以下部分參考來源:https://yq.aliyun.com/articles/708415
安裝NodeJS
首先執行以下命令
sudo su
下載最新的穩定版 v6.10.3 到本地
wget https://nodejs.org/dist/v6.10.3/node-v6.10.3-linux-x64.tar.xz
下載完成後, 將其解壓
tar xvJf node-v6.10.3-linux-x64.tar.xz
將解壓的 Node.js 目錄移動到 /usr/local 目錄下
mv node-v6.10.3-linux-x64 /usr/local/node-v6
配置 node 軟鏈接到 /bin 目錄
ln -s /usr/local/node-v6/bin/node /bin/node
配置 NPM
NPM
是 Node.js
的包管理和分發工具。它可以讓 Node.js 開發者能夠更加輕鬆的共享代碼和共用代碼片段
下載 node
的壓縮包中已經包含了 npm , 我們只需要將其軟鏈接到 bin 目錄下即可
ln -s /usr/local/node-v6/bin/npm /bin/npm
配置環境變量
將 /usr/local/node-v6/bin 目錄添加到 $PATH 環境變量中可以方便地使用通過 npm 全局安裝的第三方工具
echo 'export PATH=/usr/local/node-v6/bin:$PATH' >> /etc/profile
生效環境變量
source /etc/profile
安裝 Express
安裝 Express 應用腳手架:
npm install express-generator -g
創建新的項目
執行
cd /data/
express yourApp
這時候會在 /data
生成應用目錄 /yourApp
,繼續執行以下命令
cd yourApp
npm install
npm start
配置服務器信息,進入開發者模式
微信平臺會去驗證你填寫的服務器的有效性,所以配置服務器前要先編寫服務器有效性驗證的代碼。
在終端使用 Ctrl + C
終止剛纔啓動的服務,然後執行以下命令安裝依賴的文件:
npm install xml2js sha1 querystring
編輯 app.js,參考下面的代碼:
示例代碼:/data/yourApp/app.js
var express = require('express');
var app = express();
var http = require('http');
var sha1 = require('sha1');
var xml2js = require('xml2js');
var querystring = require('querystring');
process.env.PORT = '80';
function checkSignature(req) {
// 獲取校驗參數
var signature = req.query.signature;
var timestamp = req.query.timestamp;
var nonce = req.query.nonce;
// 此處爲實驗分配了一個 token,也可以修改爲自己的 token
var token = 'Password';
// 按照字典排序
var params = [token, timestamp, nonce];
params.sort();
// 連接
var str = sha1(params.join(""));
// 返回簽名是否一致
return str == signature;
}
// 接入驗證
app.get('/', function(req, res) {
// 簽名成功
if (checkSignature(req)) {
res.send(200, req.query.echostr);
} else {
res.send(200, 'fail');
}
});
module.exports = app;
啓動服務:
npm start
3、微信公衆號配置
登錄微信公衆號平臺,然後拉到頁面的最下面左側“開發”,點擊基本配置菜單。獲取AppID,AppSecret,填寫IP白名單(把阿里雲服務器的IP地址填寫進去)
接着點擊上圖,服務器配置,修改配置:
填寫以下信息:
- 服務器地址(URL):填寫
您的雲服務器 IP 地址
- 令牌(Token):填寫上面代碼中使用到的 Token,如無修改,直接使用
Password(阿里雲服務器上的
Token要和微信公衆號的
Token設置爲一模一樣)
- 消息加解密密鑰(EncodingAESKey):隨機字符串。可以讓平臺生成。
- 消息加解密方式:選擇
明文方式
。
配置完畢後點擊提交,提交成功後,在基本配置菜單頁面點擊啓用。
此時,微信用戶給公衆號發送的信息,會由微信平臺轉發給您的服務器,然後您的服務器進行處理後返回給用戶。
最後點擊提交,檢查是否可以提交成功。