最近虽然学术进展依然缓慢,可是没有那么大的心理压力了。
原因可能有二,一是前一段刚投了一篇文章出去,二是前一段审了一篇投在还不错的期刊上的超水的文章,结果别的reviewer还给放过去了,我直接让打回重改了。可能是看到这么水的文章都有希望发这样的期刊吧……
最近创建了一个自己的微信公众号,滑雪前线,用来分享一些滑雪相关资讯,因为我发现国内的滑雪虽然已经热起来了,但是还没有形成相应的文化。
可是自己毕竟是码农出身,天生的手贱,不甘于每天安安心心找几篇文章翻译翻译、搬运搬运,总想要把技术方面的东西用上来。这不,开始给公众号搭建服务器了。
主要参考这篇Blog,但是由于按照原博客Token验证不了,且原博客werobot版本较老,对代码有所微调。
买的是阿里云最便宜1核1G内存,1M带宽,40G硬盘的ECS服务器,OS Ubuntu 14.04 64位操作系统,一个月68块钱,对我来说也就是两顿饭钱。
主要组件展示
- Nginx
- Gunicorn
- Python
- Pip
- Virtualenv
- Flask
- Supervisor
- 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
原文链接:http://www.jianshu.com/p/e22d152fae9a
著作权归作者所有,转载请联系作者获得授权,并标注“简书作者”。