Monday, December 03, 2012

mac上安装和使用goagent翻墙,解决找不到event.h问题




在mac上安装和使用goagent翻墙
关于申请google app engine的教程很多,我就不再写了。

在这申请https://appengine.google.com/


本文地址http://situee.blogspot.com/2012/12/macgoagenteventh.html

找不到gevent怎么办

当上传即 python uploader.zip时,可能出现
ImportError: No module named gevent;
官方说在shell命令执行如下语句(注意需要安装 gcc 或 xcode): curl -k -L http://git.io/I9B7RQ|sh

但是我试过不行,报以下权限问题,加了sudo也不行.

error: can't create or remove files in install directory
The following error occurred while trying to add or remove files in the
installation directory:
    [Errno 13] Permission denied: '/Library/Python/2.7/site-packages/test-easy-install-41204.write-test'




网上找了个办法下载了setuptools,安装easy_install,再装gevent
$sh /Users/pccw/Downloads/setuptools-0.6c11-py2.7.egg
$ sudo /usr/local/bin/easy_install gevent
还是不行,报以下错误
clang: warning: argument unused during compilation: '-mno-fused-madd'
In file included from gevent/core.c:253:
gevent/libevent.h:9:10: fatal error: 'event.h' file not found
#include "event.h"
         ^
1 error generated.
error: Setup script exited with error: command 'clang' failed with exit status 1

在mac上又找不到合适的event.h文件

又试着安装了pip installer
$ sudo easy_install pip
$pip install --verbose gevent
结果还是找不到event.h的问题


安装libevent

网上查了一下,说要安装一个叫libevent的库
试了一下用macport安装,但不知道为什么连接不上。

最后,去libevent.org下载了源代码
https://github.com/downloads/libevent/libevent/libevent-2.0.21-stable.tar.gz
解压
$ ./configure && make
$sudo make install
就安装完libevent了。

然后下载了gevent

http://pypi.python.org/packages/source/g/gevent/gevent-0.13.8.tar.gz

运行
$sudo python setup.py install -I /usr/local/include/ -L /usr/local/lib
看到成功安装的信息了
"Finished processing dependencies for gevent==0.13.8"


上传uploader.zip

最近再做
$ python uploader.zip
按提示输入APP ID, email, password就可以
输入密码的时候不会显示出来也不会有星号。注意要输入你的应用的密码而不是邮箱密码。
“Use an application-specific password instead of your regular account password.”

成功上传会看到:
Deployment successful.
Checking if updated app version is serving.
Completed update of app: xxxxxxx, version: 1


运行代理

然后就是运行代理程序了
$python proxy.py

出现以下错误
Traceback (most recent call last):
  File "proxy.py", line 1706, in
    class DNSServer(gevent.server.DatagramServer):
AttributeError: 'module' object has no attribute 'DatagramServer'
Exception KeyError: KeyError(4397488560,) in ignored

解决方法是
打开proxy.py,找到这一行class DNSServer(gevent.server.DatagramServer):
把DatagramServer改为StreamServer就可以了
再次运行python proxy.py,代理就成功运行了


安装switchsharp插件

接下来是在chrome安装switchsharp插件
导入这个设置http://goagent.googlecode.com/files/SwitchyOptions.bak

chrome右上角,地址栏后面会多出一个地球的图标,点击后选Goagent就可以使用代理上网了。不影响firefox或safari通过原网络上网。

本文地址http://situee.blogspot.com/2012/12/macgoagenteventh.html


解决证书问题

请看 在Mac导入goagent根证书,解决证书无效警告问题
http://situee.blogspot.com/2012/12/macgoagent.html

官方常见问题 FAQ

  • 遇到FAQ没有解决问题怎么办?
  • 首先请更新客户端和服务端到最新版(见首页),如果还有问题的话请到http://code.google.com/p/goagent/issues/list 提出issue。提issue前建议先搜索下看是否是重复的问题,请尽量描述问题产生的原因,配置情况,网络情况等,这样有助于重现问题并解决。虽然我们可能顾不上回答,但是我们保证每个issue都会看的并尝试解决的。
  • 在 Linux/Mac 下如何安装 gevent?
  • 在shell命令执行如下语句(注意需要安装 gcc 或 xcode): curl -k -L http://git.io/I9B7RQ|sh
  • youtube不能上传以及看直播?
  • 请看issue 2668.
  • 提示Error code 502错误怎么办?
    • 401: Unauthorized 一般是你处于内网环境中,需要设置proxy.ini里面的proxy段落
    • 404: Not Found 一般是proxy.ini里面appid没有填对,或者服务端没有部署成功。
    • 503: Service Unavailable 一般是流量用完了,请更换appid
  • uploader上传失败?
    • 400: Bad Request 到http://appengine.google.com新建一个新的appid再上传。
    • 404: Not Found 对应的appid没有创建。
    • 10060 连接服务器超时,建议挂VPN后再上传
    • 10054 连接被重置,建议挂VPN后再上传
  • 听说goagent保密性比较弱,如何加强?
  • 下载最新版的客户端,编辑proxy.ini的google_cn google_hk域,mode=https即可.速度也相应变慢,呵呵。
  • 最新版在哪下载?如何在旧版本上更新新版本?
  • 还是直接到首页下载,那个链接永远是最新版。旧版本不用管,直接编辑新版的proxy.ini里面的appid即可。
  • 我是Mac/Linux用户怎么办?
  • 上传完服务端并设置好proxy.ini之后,在终端直接运行python proxy.py即可。需要Python版本2.6以上。Mac用户可以尝试GoAgent Mac GUI 或者GoAgentX
  • Linux/Mac如何上传服务端?
  • 在server目录下运行"python uploader.zip"(没有引号),如果要上传python服务端的话,在server目录下运行"uploaddir=python python uploader.zip"(没有引号) 或者尝试GoAgentX
  • 支持多个appid做负载平衡吗?
  • 目前goagent最新版是支持的,在proxy.ini中的[gae]项目下这样配置即可appid=id1|id2|id3
  • 配置多appid有什么用?
  • 最新版的GAE服务端已经是python27,所以多appid现在只是起到增加流量配额的作用。提高并发的作用已经被GAE内置的功能取代了。
  • GAE在2011-09-01推出了新版的收费计划,如何规避?
  • 使用goagent 1.6以上版本的服务端。
  • 如何使用php模式?
    1. 申请一个免费的php空间,然后通过在线代码编辑器或者ftp客户端把index.php上传到你申请到php网站的根目录。假设为http://goagent.php.com/index.php
    2. 访问你的index.php地址,比如http://goagent.php.com/fetch.php,如果没有问题的话,说明部署成功。
    3. 编辑proxy.ini[paas]项目, enable=1和fetchserver=你的index.php地址,重启goagent.exe即可。
    4. 图文教程请见http://ishare.cn.ms/archives/552
  • 如何设为系统服务(开机自启动)?
  • 双击addto-startup.vbs即可。
  • goagent支持IPv6网络吗?
  • 支持的。profile=google_ipv6即可。
  • 为什么goagent第一次运行需要管理员权限?
  • 因为goagent会尝试调用certmgr.exe向系统导入IE/Chrome的证书,这需要管理员权限。
  • Firefox怎么不能登陆twitter/facebook等网站, Firefox如何导入证书?
  • 打开FireFox->选项->高级->加密->查看证书->证书机构->导入证书, 选择local\ca.crt, 勾选所有项,导入。
  • 需要装Python或者Google Appenginge SDK后才能用goagent吗?
  • 完全不用,goagent是绿色软件哦。
  • goagent原理是什么?
  • goagent是GAE应用,原理可以参考这个图原理示意图
  • 支持gfwlist么?
  • 这个问题考虑过,但是还是放弃了。goagent需要保持简单快速,支持gfwlist请使用autoproxy/switchysharp。
  • 如何防止goagent被匿名使用(盗用)?
  • 目前goagent最新版是支持的,注意:本功能不会影响网速,请放心使用。
    • golang版本:server\golang\fetch.go中const段落开头修改Password = "123456",重新上传fetch.go,然后在proxy.ini中的gae项目下这样配置即可password = 123456,即可。
    • python版本:先在server\python\wsgi.py中开头修改__password__ = '123456',重新上传wsgi.py,然后在proxy.ini中的gae项目下这样配置即可password = 123456,即可。
  • 怎样设置不显示气泡提示?
  • 用reshack/exescope等资源编辑工具把气泡提示字符串清空即可。
  • 如何删除appengine.google.com上老的appid?
  • 可以的,请看issue 1501
  • 如何得到goagent的源代码?
  • goagent的代码和程序是一起的,源代码就是运行程序。
  • MultiplexConnection Cannot hosts错误?
  • 看起来你的ISP封锁了google.cn,请尝试profile=google_hk这个选项,如果还不行,换PHP模式吧。
  • 如何对goagent进行修改?
  • 客户端代码直接改local/proxy.py,改完重启goagent.exe即可;服务端改server/wsgi.py,改完用uploader.bat上传即可。
  • 为什么要叫goagent,而不叫GoProxy?
  • 一开始叫GoProxy的,后来Hewig说软件名字带有proxy字样不祥,于是就改成了goagent。
本文地址http://situee.blogspot.com/2012/12/macgoagenteventh.html

Reference:
http://likuan.info/tag/goagent
http://www.chaorenmao.com/blog/?p=744
http://www.cppblog.com/longjun-9/articles/195379.html

No comments:

Post a Comment