注册 留言板
当前位置:首页 > 移动开发 > 微信 > 正文

利用阿里云ECS搭建微信公众平台服务器

来源:INFOCOOL   发布时间: 2016-11-26   作者:网友   浏览次数:
摘要: 最近虽然学术进展依然缓慢,可是没有那么大的心理压力了。 原因可能有二,一是前一段刚投了一篇文章出去,二是前一段审了一篇...

最近虽然学术进展依然缓慢,可是没有那么大的心理压力了。

原因可能有二,一是前一段刚投了一篇文章出去,二是前一段审了一篇投在还不错的期刊上的超水的文章,结果别的reviewer还给放过去了,我直接让打回重改了。可能是看到这么水的文章都有希望发这样的期刊吧……

最近创建了一个自己的微信公众号,滑雪前线,用来分享一些滑雪相关资讯,因为我发现国内的滑雪虽然已经热起来了,但是还没有形成相应的文化。

可是自己毕竟是码农出身,天生的手贱,不甘于每天安安心心找几篇文章翻译翻译、搬运搬运,总想要把技术方面的东西用上来。这不,开始给公众号搭建服务器了。

主要参考这篇Blog,但是由于按照原博客Token验证不了,且原博客werobot版本较老,对代码有所微调。

买的是阿里云最便宜1核1G内存,1M带宽,40G硬盘的ECS服务器,OS Ubuntu 14.04 64位操作系统,一个月68块钱,对我来说也就是两顿饭钱。

主要组件展示

  1. Nginx
  2. Gunicorn
  3. Python
  4. Pip
  5. Virtualenv
  6. Flask
  7. Supervisor
  8. WeRoBot SDK

简单说下主要逻辑关系,我们用Nginx作为Web服务器,该服务器无法直接和Flask (or Python)交互,所以我们需要引入Gunicorn,它是一个独立的WSGI容器,可以容纳WSGI应用并且提供HTTP服务。而后,用Supervisor 管理服务器进程,当某个应用挂掉,可以自动重启。

安装Virtualenv及必要组件

用来创建不同的Python隔离环境,可以保证一个干净的环境。

$ adduser wechatmanager #创建新用户
$ sudo apt-get update 
$ sudo apt-get install zsh # 强烈推荐该shell
$ sudo apt-get install -y python python-pip python-virtualenv # 安装各类组件
$ sudo mkdir /home/wechatmanager && cd /home/wechatmanager 
$ sudo virtualenv wechat_connector# 此时在mirror文件夹下创建一个虚拟环境
$ cd /home/wechatmanager/wechat_connector 
$ sudo source ./bin/activate # 激活虚拟环境
$ sudo apt-get install -y nginx gunicorn # 安装各类组件

# 取消激活命令为
deactivate

安装WeRoBot SDK

$ sudo pip install werobot

基本应答helloworld代码 in app.py:

import werobot
robot = werobot.WeRoBot(token='tokenhere')
# 消息处理函数
@robot.handler
def echo(message): 
    return 'Hello World!'

robot.run(server="gunicorn", port=8000)

然后去微信公众平台把Token改为你自己设置的Token。

配置 Nginx

$ sudo /etc/init.d/nginx start #启动nginx
$ sudo rm /etc/nginx/sites-enabled/default #删除默认配置
$ sudo touch /etc/nginx/sites-available/wechat_connector#建立项目文件
$ sudo ln -s /etc/nginx/sites-available/wechat_connector/etc/nginx/sites-enabled/wechat_connector #设置软链接
$ sudo vim /etc/nginx/sites-enabled/wechat_connector #编辑项目文件

添加:

server { 
    server_name your_domain;
    listen 80;
    location /weixin { 
        proxy_pass http://127.0.0.1:8000;
    }
}

腾讯公众号默认只能连接http的80端口和https的443端口
当公众号向(your_domain/weixin)发送消息,便会反向代理到127.0.0.1的8000端口,这也是为什么我们之前的代码监听8000端口的原因

# 重启 nginx:
$ sudo /etc/init.d/nginx restart

配置 Supervisor

$ sudo apt-get install -y supervisor #安装
$ sudo vim /etc/supervisor/conf.d/test.conf #创建配置文件

添加:

[program:wechat_connector]
command = python /home/wechatmanager/wechat_connector/app.py
directory = /home/wechatmanager/wechat_connector
timeout = 60*60
user = newuser
autostart = true
autorestart = true
redirect_stderr = true
stdout_logfile = /home/mirror/logs/wechat_connector.log

启动Supervisor

$ sudo supervisorctl reread
$ sudo supervisorctl update
$ sudo supervisorctl start wechat_connector ## 重启supervisor
$ sudo supervisorctl restart wechat_connector

微信平台端设置
进入微信公众平台—>开发者模式—>设置URL和Token,URL为your_domain/weixin,Token为你在werobot中设定的
如果配置没有问题,顺利通过,用微信给你的公众平台发消息应该能看到’hello world!’。
Tips: 出现任何问题,重启supervisor,倘若仍不能够解决,请查看log文件。
参考
阿里云ECS搭建微信公众平台
WeRoBot
VPS环境搭建详解
Flask on Ubuntu



文/TheEverest(简书作者)
原文链接:http://www.jianshu.com/p/e22d152fae9a
著作权归作者所有,转载请联系作者获得授权,并标注“简书作者”。


我来说两句
评论内容:
验  证  码:
 
(网友评论仅供其表达个人看法,并不表明本站同意其观点或证实其描述。)
评论列表
已有 0 条评论(查看更多评论)
精彩专题
友情链接:
QQ交流群:①群 155252576 ②群 469193068 ③群 531831996 ④群 243504572
设为首页 - 加入收藏 Copyright @2016 Infocool 版权所有 粤ICP备16000626号