在Ubuntu上部署CloudFoundry Server

openkk 12年前

Cloud Foundry简介: Cloud Foundry是VMware主导使用Ruby开发的一款开源PaaS(Platform-as-a-Service,平台服务)云计算平台,类似于Salesforce旗下的 Heroku,遵从 OpenStack云计算平台规范。

上周尝试通过从源码构建的方式在Ubuntu10.04.4 LTS上安装CloudFoundry Server,虽然最后成功了,但是过程及其艰辛,一波N折,花了很长的时间。
在这个过程中要下载、编译、安装很多的软件包,有几个G吧,非常耗时。还有些东西得FQ才能下载(eg:rubygems.org),在国内,你懂的。

从源码安装

从源码安装”比较简单“,只需要一个命令,然后你就把电脑放那等着吧:

sudo apt-get install curl  bash < <(curl -s -k -B https://raw.github.com/cloudfoundry/vcap/master/dev_setup/bin/vcap_dev_setup)

中间可能会发现这个命令卡在那里不动没有进度了,恭喜你,我们伟大的GFW开始调戏你了。这主要是因为rubygems.org被墙了(CloudFoundry是用Ruby开发的),这时你有两种选择:

一个是给dev_setup设置代理,有两种方法:
方法1 使用-p参数

~/vcap_dev_setup -p http://username:password@host :port/

方法2 设置http_proxy环境变量

export http_proxy="http://username:password@host :port/"

另一个就是替换rubygems镜像站点,为了解决这个问题,淘宝提供了国内的rubygems镜像站点:http://ruby.taobao.org/,感谢淘宝!具体怎么使用,到淘宝镜像站点上看。

我用的是代理。不过用代理会在中间下载一些东西时会出现证书错误,git和pycurl都会出错,还得切换回不使用代理。(注:git可以通过命令git config –global http.sslverify false来关闭ssl验证)

通过PPA源安装

后来google了一下,发现CloudFoundry也有PPA源,这下方便多了,虽然PPA源的下载速度之慢用过的都知道,但总比从源码安装要下载的文件小得多(加上一些依赖几百M),速度慢之类的也还好解决

添加PPA源并安装cloudfoundry-server

sudo apt-add-repository ppa:cloudfoundry/ppa  sudo apt-get update  sudo apt-get install cloudfoundry-server

注:此PPA源只有11.10的软件包,如果需要在其他版本ubuntu上安装,请使用daily源: ppa:cloudfoundry/daily)

安装过程中会让你输入一些MySQL密码之类的信息。如果你的网速给力的话10分钟应该就可以安装好。

后面测试的时候还会用到客户端:

sudo apt-get install cloudfoundry-client

测试:

1.首先设置hosts:

echo "127.0.0.1  api.vcap.me env.vcap.me" | sudo tee -a /etc/hosts

2.把vmc的target指向本地vcap服务器:

$ vmc target api.vcap.me  Succesfully targeted to [http://api.vcap.me]

3.添加用户:

$ vmc add-user   Email: kirkland@example.com  Password: ********  Verify Password: ********  Creating New User: OK  Successfully logged into [http://api.vcap.me]

4.登陆:

$ vmc login   Email: kirkland@example.com  Password: ********  Successfully logged into [http://api.vcap.me]

5.部署应用(helloword):

创建应用程序目录(env)

mkdir env && cd env

把下面内容保存为一个ruby文件(env.rb)

require 'rubygems'  require 'sinatra'    get '/' do    host = ENV['VCAP_APP_HOST']    port = ENV['VCAP_APP_PORT']    "<h1>XXXXX Hello from the Cloud! via: #{host}:#{port}</h1>"  end    get '/env' do    res = ''    ENV.each do |k, v|      res << "#{k}: #{v}<br/>"    end    res  end

创建并上传App

vmc push env --instances 4 --mem 64M --url env.vcap.me -n

浏览器访问App:

http://env.vcap.me

查看App状态:

vmc apps

你会看到类似下面结果:

+-------------+----+---------+-------------+----------+  | Application | #  | Health  | URLS        | Services |  +-------------+----+---------+-------------+----------+  | env         | 1  | RUNNING | env.vcap.me |          |  +-------------+----+---------+-------------+----------+

 [教程完]

VmWare的CloudFoundry还是挺强大的,开发工具,文档也还算全面。客户端可以用命令行的vmc,也有eclipse插件可以用。不过毕竟现在处于Beta阶段还是有不少地方需要改进的。