转载

在阿里云的ubuntu主机上用Node.js搭建微信公众号服务器

环境配置

配置云主机

购买云主机,选择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所在的目录:

which node 

为了让node应用在80端口下执行,需要把nvm中node用下面的命令复制到/usr/local/bin下面:

n=$(which node);n=${n%/bin/node}; chmod -R 755 $n/bin/*; sudo cp -r $n/{bin,lib,share} /usr/local 

连接云服务器管理终端,执行 which node ,应该看到:

/usr/local/bin/node 

以后要启用新的node,还要再次执行这一步骤。

允许Node使用80端口

在Linux上,1024以下的端口只能开放给root使用,为了允许新建的用户在80端口下启动node应用,可以执行下面两条命令:

sudo apt-get install libcap2-bin sudo setcap cap_net_bind_service=+ep /usr/local/bin/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
原文  http://www.ituring.com.cn/article/217004
正文到此结束
Loading...