2015年7月15日星期三

将snova和goagent服务端部署到同一个gae app上

思路的来源是issue上有人想snova 和goagent的app id 能同时使用。鉴于goagent部署成功后的地址是xx.appspot.com/2 ,而snova部署成功后地址是xx.appspot.com。两者貌似不冲突,于是就想到合理利用下。
众所周知,gae 没个帐号可以创建10个app,每个app每天1g流量。10个app多也不算多,也不算少了。关键是我在上面部署了好几个应用,比如网盘,相册之类。然后goagent 又部署了5个app ,这样下来也没多少剩下了。snova也就部署了一个app 而已。合理利用app 在这种情况下就比较需要了。因为goagent实在是比较火(连百度百科都有),受到gfw太多照顾,现在我基本上都是在用snova。
便查资料,得知GAE允许在服务器服务器上保存站点的多个版本,包括程序、模版、静态文件等。它是通过对app.yaml的version的设置进行版本的管理。如默认情况下version=1,此时对站点内所有文件的修改,上传后都将更新到1这个版本里。

因为我的goagent app都很早上传了,都是版本1,5个懒得改了,于是就改snova的版本。就改snova-gae-gserver-[version]/gae/src文件夹下的app.yaml文件。如下:
application: xxx(前面有空格) 将默认的snova-master改成你的app id
version: 2 版本改为2
runtime: go
api_version: go1
剩下的事情就是上传部署了。虽说就只简单的改那两个东西,我也摸索了大半天,最终才搞定的。因为wiki中两种方式部署如下
1.用自带的Deployer部署
下载并解压snova-gae-gserver-[version].zip
windows用户执行deployer.exe;Mac/Linux用户执行python deployer.py
按照deployer的指示输入,执行部署
2.用Appengine Go SDK部署
下载并解压snova-gae-gserver-[version].zip
进入解压的目录, 修改app.yaml, 将application: snova-master中snova-master值改为自己创建的appid
执行appcfg.py update snova-gae-gserver-上传(appcfg.py在'/'下
看到区别没有,就是用自带的Deployer部署并不需要(修改app.yaml, 将application: snova-master中snova-master值改为自己创建的appid)这样做。经过多次测试后,发现这样单纯的改个版本号之后用deployer上传是会出现错误的。
gae 新版本(version2)部署成功后通用访问地址是http://2.appid.appspot.com/。gsnova地址也可以通过2-dot-appid.appspot.com来访问。
服务端配置好了,配client端。修改gsnova gae段为 WorkerNode[0]=2-dot-appid 。如果是修改了goagent的版本号则需要修改proxy.ini下的appid 为2.appid 。
最后 你也可以进入https://appengine.google.com 后台控制面板设置默认版本(非必须)。如图:

假如我将修改后2.0版本的snova 设为默认,则可以直接http://appid.appspot.com 看到snova-gae(Go) 0.17.2 server is running!而不是goagent的404 页面了。如果改为默认的话那workmode那段,理论上应该就可以直接 WorkerNode[0]=appid也可以了(米测试)。只是不隐蔽了,很明显,想必goagent当初把路径该为http://appid.appspot.com/2就是为了不那么容易被发现把!
ps:3.4日更新 尝试部署在apjp上,用linux vps成功部署。修改 appengine-web.xml 文件中的
1
2
3
4
5
6
<?xml version="1.0" encoding="utf-8"?>
<appengine-web-app xmlns="http://appengine.google.com/ns/1.0">
    <application>application-id </application>application-id 改为你自己的名称如xxx
    <version>1</version>将1 改为需要的版本号。
    <threadsafe>true</threadsaf
</appengine-web-app>
客户端编辑APJP_LOCAL.properties,修改如下:
APJP_REMOTE_HTTP_SERVER_1_REQUEST_URL=https://google.com/HTTP(S)
APJP_REMOTE_HTTP_SERVER_1_REQUEST_PROPERTY_1_KEY=Host
APJP_REMOTE_HTTP_SERVER_1_REQUEST_PROPERTY_1_VALUE=3.xxx.appspot.com (仅改此处) 最后貌似这个apjp 的gae服务端不行或许是没找到好的ip,只能打开国内的网站。



没有评论:

发表评论