Monthly Archive for 七月, 2009

自建birdnest Twitter API proxy

之前一直以为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

使用tweetr架设twitter api proxy

twitter被墙了

估计很多人知道了http://nest.onedd.net/api这个twitter api proxy,在某些支持twitter api地址更换的软件(例如twitterfoxspaz以及symbian s60上的gravity),使用这个api proxy即可翻墙继续使用,和用穿墙代理以及修改hosts之类的方式比有非常明显的优势。

但是birdnest这个项目需要在Google App Engine上架设,众所周知GFW对GAE一直虎视眈眈,在GAE上架设twitter api proxy各种不靠谱。而我自己有php环境的虚拟主机空间,所以我一直在找一个php架设twitter api proxy的办法。

昨天经过@paveo的提醒,知道了tweetr这个项目。折腾半天后终于搞定了php环境下twitter api proxy的架设。

如何架设的办法在tweetr项目主页的wiki上有说明,英文过关的同学请自行阅读原文,其他同学请看本人的翻译:

环境需求:

>=PHP5

PHP包括curl支持

允许修改.htaccess文件

(译注:绝大多数虚拟主机空间都满足以上要求)

安装指南:

1、下载解压tweetr_php_proxyXXXX.zip,将其中的proxy/文件夹放到web目录下任意位置

2、这条请自行看原文,似乎是说,在flex程序里使用这个twitter api proxy,并且程序和api proxy不在同一域,需要将解压得到的crossdomain.xml放在api proxy所在域的web根目录下。这条基本无关主题,请无视……

3、修改index.php,将其中的$twitterOptions['baseURL']修改为你的proxy文件夹相对web根的路径。例如你将proxy文件夹重命名为twitterapi放在http://yegle.net/twitter/twitterapi下,这里就填写’/twitter/twitterapi’

=========================分割线

安装完实际使用中发现twitterfox和spaz都提示cannot authencation,看了一下代码,原来是部分请求没有发送验证用的用户名密码,猜测是因为这个api proxy本身只是为了跨域“读”twitter上的数据方便,没有考虑到需要“写”twitter数据。更改Tweetr.php,修改function parseRequest其中的一部分,具体位置在94行左右。

在其中加入2行:

strpos($this->url['path'], “statuses/replies.”) != false ||

strpos($this->url['path'], “account/verify_credentials.”) != false ||

即可

PS.这里的strpos(blablabla)!=false,双重否定太发指了!还有互相之间的或关系……各种逻辑混乱……

PS2.不要直接复制粘贴代码……wordpress会把双引号和单引号转换成其他字符……谁能告诉我有什么简单的在wordpress里粘贴代码的方法?

He.net独立主机合租计划(11/50)

本人决定组织50人左右合租一台he.net的独立主机,以降低本人使用he.net虚拟主机的开销。


该计划已取消:-)

具体计划如下:

he.net简介:

Founded in 1994, when the Internet and the World Wide Web was just starting to take off, Hurricane Electric became one of the first Business Technical Service Providers (TSP). Today, Hurricane Electric is the premier Business TSP, specializing in technical web hosting, including dedicated servers and colocation. Hurricane Electric also provides direct Internet connections ranging from fractional to full T1′s and T3′s, all the way up to WDM and 10 GigE. Hurricane Electric was started when founder and President Mike Leber saw a need for technical web hosting. With the limited number of web hosting companies at the time, Mike took the opportunity to do it better. Hurricane Electric has since become a pioneer in the web hosting industry.


he.net提供的主机配置如下:

AMD Athlon X2 Dual Core 5000+
2 GB Ram
80 GB SATA Harddrives


操作系统为Linux,具体发行版及版本号暂时未知

090708

操作系统为Ubuntu

接入条件如下:

a 1 Mbps commitment on your own dedicated fully burstable 100 Mbps Internet connection

090709

客服回复说接入的最低条件升级了,2M接入,月费用仍然在200$/month


另外he.net提供的接入为ipv4/v6双栈接入,教育网用户可以通过ipv6连接到。

主机的setup费用是$450,网络接入费用是$200/month

总价格:450+200X12=$2850第一年,折合人民币约19665元(按照6.9汇率计算),如果按照50人合租的话,费用在393RMB也就是400RMB左右

因此正式合租的条件如下:

每人1G空间,50G流量,年费用初步定在400RMB,如果因为人数不足或者加入人数超过50人或者各种原因导致的总费用的变动,将按照变动后的价格多退少补


090707更新:

联系客服后决定将硬盘升级为500G硬盘,这样主机的setup费用将变为$605,平均下来每人的年费用更改为420RMB。已报名的4人仍然按照400RMB收取,差额将由本人补上。

因此正式合租的情况如下:

每人8G空间,50G流量,年费用为420RMB,如果因为人数不足或者加入人数超过50人或者因为各种原因导致的总费用的变动,将按照变动后的价格多退少补

合租条件:

独立博客作者为佳,有虚拟主机使用经验为佳,有Linux操作系统使用经验为佳。


如果对此次合租有任何疑问或建议,请在评论处说明,或通过电子邮件联系我。我的联系方式可以在http://yegle.net/about/找到。

欢迎加入邮件列表参与讨论:http://groups.google.com/group/henet-dedicated-server

常见问题:

1、服务器的软件环境是什么?
目前还不清楚具体安装的发行版以及版本号,但是因为是独立主机,所以安装什么apache版本、php版本之类的都是可以讨论的
2、如果1年后有人退出合租怎么办?
合租到期前1个月将会征集大家的续租意愿,如果不愿意续租的话可以继续征集新的合租成员。保持总人数在50人左右
3、setup费用是否由第一年合租的用户承担?
setup费用为一次性费用,目前看来只能由第一年合租的用户承担了。如果有更好的建议欢迎提出
4、报名什么时候截止?
预计截止时间为8月底。如果到8月底能凑够40人,且这40人愿意按照40人分摊费用,那么将以40人进行合租。如果少于40人,费用太高,合租取消。


由于此次计算的年费用与之前初步想法的不同,现重新统计有兴趣参与的人员

目前合租进度:10/50

已报名加入的人员:

yegle

caspar

KevinXue

svampire

guaneryu

reeze

Jackal

Menghan Zheng <zhengmenghan0010 AT gmail.com>

silwings AT gmail.com

xTao

tianyicui AT gmail.com