你也可以在我的博客阅读这片文章
AppFog是国外的一个免费应用引擎,类似于SAE、GAE和NAE。它支持Java, Python, Node, .Net, Ruby, PHP, MySQL, Mongo, PostgreSQL等平台和数据库,几乎覆盖主流web开发平台,而且免费套餐诱人,部署方便,所以吸引的不少人的目光,尤其是像我这样没钱的学生党。缺点,服务器在国外(最近的也在新加坡),延迟肯定是有的,另外,说不定某天就被长城给over掉了。
苦于没有NAE邀请码,博客暂时部署在appfog上,部署过程还算简单,这里以Linux Ubuntu+nodejs部署为例,简单介绍一下。
####Step1.注册服务。 好吧,我知道你肯定会,就当我说废话。。。
####Step2.创建一个APP 当你注册完成后,进入https://console.appfog.com/ ,点击New App,你可以看到app创建分三歩走:
第一步,选择一类应用,我们看到有三种支持的nodejs应用,nodejs,node chat node express,不管你是否使用了node express,选第一个nodejs都可以,关键是你在上传代码时加上所有你依赖的库,也就是node moudles那个文件夹放到代码跟目录即可。
第二步,选择一个服务器,随便你了,要说里你最近的就是新加坡的那个,使用的是亚马逊的云存储服务。
第三步,输入你的app子域名,也就是你给你的app起的名称。
之后,点击Create App,你会看到一个进度列表,当你看到‘done’后,你的应用就创建完毕了,简单吧。接下来,你将进入配置界面。
####Step3.App配置 一个dashboard呈现在你面前:
看上去够简单吧,介绍下,Instances顾名思义,启动实例数目,memeory quota是内存分配,你有2G的内存,你自己根据应用大小决定分配给他多少内存。调整完后记得点击一下右下角蓝色的Update!显示Done之后就修改完成了。
####Step4.创建数据服务 很大一部分的web应用还是需要数据库的,appfog提供了三种数据引擎,mongodb,postgresql,mysql。点击左侧边栏Services,选择一种数据服务,在下面输入名字,创建就好。 注意,还没有完,你需要将创建的服务和应用绑定(Bind)才能使用,不过你稍等片刻,他会自动给你绑定上。
####Step5.修改代码并上传
修改代码重要的是你的数据库连接的代码,上面创建服务的页面有三种语言的连接实例,但是貌似打不开,nodejs可以使用下面代码:
if(process.env.VCAP_SERVICES){
var env = JSON.parse(process.env.VCAP_SERVICES);
var mongo = env['mongodb-1.8'][0]['credentials'];
}
else{
var mongo = {
"hostname":"localhost",
"port":27017,
"username":"你的用户名",
"password":"你的密码",
"name":"你的应用名",
"db":"db"
}
}
var generate_mongo_url = function(obj){
obj.hostname = (obj.hostname || 'localhost');
obj.port = (obj.port || 27017);
obj.db = (obj.db || 'test');
if(obj.username && obj.password){
return "mongodb://" + obj.username + ":" + obj.password + "@" + obj.hostname + ":" + obj.port + "/" + obj.db;
}
else{
return "mongodb://" + obj.hostname + ":" + obj.port + "/" + obj.db;
}
}
var mongourl = generate_mongo_url(mongo);
把mongourl赋值给你的数据库连接字符串就好了。
ps:我一开始忘记设置数据库连接,仍然保持开发时候的127.0.0.1配置应用也能正常运行,奇怪,后来改过来了。
上传代码你需要ruby gem 和gem下的af。ubuntu下,
sudo apt-get install ruby1.9.1 ruby1.9.1-dev gem
gem install af
cd ‘你的应用目录’
af login(之后输入你的邮箱和密码)
af update ‘你的应用名’
等待,一连串的ok后完成,回到dashboard点击右边Visit Live Site,看看是不是已经运行了?
ps:之前的Step2可以在代码根目录用af命令:af push来实现,过程就是做几个选择题和填空题。 pps:你需要将所有的依赖库node_moudles保留在根目录,肯定有人想用package.json让服务器自己npm install,这种方法当然可以,你需要npm shrinkwrap,具体方法在这里,但不如直接上传来的直接,而且免除莫名其妙的问题。
####Step6.绑定域名 你已经有了一个appfog提供的域名,但如果你想使用自己的域名怎么办?appfog使用cname的方法绑定域名(如果你不知道cname是神马东东,google之)。具体操作:
点击做侧边栏Domain Names,在空白框内写入你的域名,update。然后去你的域名服务商那里设置解析方式cname,地址为红色的cname01开头的网址,appfog会自动根据你添加的域名进行定向,然后等待所有dns同步好你的信息,你就能访问了。
ok,6步,不出什么差错的话部署应该胜利完成了。
关于CLI控制appfog,看这里,http://docs.appfog.com/getting-started/af-cli 进阶请随时保持对文档的关注,但需要你一定的英文阅读的能力。
还有:求NAE邀请码。。。。
遇到个问题,请教下
我用的是express来开发,本地开发的时候一切正常。
当登陆admin后进行的一系列操作都要先验证session,如果session失效会跳转到login
本地开发是一切正常,session可以用,当我配置到appfog后发现很经常出现session无效的情况
就连登陆也经常无法登陆,一般点几次才能登陆,登陆后进行操作又会跳回login页。又看不到控制台的信息,纠结ing啊~~~~
我的appfog mongodb的使用经验 http://www.9958.pw/post/appfog_database http://www.9958.pw/post/appfog_mongorestore