在虚拟主机上运行Flask-Twip

2012年11月23日 | 分类: 关于推特 | 标签: , ,

关于Flask-Twip的介绍请参考前一篇文章

Flask-Twip支持在普通的虚拟主机上运行,通过虚拟主机的CGI界面运行。

什么是CGI

简单地说CGI界面(Common Gateway Interface)就是在每次HTT请求时,由HTTP server调用一个脚本,在调用脚本时将客户的HTTP request headers信息放在环境变量中,然后将脚本到stdout的输出当作HTTP response返回给客户端。

显然对每个HTTP请求都会进行一次fork操作,CGI脚本的性能会非常糟糕。不过对API proxy来说足够了。

如何在普通虚拟主机上搭建Flask-Twip

要在虚拟主机上搭建Flask-Twip,需要虚拟主机提供了SSH访问以方便搭建环境。

准备工作:安装Python

Flask-TwipFlask框架的一个扩展,Flask本身已经支持Python3,但是它依赖的werkzeug目前最高仅支持Python2.7。为了方便未来支持Python3,Flask-Twip本身仅支持Python2.7。

首先判断Python版本:ssh到服务器上,执行python --version。若版本不等于Python2.7,需要手动安装Python2.7。具体步骤不在这里说明。

Python2.7安装完毕后,执行以下命令安装distributepipvirtualenv

curl http://python-distribute.org/distribute_setup.py | python
curl https://raw.github.com/pypa/pip/master/contrib/get-pip.py | python
pip install virtualenv

创建虚拟环境

虚拟环境(virtualenv)是Python的一个常用工具,用于自动化创建一个隔离的Python运行环境。

在任意位置执行virtualenv venv,其中venv是你需要的虚拟环境的名字(名字本身不重要)。virtualenv会在创建虚拟环境时输出信息。

创建完毕后执行source venv/bin/activate。你的命令行提示符会加上一个(venv)字样提醒你目前是在Python的virtualenv里。

安装Flask-Twip

pip install Flask-Twip

准备CGI脚本

请参考https://github.com/yegle/flask_twip/blob/master/examples/cgi/twip.cgi脚本。

注意:脚本头部的#!/usr/bin/env python需要修改为你虚拟环境内的Python(例如你创建的虚拟环境在/home/yegle/venv/,那么脚本头部应该修改为#!/home/yegle/venv/bin/python

样例twip.cgi脚本中使用的是FileBackend,这是与以前twip的PHP版一样的文件形式存储。脚本中be = FileBackend(folder='/home/yegle/cgi-bin/tokens')一句指定了backend的存储目录是/home/yegle/cgi-bin/tokens。你可以根据你的需要进行修改。

配置文件

配置文件请参考https://github.com/yegle/flask_twip/blob/master/examples/settings-example.py。需要填写你的OAuth Key/Secret。

配置文件中的SECRET_KEY变量请使用随机字符串。这个是Flask的session加密用key

将修改好后的配置文件与CGI脚本放在你的主机商指定的cgi-bin目录,并给twip.cgi脚本加上可执行权限(chmod +x twip.cgi)。

测试

打开浏览器访问该CGI脚本,进行测试

测试站点

我已搭建了一个测试站点供大家测试。由于域名被DNS污染,此测试站点仅做可行性测试 https://yegle.net/cgi-bin/twip.cgi/

问题与解答

如有问题可以在留言提出,我会尽量作答。提问前请先学习提问的智慧,否则我会直接删除。

原文http://blog.yegle.net/2012/11/22/run-flask-twip-on-virtual-host/

  1. shellcmd
    2012年11月23日19:04

    虽然说的是虚拟主机,可是实际上是需要root权限来做一些工作的,一般的同学做起来会比较困难

  2. 2012年11月23日14:35

    博主,我今天看见了一个Twitter的API项目:Embr,自己搭建了一个感觉很不错。
    项目主页:
    https://code.google.com/p/embr/

    • iGFW
      2012年11月23日19:59

      嗯,这个以前我介绍过。

  3. AS
    2012年11月23日14:04

    https://code.google.com/p/floydhosts/
    “GFW hosts”
    https://code.google.com/p/floydhosts/downloads/list
    “fbhosts HOSTS 21 hours ago 21 hours ago 1.4 KB
    hosts HOSTS 22 hours ago 22 hours ago 19.3 KB
    hosts.txt HOSTS 23 hours ago 23 hours ago 50.1 KB ”

    2012年11月23日

  4. 嗚嗚嗚
    2012年11月23日12:29

    繞過GFW facebook api 如何建立?博主好多文章都介紹 推 的建立沒FB

    • iGFW
      2012年11月23日19:58

      非死不可太麻烦,我玩不转,不怎么玩,呵呵,没关注过。