在阿里雲的ubuntu主機上用Node.js搭建微信公眾號伺服器

海興發表於2016-06-19

環境配置

配置雲主機

購買雲主機,選擇ubuntu系統,通過管理終端連線伺服器,通過root使用者登入。

用adduser命令新建一個使用者,以後通過ssh連線時使用這個使用者名稱。

把使用者新增到sudo 使用者組,給使用者執行sudo級別命令的許可權。

sudo adduser <username> sudo

通過ssh連線到遠端主機。

ssh username@host

Node.js安裝及配置

安裝nvm

先從ubuntu的程式碼庫裡安裝構建工具包必須的軟體包:

sudo apt-get update
sudo apt-get install build-essential libssl-dev

nvm專案主頁上找到安裝命令(ubutun下用wget):

wget -qO- https://raw.githubusercontent.com/creationix/nvm/v0.31.1/install.sh | bash

為了在不退出的前提下使用nvm,還要重新編譯一下自己的profile:

source ~/.profile

執行nvm ls-remote,檢查安裝是否成功。

安裝Node.js

用nvm安裝node.js

 nvm i 5.11.1

允許Node使用80埠

在Linux上,1024以下的埠只能開放給root使用,為了允許新建的使用者在80埠下啟動node應用,可以執行下面兩條命令:

sudo apt-get install libcap2-bin
sudo setcap cap_net_bind_service=+ep `readlink -f \`which node\``

安裝PM2

PM2是Node.js應用的程式管理器,自帶負載均衡。將pm2安裝在全域性環境下:

npm i -g pm2

安裝Mongodb

  1. 匯入公鑰

    sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv EA312927

  2. 給mongodb建立一個list檔案

    echo "deb http://repo.mongodb.org/apt/ubuntu trusty/mongodb-org/3.2 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-3.2.list

  3. 過載本地包資料庫

    sudo apt-get update

  4. 安裝Mongodb

    sudo apt-get install -y mongodb-org

  5. 啟動mongodb

    sudo service mongod start

建立Git裸庫

  1. 安裝git

    sudo apt-get install git

  2. 建立裸倉庫

    mkdir weixin.git cd weixin.git git --bare init

  3. 建立工作目錄

    git clone ./weixin.git ./weixin

  4. 首次提交

    echo "Weixin API Server" > README.md
    git add .
    git config --local user.name username
    git config --local user.email username@mail.com
    git commit -m "Add README.md"
    git push origin master
    
  5. clone到本地

    git clone username@host:/path/to/weixin.git
    

連線測試

申請公眾平臺測試賬號

在公眾號的開發工具中,可以申請公眾平臺測試賬號。

測試賬號申請通過後,可以得到測試用的appID及appSecret。掃描測試號的二維碼,可以開啟與測試賬號的對話方塊。

建立測試應用

  1. 在工作目錄下用npm init初始化專案
  2. 安裝express

    npm i -S express
    
  3. 安裝wechat

    npm i -S wechat
    
  4. 安裝wechat-api

    npm i -S wechat-api
    
  5. 建立測試應用 index.js

    var http = require('http');
    var API = require('wechat-api');
    var api = new API(appID,appSecret);
    var express = require('express');
    var app = express();
    var wechat = require('wechat');
    var config = {
      appid: appID,
      appsecret: appSecret,
      token: token
    };
    
    
    app.use(express.query());
    app.use('/', wechat(config, function (req, res, next) {
      var message = req.weixin;
      console.log(message);
      res.reply("Hello");
    }));
    /*
     * 響應微信測試伺服器的連線驗證
     **/
    app.get('/', function(req, res){
       var echostr = req.query.echostr,
           signature = req.query.signature;
       console.log(signature);
       res.send(req.query.echostr);
    });
    /*
     * 測試獲取token命令
     **/
    app.get('/get_token',function(req,res) {
       api.getLatestToken(function(err,token) {
         res.send(token);
       });
    });
    app.listen(80);
    console.log("Server running at http://127.0.0.1:80/");
    

配置測試伺服器

  1. 用pm2啟動剛剛建立的測試應用

    sudo pm2 start index.js

  2. 在測試號管理中新增測試伺服器資訊,token可以隨便填。

  3. 訪問測試伺服器上的/get_token地址,檢查瀏覽器中顯示的訊息是否有效。

  4. 在微信中發訊息給測試號,看是否能收到自動回覆的訊息

參考資料

  1. How To Install Node.js with NVM (Node Version Manager) on a VPS
  2. How To Use PM2 to Setup a Node.js Production Environment On An Ubuntu VPS
  3. pm2
  4. How To Install Node.js on an ubuntu-14.04 Server
  5. node-webot

相關文章