在虚拟主机上运行Flask-Twip

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

首先判断Python版本:ssh到服务器上,执行python --version。若版本不等于Python2.7,需要手动安装Python2.7。具体步骤不在这里说明。安装Python2.7不需要root权限,编译安装到你自己的家目录里即可。

Python2.7安装完毕后,执行以下命令安装distributepipvirtualenv(如果你安装到自己家目录里,需要用绝对地址调用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 !

blogroll

social