nodejs系列之八——nodejs与cloudfoundry

原文来自:

http://ramonblog.cloudfoundry.com/blog/4fd44b4415d8f0d91e000001

参考其它内容请看本blog中的nodejs系列提纲

简介

CloudFoundry是VMVare提供的一个开源的PaaS(Platform as a Service)云计算平台。其实这种平台即服务的云计算平台并不算新,但是作为开源的,它应该算是第一家吧,至少是比较有知名度的一家。在今年初的时候,CloudFoundry曾经在北京上海做过一些声势比较大的介绍,我报名了但是有事情没有参加上海的会议。

CloudFoundry可以在其官方网站找到很多相关的资料,作为入门本文主要集中在介绍入门知识,尤其只关心nodejs相关的。更多具体的内容可以参看其官方的入门文档.

作为一个简单的对比,我们可以看到将其与Google GAE,Amazon AWS进行简单的对比。

CloudFoundry: 编程语言有Java/Ruby/Scala/Javascript;内置的Framework有Spring/Rails/NodeJS;而提供的Service有MySql/MongoDB/postgresql/rabbitmq/redis。 GAE:编程语言有Java和Python;内置的Framework有Django,但是都需要稍作修改才能部署在GAE上;提供的Service则是内置和透明的BigTable。 AWS:编程语言有Java和Php或者任意语言,因为整个服务器EC2都可以提供给你;内置的Framework则没有,不过你可以部署任何自己想要的;提供的Service则有Mysql/Oracle/Amazon Simple DB.

可以看出,其实CloudFoundry是介于AWS和GAE之间的一个平台,比GAE灵活,但是比AWS受限制。AWS足够灵活,但是增加了用户的使用负担,所以AWS中提供了Beastalk就是类似于CloudFoundry的平台,但是其对应的Framework则是空白。综述,CloudFoundry是比较理想的环境,容易使用,提供了内置的Framework和Service,也有一定的灵活性。跟GAE相比最重要的是CloudFoundry在国内可以访问。

开始

要使用GAE首先需要注册,获取帐号之后就可以安装VMC,然后再参考Node.js Application Development with Cloud Foundry开始开发并部署你的Hello World。

你也可以在github中下载本站的源代码,从而部署在CloudFoundry中,这样你就有一个跟我一样的blog了。

更多更具体的内容可以参考官方的入门文档

注意: 
1. 当你在部署一个应用的时候,实际上vmc仅仅是将你整个应用上传到服务器,所以说,你所有的module必须在你的应用底下,否则是不能正常运行的,如将某些module安装成全局路径,那样这些module。 
2. 在部署应用到服务器之前,可以在本地环境中调试。确定运行成功了,再push到服务器。

更新应用

用nodejs开发有一个好处就是非常的方便,作为脚本语言,不需要编译,编辑一下就可以立即看到效果。当然直接使用nodejs是不可以的,因为每次需要重启,这个时候需要使用一个module:always。这样你就可以随时修改随时看到最新的效果。满意之后,直接更新cloudfoundry。譬如我更新本网站代码即:

vmc update ramonblog

注意:这里运行这个命令的当前目录为你的app目录,例如ramonblog的程序目录如下,运行命令时的当前目录就是ramonblog。

ramonblog 
|------app.js 
|------node_modules

使用CloudFoundry服务

CloudFoundry提供了多种服务,目前基本上都是数据存储的服务,包括关系数据库Mysql和non-sql的mongodb,以及其它的一些服务。具体那些服务可以运行下面的命令获取:

vmc services

nodejs跟mongodb是比较典型的搭配,你可以参考官方的入门文档来设置启用mongodb:Node.js Development with the MongoDB Service

注意这里mongodb所使用链接地址,以及用户名密码的设置必须按照官方文档

调试

通常我们在本地调试通过之后,上传应用到服务器,这样一般不会出错。如果还是有问题的话,就需要使用log来查看问题的出处。显然这是一个很傻的调试方式,但是我不确定是否还有别的方法。似乎可以在下载Micro Cloud Foundry,从而在本地搭建一个跟server一样的环境。我没有尝试这个,太麻烦。至于本地的调试可以查看我的另一篇博客关于nodejs inspector。

查看Log可以用下面的命令

vmc files ramonblog logs

其中"vmc files"命令用语查看文件,ramonblog是应用的名字,logs是文件名。在这里输出结果如下:

stderr.log 0B 
stdout.log 332.9K

要查看stdout.log则是

vmc files ramonblog logs/stdout.log

更多地,vmc files命令可以看到服务器上的文件 vmc files ramonblog 
app/ - 
logs/ -

如果执行以下命令则可以看到app下面的文件就是我们的源代码。 vmc files ramonblog app

更多的内容可以从官方文档Debugging Problems With Your Applications获取。

Tunnel 直接访问Service

如果可以直接访问mongodb,那么非常有助于帮助调试,也可以执行一些初始化的工作。所以CloudFoundry提供了Tunnel功能,以帮助我们直接连接到service。要使用这一功能,必须要安装caldecott。不幸的是我没有办法在本地安装,似乎GWF屏蔽了,或者网络太慢。如果你有条件安装的话,参考官方文档:Tunneling to a Cloud Foundry Service with Caldecott

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值