本文介绍了在本机搭建Google app engine的go语言(golang)开发环境的方法。1. 下载SDK和文档
你需要两个文件,一个是SDK,是一个本地的开发包。另一个是google app engine的文档,里面有google app engine的相关api。GAE Go SDK下载Linux 64-bit 28.7 MB Linux 32-bit 29.0 MB Mac OS X 64-bit 27.0 MB Mac OS X 32-bit 27.4 MB GAE 文档下载国内网盘下载鉴于国内的网络状态,代码辛苦下载到一半被重置链接是很有可能,故而提供坚果云网盘的下载连接: 2. 安装SDK
SDK的运行需要python 2.x版本的支持。python的安装本文不做介绍。该SDK只需解压即可工作,无需安装。但使用中需要mysql的支持,否则会出错,该部分内部参考troubleshooting。3. Hello world HTTP服务器
目录结构及代码创建一个文件夹mapp,在下面再创建一个文件夹hello,在hello里创建文件hello.go,在myapp文件夹下创建文件app.yaml,整个目录树的结构如下:myapp/ app.yaml hello/ hello.gohello.go内容如下:01 02 03 04 05 06 07 08 09 10 11 12 13 14 | package hello import ( "fmt" "net/http" ) func init() { http.HandleFunc("/", handler) } func handler(w http.ResponseWriter, r *http.Request) { fmt.Fprint(w, "Hello, world!") } |
app.yaml的内容如下:1 2 3 4 5 6 7 8 | application: helloworld version: 1 runtime: go api_version: go1 handlers: - url: /.* script: _go_app |
代码解析hello.go的代码与一个正常的go语言本地版本区别有两处,一是包名称为hello,而不是main,二是主函数的名字不是main而是init。作为一个云平台,GAE需要自己控制程序的运行,因为main函数由GAE定义,而你的程序从哪个函数开始运行你只需告诉GAE就行了。GAE会调用你的程序,并在你的程序出现安全问题时结束它。app.yaml是一个配置文件:application:你的应用的IDversion:你的应用的版本runtime:你的应用使用的语言api_version:现在只能为go1,为api的版本。handlers:- url: /.*所有的URL都由你的程序处理。_go_app:是一个magic string,它由dev_appserver.py识别代码测试命令:/path/to/google_appengine/dev_appserver.py myapp/如果命令成功执行的话,直接在浏览器访问:,就可以看到打印的hello world了。如果命令执行不成功的话,你还得跟着我troubleshooting。经过troubleshooting如果成功的话,结果会是这样:troubleshooting问题:WARNING: The rdbms API is not available because the MySQLdb library could not be loaded.答案:出现这个问题说明你的python没有mysql支持。 1. 安装mysql: sudo apt-get install libmysqlclient15-dev 2. 安装pip:sudo apt-get install python-pip 3. 安装mysql-python: sudo pip install mysql-python问题:Error Unknown url handler type. ......in "../myapp/app.yaml", line 8, column 11答案:上述app.yaml脚本的第八行script前面要有两个空格,- url在-和url之间有一个空格,每个冒号后面有一个空格。yaml格式的要求太严格了,一定要按规则写。问题:Allow dev_appserver to check for updates on startup? (Y/n): 答案:问你要不要检查更新,随你吧,我选的n。更新时万一又被reset链接就麻烦了。yaml文件规则关于app.yaml文件,可以参考https://developers.google.com/ap ... on/config/appconfig便利性开发我们运行命令在本地打开你的应用,当你修改代码时,不必关了重新打开一下,SDK会检测你代码的改,并自动重新编译。在保持程序运行的情况下,修改代码中的hello world为其他字符串,刷新浏览器吧~。4. 部署代码到GAE上
注册GAE的网址是:,在注册完成后,你会得到一个应用ID,你的应用所有的网址是,编译你的app.yaml文件,将application域的值改为你的应用ID。上传你的应用的命令是:appcfg.py update myapp/ appcfg.py会分析你的app.yaml配置文件,按照里面指定的id,上传到你的应用空间里。如果一切顺利的话,访问:即可以看到你的应用结果。1用户服务集成了google的用户账户,你可以在应用中直接调用google的账户服务来管理你应用的账户。 本文继承了Google app engine Go语言开发环境搭建中的代码,在其基础上作修改而成。 [mw_shl_code=java,true]package hello import ( \"appengine\" \"appengine/user\" \"fmt\" \"net/http\" ...|2go语言的http包处理表单。本文继承了Google app engine Go语言开发环境搭建中的代码,在其基础上作修改而成。 [mw_shl_code=java,true]package hello import ( \"fmt\" \"html/template\" \"net/http\" ) func init() { http.HandleFunc(\"/\", root) http.HandleFunc(\"/sign ...|3如果你有一个大型应用的话,数据可能会存在多台主机了,互相之间的数据通信麻烦得要死,不过有GAE的话你就不用管,这些东西都交给google处理好了。 本文继承了Google app engine Go语言开发环境搭建中的代码,在其基础上作修改而成。 该程序完成的是一个简单的网络留言本,根目录处理程序将留言组织成Greating结构,post给 ...
阅读(5751) | 评论(0) | 转发(0) |