自建birdnest Twitter API proxy

来源:一阁Blog

之前一直以为birdnest必须在GAE环境下才能搭建,经由Black-Xstar的提醒,才知道只要主机支持python即可使用birdnest搭建twitter api proxy。经过尝试之后终于成功搭建了一个birdnest的twitter api proxy.

首先你要有一个支持python,并且你有ssh访问权限的虚拟主机空间。如果你没有,你可以选择在Google App Engine上搭建。具体可以参考ifanr论坛上的教程,这里不再赘述。

birdnest是一个python程序,它使用wsgi开启了一个http服务,能接受正常http的post和get请求。只要运行了这个 python程序,它将在指定的端口监听。说了这么多废话,无非就是这个意思:birdnest不像php程序一样,把文件放在某个web目录下即可,需 要单独运行它并保持这个程序打开。

需求:
svn客户端。如果没有,可以以web方式从birdnest官网co出最新的代码。
python环境。经过测试,至少需要>=python2.5,至于具体到哪个版本号我就没详细测试了。我使用的是python2.5.2
GNU screen。这玩意儿是标配吧?

具体步骤(假设在linux虚拟主机上操作。如果你使用的是windows主机,请自行安装svn客户端以及所需的python组件)

  1. checkout最新的代码:
    在任意目录执行:
    svn checkout http://birdnest.googlecode.com/svn/branches/stable birdnest-read-only

    代码将放置于当前目录下的birdnest-read-only目录下。注意这里co的是最新的stable分支的代码。trunk分支里的代码经过测试有代码错误,无法正常使用。

  2. 进入目录,执行
     python code.py 虚拟主机的ip:你需要的端口

    例如我的虚拟主机ip是64.62.216.123,我想让birdnest监听1234端口,那么我执行:

    python code.py 64.62.216.123:1234

    这时候可能有两种情况:

    1. 你看到如下输出:http://64.62.216.123:1234/。那么一切正常,恭喜你,你的birdnest已经搭建完毕
    2. 你看到类似这样的错误信息:

      Traceback (most recent call last):
      File "code.py", line 9, in
      from birdnest.filter import Filter
      File "/home/yegle/birdnest/birdnest/filter/__init__.py", line 5, in
      import simplejson
      ImportError: No module named simplejson

      很遗憾,你有麻烦了…你的python环境缺少birdnest需要的模块。没关系,手动安装之。具体的方法后面再说

  3. 假设你已经成功运行了birdnest,尝试用你的twitter客户端使用这个api地址,即http://你的ip:你的端口/api。
    birdnset提供了3种api,/api、/optimized、/text。具体的区别你可以在birdnest官网查到。
    如果你成功访问了这个api,终端将给出日志信息,格式类似于apache的访问日志。同时当前目录的log.txt将记录一些更加详细的信息。如果你不能访问这个api,或者访问遇到了错误,应该先看看log.txt再寻求帮助
  4. 客户端访问正常后,请ctrl+c结束birdnest,然后运行screen,再运行
    python code.py 64.62.216.123:1234

    然后用ctrl+a,d将当前的screen进程detach,退出ssh登陆。不出意外的话,这个时候你仍然可以使用你的api proxy。至此,birdnest twitter API proxy在自己主机上的搭建完成。

关于python环境:
首先仔细看birdnest运行时提示的信息,看缺少的是什么模块。分两种情况:

  1. 缺少的是python标准库里的模块。如提示缺少etree模块。这是因为你使用的python版本过低。
  2. 缺少的是其他模块。你需要手动安装模块。

如果你使用的是独立主机或者vps,最简单的方法就是让系统管理员来解决问题。
如果不是,并且你没有root权限,那么你只能安装python及其他模块到你的家目录了。
python的安装比较简单,configure的时候把prefix指定为你的家目录下某个文件夹即可
模块的安装,下载模块解压后,运行

python setup.py build

编译模块,然后

python setup.py install --prefix=你想安装的目录

。安装完成后,用

PYTHONPATH=你安装的目录 python code.py 你的ip:你的端口

来运行birdnest


没有评论: