APJP常见问题
APJP FAQ Beta 版本
服务器部署常见问题
PHP 主机部署 APJP
问: 在PHP主机上部署APJP,主机需要什么条件?
答: 主机需要如下条件 a)支持PHP版本:5.0.0 或以上 b)支持MCRYPT版本:2.5.6 或以上 c)支持OpenSSL版本:0.9.6 或以上
问:如何得知PHP主机能部署APJP?
答:a) 咨询空间供应商查讯主机资料 b) 上传PHP脚本探针到空间,访问空间得到主机资讯,參考http://code.google.com/p/apjp/issues/detail?id=41
问:为什么已经部署了服务器,firefox出現白頁/"Proxy refuse connect"等错误,APJP客户端已显示连上服务器?
答:请确定网页空间支持第一点三项要求,必要时换网页空间重新测试
问:我使用host1free.com免费空间,网页底部出现乱码?
答:一些免费空间会在资料中加入广告,例如text link导致出现乱码,编辑HTTP.properties.php,找到
$APJP_REMOTE_HTTP_SERVER_RESPONSE_PROPERTY_KEY[0] = '';
改为
$APJP_REMOTE_HTTP_SERVER_RESPONSE_PROPERTY_KEY[0] = 'Content-Type'; 找到
$APJP_REMOTE_HTTP_SERVER_RESPONSE_PROPERTY_VALUE[0] = '';
改为
$APJP_REMOTE_HTTP_SERVER_RESPONSE_PROPERTY_VALUE[0] = 'image/png';
在HTTPS.properties.php,找到
$APJP_REMOTE_HTTPS_SERVER_RESPONSE_PROPERTY_KEY[0] = '';
改为
$APJP_REMOTE_HTTPS_SERVER_RESPONSE_PROPERTY_KEY[0] = 'Content-Type'; 找到
$APJP_REMOTE_HTTPS_SERVER_RESPONSE_PROPERTY_VALUE[0] = '';
改为
$APJP_REMOTE_HTTPS_SERVER_RESPONSE_PROPERTY_VALUE[0] = 'image/png';
重新上传文件
问:怎么显示不了图片?
答:主机的空间支援问题,改用GAE/Heroku服务器访问相同空间,确定是PHP主机问题
问:APJP速度好像很慢?
答:这取决于PHP主机的速度
Google Appication Engine 部署 APJP
问:GAE有使用限制吗?
答:每个免费帐户最多可建十个应用,每天流量1GB,文件上/下传限制 >= 1MB,请访问 http://code.google.com/intl/zh-TW/appengine/docs/quotas.html 取得更多资讯
问:APJP配合GAE服务器,只能下载少于1MB文件吗?
答:APJP已经绕过GAE下载的限制,可下载任何大少的文件,但上传维持 >= 1MB
问:APJP GAE版本支持在线视频吗?
答:支持
问:使用了3个GAE服务器,登录论坛常常自动退出.
答:经测试,一些使用Discuz,PhpBB搭建的论坛会出现这样的情況.而使用SMF搭建的则正常,原因可能是GAE外部IP改变,使论坛认为使用者已经注销登录,出于安全理由,Google不准HTTP请求的HTTP头文件(header)由应用程序修改,以下为不能修改项
Content-Length
Host
Referer
Vary
Via
X-Forwarded-For
因为不能修改X-Forwarded-For而导致,暂时无法解决,这问题普遍存在于搭建于GAE的代理,例如Hyk-proxy也存在相同问题,这里提供一些临时性解决方法作为参考
A.使用Heroku/PHP服务器代替
B.采用一些浏览器的addon, 例如火狐的Autoproxy,于APJP_LOCAL-xxx.zip解压缩成为两个目录,一个是APJP_LOCAL_GAE,另一个为APJP_LOCAL_PHP这样,编辑其中一个,例如APJP_LOCAL_PHP\APJP.properties,改变本地服务器默认端口
找到关于本地HTTP服务器部分
# APJP_LOCAL_PROXY_SERVER
APJP_LOCAL_PROXY_SERVER_ADDRESS=127.0.0.1
APJP_LOCAL_PROXY_SERVER_PORT=10000
APJP_LOCAL_PROXY_SERVER_LOGGER_LEVEL=2
# APJP_LOCAL_HTTP_PROXY_SERVER
APJP_LOCAL_HTTP_PROXY_SERVER_ADDRESS=127.0.0.1
APJP_LOCAL_HTTP_PROXY_SERVER_PORT=10080
APJP_LOCAL_HTTP_PROXY_SERVER_LOGGER_LEVEL=2
# APJP_LOCAL_HTTP_SERVER
APJP_LOCAL_HTTP_SERVER_ADDRESS=127.0.0.1
APJP_LOCAL_HTTP_SERVER_PORT=11080
APJP_LOCAL_HTTP_SERVER_LOGGER_LEVEL=2
修改为其他未被使用的本地端口,例如
# APJP_LOCAL_PROXY_SERVER
APJP_LOCAL_PROXY_SERVER_ADDRESS=127.0.0.1
APJP_LOCAL_PROXY_SERVER_PORT=12000
APJP_LOCAL_PROXY_SERVER_LOGGER_LEVEL=2
# APJP_LOCAL_HTTP_PROXY_SERVER
APJP_LOCAL_HTTP_PROXY_SERVER_ADDRESS=127.0.0.1
APJP_LOCAL_HTTP_PROXY_SERVER_PORT=12080
APJP_LOCAL_HTTP_PROXY_SERVER_LOGGER_LEVEL=2
# APJP_LOCAL_HTTP_SERVER
APJP_LOCAL_HTTP_SERVER_ADDRESS=127.0.0.1
APJP_LOCAL_HTTP_SERVER_PORT=13080
APJP_LOCAL_HTTP_SERVER_LOGGER_LEVEL=2
在本地HTTPS服务器部分改为其他未被使用的本地端口
# APJP_LOCAL_HTTPS_PROXY_SERVER
APJP_LOCAL_HTTPS_PROXY_SERVER_ADDRESS=127.0.0.1
APJP_LOCAL_HTTPS_PROXY_SERVER_PORT=10443
APJP_LOCAL_HTTPS_PROXY_SERVER_LOGGER_LEVEL=2
# APJP_LOCAL_HTTPS_SERVER
APJP_LOCAL_HTTPS_SERVER_ADDRESS=127.0.0.1
APJP_LOCAL_HTTPS_SERVER_PORT=11443
APJP_LOCAL_HTTPS_SERVER_LOGGER_LEVEL=2
例如改为如下
# APJP_LOCAL_HTTPS_PROXY_SERVER
APJP_LOCAL_HTTPS_PROXY_SERVER_ADDRESS=127.0.0.1
APJP_LOCAL_HTTPS_PROXY_SERVER_PORT=12443
APJP_LOCAL_HTTPS_PROXY_SERVER_LOGGER_LEVEL=2
# APJP_LOCAL_HTTPS_SERVER
APJP_LOCAL_HTTPS_SERVER_ADDRESS=127.0.0.1
APJP_LOCAL_HTTPS_SERVER_PORT=13443
APJP_LOCAL_HTTPS_SERVER_LOGGER_LEVEL=2
这只是例子,必须确定在本地的端口未被使用即可,作为取得稳定的IP
现在执行两个APJP.bat,Autoproxy全局代理设为两个代理项目.例如APJP-1使用GAE,APJP-2使用PHP,登录论坛时,手动切换GAE/PHP服务器,有关GAE限制改动HTTP请求的HTTP头文件相关资讯,请参考http://code.google.com/intl/zh-TW/appengine/docs/java/urlfetch/overview.html
问:已经设定 https://google.com 为hosts,但无法连接服务器
答:由于国内访问 http://google.com 不太稳定,可以使用国内的IP作为host,例如 https://203.208.46.5/HTTP(S)
Heroku 部署 APJP
问:为什么我在cmd.exe执行heroku,出先command not found?
答:请先安装Heroku Toolbelt,这是部署服务器的SDK
问:当执行git push heroku master,出先错误?
答:请确定所在目录为APJP_REMOTE_HEROKU内执行命令,如果问题无法解决,请删除.git目录,登录 http://heroku.com 删除目前的应用,转到APJP_REMOTE_HEROKU目录重新安装.
问:连接Heroku服务器后,出先乱码?
答:因为没有正确部署,例如没有正确生成id_rsa.pub文件,请重新执行部署的命令
问:Heroku的平台速度没GAE快,为什么?
答:因为免费的Heroku帐户只能开启一个进程(process)
问:Heroku有什么使用限制?
答:免费用户流量 2TB/月,更多资讯到 http://policy.heroku.com/aup
问:当我访问 https://myapp.herokuapp.com/ , 页面显示"SSL is not enabled", Heroku是否不支援https连线?
答:需要安装piggyback_ssl addon, 首先登录 https://api.heroku.com/login 点击 Add-ons,其中有一个是SSL, 会看到Piggyback SSL FREE, 填入所需资料安装
开启cmd.exe, 转到APJP_REMOTE_HEROKU目录,如下
$ cd APJP_REMOTE_HEROKU
$ heroku addons:add piggyback_ssl
-----> Adding ssl to myapp...done.
访问 http://devcenter.heroku.com/articles/ssl 获取得更多资讯
DotCloud 部署 APJP
问:DotCloud云平台是否支援https连接?
答:支援,可在APJP.properties改动为APJP_REMOTE_HTTP (s)SERVER_X_REQUEST_URL=https://yourAppid-logname.dotcloud.com/HTTP(S)
问:DotCloud免费用户可建多少个应用?
答:2个
问:免费用户有什么限制?例如流量等。
答:流量没有限制,只是官方会检查流量,只要不是长期大量上下传大文件,应该不会封号,每个应用限制在4~6个进程(processes)
问:如何删除建立的应用?
答:Cygwin Shell终端输入: dotcloud destroy YourAPPID
问:如何查询我的APJP资讯?例如网址。
答:Cygwin Shell终端输入: dotcloud info YourAPPID.www ,更多的命令参数输入: dotcloud -h
问:APJP_REMOTE_DOTCLOUD可以部署其他云平台吗?
答:可以部署到 JELASTIC, OPENSHIFT和CLOUDFOUNDRY云平台
问:JELASTIC, OPENSHIFT和CLOUDFOUNDRY云平台为什么还没有安装指南?
答:如果条件容许,会陆续加入
问:DotCloud版本似乎没有GAE版本快?
答:是的,限制了进程并发
APJP 客户端常见问题
问:已部署好服务器,但不能访问https连接网站,证书已导入.
答:请确定APJP.properties里的参数,APJP_REMOTE_HTTPS_SERVER(数字)REQUEST_URL= 填入正确的网址
问:APJP_LOCAL客户端无法运行,已经安装了JAVA的J2SE?
答:确定版本为 1.6.0或以上
问:为什么APJP_LOCAL客户端图形界面没什么选项?
答:图形界面较命令列耗费更多系统资源,复杂的界面耗用资源更多,APJP是以只有简单界面
问:在安卓系统上是否只能使用Opera Mobile作为浏览器?
答:不是,任何可设定代理的程序都可通过安卓客户端上网
问:APJP_LOCAL_ANDROID 安卓客户端需要root权限吗?
答:不需要
问:运行APJP时出现Illegel key size or default parameters,不能运行?
答:这是编辑服务器文件的APJP_KEY使用了Windows自带的文本编辑器做成,它会在行末加了 \r, 得解释一下*nix和windows文本的分别,使用win的notepad会在行末加入 \r\n ,而*nix的格式是 \n ,这就会使16个字符的KEY成了17个,主机就认为KEY长度不合法,也和client的KEY不相同,使用notepad++ 这类的文本编辑器可保持原来的文本格式,可用notepad++ 转换回Unix格式重新上传,APJP因为默认使用RC4加密,而RC4是对称密钥加密算法,当服务器和客户端密钥不相同就不能解密,请参考这篇博客的简介 http://blog.csdn.net/guhog/article/details/4203021
综合常见问题
问: 如何解决GAE平台下载限制的?
答: GAE平台官方限制最大只能下载30MB,但是有时不够使用的。APJP有两种战略去解决此问题。默认的战略是尝试下载整个文件,99.9999%的时候,此法很棒。但是有时想下载个视频,例如:200MB,Appengine抛出一个错误。APJP检测到这个错误(如果你有仔细观察过CMD的输出,应该已经发现,这不是Bug。因为当出现这个错误后,APJP依然能正常工作。),自动切换到战略二。战略二是分成小块下载文件。在使用战略二前,APJP需要通过发送一个HEAD请求,去获知更多要下载的文件的信息和服务器的能力。如果HEAD请求响应正常,APJP开始分成小块下载文件。当一小部分下载失败,APJP会重试5次,以确保整个文件下载,同时不浪费Appengine配额。战略二,只被用于当文件下载大约30MB,其他的文件直接下载(直接的更快)。因此,默认战略快于战略二。但是APJP试图为你尽可能的快。
问: 在Youtube上看视频,视频刚开始为什么要等待一小段时间?
答: 1.取决于视频质量,Youtube视频播放器在播放前需要缓冲些数据。2.参考上一问题解答。默认战略切换到战略二,需要点时间。
问:使用APJP代理安全吗?
答:APJP采用RCFOUR 128 BIT加密本地和服务器之间的数据传输,服务器到目标网站则要看网站是否提供https连接.
问:APJP是否自由软件?
答:APJP采用GNU GPL v2作为版权,参阅http://www.gnu.org/licenses/old-licenses/gpl-2.0.html 取得进一步资讯
问:APJP是否支援iOS?
答:不支援
问:APJP_LOCAL或APJP_LOCAL_ANDROID客户端可以使用多少个服务器?
答:最多使用10个服务器,可混合使用部署于PHP,GAE或Heroku的服务器
问:和go-agent不同,APJP的服网页器不能设密码,会不会被其他人使用?
答:不会,APJP_KEY设定了由APJP_KEY.jar随机产生的16个字符数字组合,作为APJP的解密钥匙,亦可以视为密码,不正确的APJP_KEY将不能通过服务器连接网络
问:当一同运行uTorrent和APJP,APJP就不工作,为什么?
答:uTorrent 使用10000端口,改动APJP.properties的APJP_LOCAL_PROXY_SERVER_PORT=10000 为 APJP_LOCAL_PROXY_SERVER_PORT=10001
问:DotCloud,Heroku,JELASTIC, OPENSHIFT和CLOUDFOUNDRY云平台比较GAE有什么优点?
答:免费用户从限制角度来说有数点,上传文件可大于1Mb,流量比GAE多,从网络连接来说,它们还没被封锁,不需使用内建HOSTS,相对缺点就是似乎在速度
问∶如何检测本机上的JAVA版本?
答: 访问 http://java.com/en/download/installed.jsp
补充
FAQ为初步版本,将会不定期更新,如有任何错误或建议,到项目issues发帖.或者在twitter关注
@jvansteirteghem APJP作者
@twfcc wiki编者