关于Flask-Twip
的介绍请参考前一篇文章。
Flask-Twip
支持在普通的虚拟主机上运行,通过虚拟主机的CGI
界面运行。
什么是CGI
CGI
界面(Common Gateway Interface)是在每次HTTP请求时,由HTTP server调用一个脚本,在调用脚本时将客户的HTTP request headers信息放在环境变量中,然后将脚本到stdout
的输出当作HTTP response返回给客户端。
每个HTTP请求都会进行一次fork操作,CGI脚本的性能非常糟糕。不过对API proxy来说足够了。
如何在普通虚拟主机上搭建Flask-Twip
要在虚拟主机上搭建Flask-Twip,需要虚拟主机提供了SSH访问以方便搭建环境。
准备工作:安装Python
Flask-Twip
是Flask
框架的一个扩展,Flask
本身已经支持Python3,但是它依赖的werkzeug
目前最高仅支持Python2.7。为了方便未来支持Python3,Flask-Twip
本身仅支持Python2.7。
首先判断Python版本:ssh
到服务器上,执行python --version
。若版本不等于Python2.7,需要手动安装Python2.7。具体步骤不在这里说明。安装Python2.7不需要root权限,编译安装到你自己的家目录里即可。
Python2.7安装完毕后,执行以下命令安装distribute
、pip
和virtualenv
(如果你安装到自己家目录里,需要用绝对地址调用python,例如/home/yegle/python3/bin/python
)
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/
问题与解答
如有问题可以在留言提出,我会尽量作答。提问前请先学习提问的智慧,否则我会直接删除。
Comments !