转载请在头部保留此信息:本文由jmppok于2014.1.22日发表于http://blog.csdn.net/jmppok/article/details/18659547
欢迎转载,但请勿用于商业用途。 联系方式:[email protected]
目前网络上有很多提供云存储、云空间、VPS的厂商,从功能、稳定性、易用性、人气等方面考虑,作者认为AppFog是一个不错的选择,而且他还是免费的。最重要的是,应用可以完全自给开发,想做什么就做什么.本文对AppFog空间的申请过程、应用创建与开发、部署等方面对其进行实战说明。
AppFog支持Java, Java Grails, Java Spring Mysql,Node,Node Chat, Node Express,PHP, PHP Drupal, PHP WordPress,Python, Python Django, Python Flask,Ruby onRails, Ruby Sinatra等编程语言。
AppFog目前需要发邮件进行申请,具体步骤如下:
1)登陆官方网站https://console.appfog.com/login,选择“Sign Up”,或者猛戳这里Sign Up;
2)打开的页面上并不能直接注册:
AppFog Signups
We are enhancing our automated sign-up process. Please contact [email protected] for an account request.
3)很高级的赶脚,那就发邮件吧
猛戳这里[email protected],会自动打开outlook之类的邮件客户端,里面有邮件模板:
收件人,主题就不必说了,内容需要自己填下,下面给出一个例子:
Name = Bert Lee Company = lenovo Location = china Interest in AppFog = Every technology. Every infrastructure.你也可以直接写一封Email,复制收件人,主题和上面内容,发送。
4)再次确认
发送邮件后等几个小时,你就会受到一封确认邮件:
然后回复一封邮件,回答这三个问题:
第一个是你想要注册的账号(邮箱地址),下面两个随意。
1. Please type out the email address you wish to use for the account here --> [email protected] 2. Please tell us what Code (programming) Languages (NOT the language you speak) you plan to use in your application(s):Java & Python 3. Please tell us the purpose of the application(s):Home Page & Blog
5)申请成功
发送邮件后再等几个小时,就会收到申请成功的邮件:
里面有你的账号和密码。同时还提醒你需要进行一些后续操作。
6)最后的激活步骤
根据邮件提示,进行最后的激活
1.登陆
2.完善个人信息
3.进行邮箱认证,会发送邮件到你的邮箱,复制里面的认证码进行认证。
4.修改密码
到这里恭喜你AppFog注册成功啦!
登陆到AppFog,直接进入管理界面:
New App直接创建一个新的App。
创建App有三个步骤:
1)选择App类型
有16种应用类型可以选择,我选择了Python 2.7.3,完全图简单。你可以根据需要选。
2)选择服务器
共有4处服务器可以选择,中国选第一个“东南亚”就可以,会快一些。
3)填写应用名称
如jmppok,确认。
我已经创建过该应用了,所以提示不合法。需要一个没有被使用的名字。
4)应用管理与测试
经过上面三个步骤,已经成功创建了一个Python应用。
回到管理界面,就可以在应用列表里看到。
单击列表里的应用,如jmppok,可以管理该应用。
可以启动,关闭,重启。
最重要的右上角两个按钮:Vist Live Site(测试网站)和 Download Source Code(下载源码到本地)
选择Vist Live Site可以打开你创建的Web应用进行测试。
Download Source Code可以下载应用的源代码到本地进行修改编辑,很爽吧!
1)首先点击上面的 Download Source Code下载应用代码到本地。
是一个以应用名称命名的zip包。
由于我创建的是最简单的Python应用,压缩包里只有最简单的两个文件:
requirements.txt (没用,里面就一个bottle)
wsgi.py(一个简单的Python Web应用)
import bottle import os def application(environ, start_response): data = "Hello World! AppFog Python Support" start_response("200 OK", [ ("Content-Type", "text/plain"), ("Content-Length", str(len(data))) ]) return iter([data])
2)自定义应用
其实就是修改wsgi.py就可以啦。
源代码中建议用bottle,关于Python使用bottle和wsgi开发web应用大家可以baidu之,很简单的说。
下面是一个作者修改后的Web应用代码。可以注册一个key-value,然后查找之。可以list所有的key-value。最多支持100个。
#!/usr/bin/python # -*- coding: utf-8 -*- import bottle from bottle import * import os data_map={} application = bottle.default_app() @route('/') def index(): return "Hello! \nAppFog Python Support" @route('/list') def ls_all(): global data_map data_str = "" for k,v in data_map.items(): data_str += "<tr><td>%s</td><td>%s</td></tr>" %(k,v) return "<table border='1'> <tr><th>key</th><th>value</th></tr>"+data_str+"</table>" @route('/regist') def regist(): return ''' <form action="/regist" method="post"> Key: <input name="key" type="text" /> Value: <input name="value" type="text" /> <input value="regist" type="submit" /> </form> ''' @route('/regist', method='POST') def do_regist(): k = request.forms.get('key') v = request.forms.get('value') global data_map if (len(data_map.keys())<101): data_map[k]=v return """ <script language="javascript"> alert("Regist success!"); top.location='/list'; </script> """ else: return """ <script language="javascript"> alert("Regist failed! \nOnly 100 keys can be registed!\n You can delete some keys to continue regist."); top.location='/list'; </script> """ @route('/get/<name>') def get_val_of_key(name): global data_map if(name in data_map.keys()): return "<P>key=%s</P><P>value=%s</P>" %(name,data_map[name]) else: return "<P>Can't find key=%s.</P>" %(name) @route('/del/<name>') def del_key(name): global data_map if(name in data_map.keys()): del data_map[name] return """ <script language="javascript"> top.location='/list'; </script> """ if __name__ == '__main__': from wsgiref.simple_server import make_server srv = make_server('localhost', 8088, application) srv.serve_forever()需要bottle.py支持。关于bottle.py可以到bottle网站进行下载,或者猛戳这里 bottle.py
注意一定要在本地运行 wsgi.py进行测试,OK以后,再部署到AppFog上。
应用部署需要通过AppFog专用的命令行工具af进行(貌似这种方式很流行的样子)。
af工具基于ruby,所以需要:
1)先装ruby;
2)再装gem;
3)然后通过gem安装af。
具体可参照AppFog说明:https://docs.appfog.com/getting-started/af-cli
安装完毕后就可以通过af对应用进行管理了:
首先登陆 :
af login
输入你的账号和密码,提示登陆ok。
然后cd到应用的根目录,如我的应用是jmppok/,执行更新命令
af update jmppok
会看到更新提示,如果全部OK,就是成功了。
应用部署完毕后,就可以打开浏览器,输入应用的地址进行访问了。地址其实就是“应用名称”+“.ap01.aws.af.cm/”
比如我的应用就是http://jmppok.ap01.aws.af.cm/
你也可以通过上面第4步中提到的应用管理中的Visit Live Site进行访问,获取应用的地址。
我的应用可访问的页面有 3个,都非常简单:
1) http://jmppok.ap01.aws.af.cm/
2)http://jmppok.ap01.aws.af.cm/list
3)http://jmppok.ap01.aws.af.cm/regist
大家可以试一下。
AppFog总体来说速度、稳定性都不错,管理也比较简单。可以自定义应用比较方便,但可能只适合程序员之流。
他相比传统的Blog,可以由程序员完全定制,比较自由。但门槛较高。
总值推荐广大钓丝程序员尝试。(富人可以去弄个付费的,就不要用这个了:) )