Google App Engine 文件代码备份
Google App Engine 不支持直接下载代码文件,所以我们无法直接将服务器上的代码进行备份。如果本地的代码一旦丢失,就很难找回,这点对GAE的用户来说,是相当麻烦的。
好在有人编写了一个工具,用于将GAE站点的代码打包成zip格式并下载。
步骤如下:
1.在根目录下根据manatlan的代码建立zipme.py
2.在app.yaml中加入
- url: /zipme
script: zipme.py
3.访问youapp.appspot.com/zipme
zipme.py脚本
#!/usr/bin/env python # -*- coding: UTF-8 -*- """ ########################################################################## ZipMe : GAE Content Downloader ########################################################################## Just add this lines in your app.yaml : - url: /zipme script: zipme.py ########################################################################## """ # manatlan from google.appengine.ext import webapp from google.appengine.api import users import wsgiref.handlers import zipfile import os,re,sys,stat from cStringIO import StringIO def createZip(path): def walktree (top = ".", depthfirst = True): names = os.listdir(top) if not depthfirst: yield top, names for name in names: try: st = os.lstat(os.path.join(top, name)) except os.error: continue if stat.S_ISDIR(st.st_mode): for (newtop, children) in walktree (os.path.join(top, name), depthfirst): yield newtop, children if depthfirst: yield top, names list=[] for (basepath, children) in walktree(path,False): for child in children: f=os.path.join(basepath,child) if os.path.isfile(f): f = f.encode(sys.getfilesystemencoding()) list.append( f ) f=StringIO() file = zipfile.ZipFile(f, "w") for fname in list: nfname=os.path.join(os.path.basename(path),fname[len(path)+1:]) file.write(fname, nfname , zipfile.ZIP_DEFLATED) file.close() f.seek(0) return f class ZipMaker(webapp.RequestHandler): def get(self): if users.is_current_user_admin(): folder = os.path.dirname(__file__) self.response.headers['Content-Type'] = 'application/zip' self.response.headers['Content-Disposition'] = \ 'attachment; filename="%s.zip"' % os.path.basename(folder) fid=createZip(folder) while True: buf=fid.read(2048) if buf=="": break self.response.out.write(buf) fid.close() else: self.response.headers['Content-Type'] = 'text/html' self.response.out.write("<a href=\"%s\">You must be admin</a>." % users.create_login_url("/zipme")) def main(): application = webapp.WSGIApplication( [('/zipme', ZipMaker)], debug=False) wsgiref.handlers.CGIHandler().run(application) if __name__ == "__main__": main()
这段代码会通过google的身份认证来判断访问者是否可以下载代码,所以不用担心代码泄漏。不过还是希望Google可以提供代码备份和数据库备份的功能。
广东东莞感觉到寒意了.
看到朋友们都说冷啊冷的,今天终于感觉到了.
我比较胖的说,还是喜欢寒冷天气.热天神马的最讨厌了
稳定免费空间pipni.cz的申请及使用
注册地址:http://new.pipni.cz/overeni.phtml
pipni.cz提供的稳定免费空间,看现在又开始火起来了,pipni.cz是捷克一家老牌的空间虚拟机提供商,创建于2001年,在2004年国内就有介绍它提供的免费PHP空间,可以说非常稳定。提供5G存储空间,月流量有100G,支持FTP和在线文件管理(可在线解压缩),支持MySQL 、PostgreSQL 数据库,可创建支持POP3, IMAP的EMail邮箱账号,不提供二级域名,申请时需要绑定自己的域名,支持绑定免费的TK顶级域名,网站默认支持https传输协议。无广告。
pipni.cz注册教程:
网站界面默认为捷克语,可以在右上角选择English英文。
输入你的域名,选择后缀,点“Forwar”进入下一步。
Program
选择订单信息:
Term 中选择 Don’t extenge domain
Program 中选择 FREE – 0 months – 0 CZK (前面添加的域名需要已注册才会看到)
其他默认,点“Forwar”进入下一步。
Owner domain
在上面的表格下面又出现了一个表格:填写个人信息
其中“Phone number”填写的格式一定要“国家区号 电话号码”例如“+86 12345678”
全部填写完后点“Forwar”进入下一步。
Conditions webhosting
在上面的表格下面又出现了一个表格:
Kód pro slevu 资料博客用谷歌翻译了一下是“折扣代码”,随便填就行了
勾选协议,全部填写完后点“Forwar”进入下一步。
Finish
点“Forwar”进入下一步。
它自动会跳到注册的首页,过一会就会受到网站开通的邮件,里面有网站账号的信息。
后台登录地址:https://admin.pipni.cz
用户名:serb.tk
密码:随机
pipni.cz的FTP信息:
FTP服务器地址:ftp.serb.tk
或者在后台“Domain administration”——“FTP”中的Server显示的www20.pipni.cz
FTP用户名:serb.tk
FTP密码:随机
在线FTP文件管理地址:http://webftp.pipni.cz
网站根目录/www
FTP有时比较难连上,有时速度飞快,可能是和服务器有关。
pipni.cz的MySQL数据库信息:
数据库的连接
以EMLOG安装为例
// 数据库服务器:mysql
// 数据库用户名:emlog.serb.tk
// 数据库密码:你的密码
// 数据库名:emlog_serb_tk
注意,尤其是数据库服务器一项,和我们平时所用的空间所填写的localhost不一样。还有dbuser及dbname,不要搞错了。
数据库管理地址:http://mysql.pipni.cz
pipni.cz绑定域名:
只能把域名的DNS修改为ns.pipni.cz和ns2.pipni.cz
在测试过程中发现最终解析成功域名的IP是随机的,如果被分配到93.185.104.27的话,在国内将无法访问。
Blog又活了
ghs 38被墙了,32还幸存唉..找了半天,本来以为32早就被墙了的说

Google App Engine建立自己的blog,并且绑定免费的.TK域名.
1.注册.tk域名并解析到免费的dns服务器.
首先到http://www.zoneedit.com/signup.html注册一个帐号,当然也可以别家.
再到www.dot.tk申请一个帐号,全中文应该很简单.再看看你要注册的域名有没有被注册,如果没有,那么到zoneedit
点add zones,添加你要注册的域名.如:我注册的WENDEY.TK,这时zoneedit会有提示要你把域名的ns指向他的ns
服务器,我的是ns13和ns8.这时回到dot.tk选择如图
输入验证码点击下一步成功.
2.注册google app engine 帐号
第一步:当然是注册Google帐户,如果已注册,只要登陆即可,Google帐户只要注册一个,Google的所有应用都可使用。
第二步:创建一个应用,GAE总共可以创建10个应用,每个应用空间500M。

创建一个Google App Engine应用
第三步:输入申请人的手机号码,Google App Engine会向申请人手机发送一串数字组成的号码短信,以便验证申请人的有效性,网上有人说是发Mail,当前Google似乎使用了SMS,形式为国家代码+手机号码,即+86TelephoneNum,然后就耐心等待吧,很长时间哦,嘿嘿

填入手机号码,等待GAE发送申请码
第四步:填写GAE应用的详细信息,应用标示符注册完毕后是无法更改的,填写时注意。

填写GAE应用的详细信息
第五步:填写完毕后,GAE的应用就算申请注册成功了,你可以查看控制面板或者用appcfg.py上传你的开发程序或者邀请开发者和你一起来开发,注册其他应用依此类推。

GAE应用注册成功了
3.将.tk域名添加到google企业应用套件.
打开https://www.google.com/a/cpanel/education/new?hl=zh-cn,填入wendey.tk下一步,之后的表格要注意的地方是电话号码,我填的是213-2572135,国家选的美国,因为google不支持中国地区的申请.还要选择使用标准版的内容,因为直接申请标准版会被google看成自动机器人不通过.
- 下一步之后填用户名和密码则开通成功.会收到几封邮件,是关于升级到教育版的,无视就好了.之后会自动进入管理后台.点击 添加更多服务
Google App Engine里填入你刚才申请的应用id比如 soryusama.appspot.com,就填soryusama就行了.这样就把你的gae和域名绑定了.
gae不支持裸域名,必须加上如www,blog等二级域名.将www.wendey.tk作个cname别名到ghs.google.com.由于ghs.google.com大家可以网上搜索一下可用的ip,做a记录到上面就行,也能直接做cname到blog.soryu.pp.ru上一劳永逸.(这个是我的域名,如ip被墙会第一时间换ip).
4.上传Micolog到gae.
下载Micolog 0.7 Release,下载gaehttp://code.google.com/intl/zh-CN/appengine/downloads.html#Download_the_Google_App_Engine_SDK
看教程.这样你的blog就建立了.之后用你的google帐号登录后台管理和导入xml吧
Google App Engine 添加 Favicon 和 robots.txt 的方法
1. 添加 Favicon 的方法
一般情况下,Google App Engine 上传的是应用程序文件(如:Python 的 .py 文件),如果你要上传静态文件(如图片、Javascript、css),就得把它们放到一个静态目录里,并在 app.yaml 配置文件(详细的解说)里做类似下面的定义:
handlers:
- url: /images
static_dir: images
- url: /css
static_dir: css
Favicon.ico 文件同样可以放到 images 目录下,上传后就可以通过地址 http://application-id.appspot.com/images/favicon.ico 访问了。
然后在 HTML 文件的 Head 里头添加 <link href="/images/favicon.ico" rel="shortcut icon" type="image/x-icon"> 就可以让别人浏览你的网站时,看到你的 Favicon 了。(考虑到兼容问题,我没有用 type="image/vnd.microsoft.icon" )
但是,人家 favicon 默认都是放在网站的根目录下的,在 Google App Engine 里怎么实现呢?
方法是在 app.yaml 配置文件内添加如下语句:(紧跟 handlers: 下面就好了)
- url: /favicon.ico
static_files: images/favicon.ico
upload: images/favicon.ico
mime_type: image/x-icon
意思就是,当别人访问 http://application-id.appspot.com/favicon.ico 时,我就用 images/favicon.ico 来代替输出。又因为 Google App Engine 不能根据 .ico 的后缀正确判断这个图标文件的 mime 类型,所以我们可以在这里明确指定了它的 mime_type 是 image/x-icon 。一方面,可以避免上传应用程序时出现“错误”提示;另一方面,可以直接在浏览器中打开这个文件,而不至于提示下载这个文件。(原来我是用 mime_type: image/vnd.microsoft.icon 的,但发现在 IE 下面,直接打开 icon 的地址,图标不能正常显示,所以还是用 x-icon 算了。)
当把 favicon.ico 文件“放”到根目录之后,那句 <link href="/images/favicon.ico" rel="shortcut icon" type="image/x-icon"> 就可以省略不用了。因为现在的浏览器都知道默认从网站根目录找 favicon.ico 文件。
2. 添加 robots.txt 的方法
有了上面的经验,添加 robots.txt 就易如反掌了。我们同样可以把 robots.txt 放在 images 目录下,跟其它图片一起上传。只要在 app.yaml 配置文件中加上下面几句就好了:
- url: /robots.txt
static_files: images/robots.txt
upload: images/robots.txt