直到最近 Cloud Foundry 正式發佈 Micro 版本,提供虛擬機器下載,可以輕鬆利用私有伺服器架造雲。從無到有建構自己的私有雲服務,並且將 DEMO 專案發佈到雲端,前後大約只要花費一小時,就能一探究竟。
需要更多介紹?請參考本誌過去發表過的 Cloud Foundry 文章:
本次的實測,伺服器是 Ubuntu 10.04 + VirtualBox 4.0,利用免費的 VirtualBox 就能順利執行下載的 Micro 虛擬機器(需要將 .vmdk 掛載到 vbox 新建的 Ubuntu / 64bit VM)。
虛擬機器調整兩個部份:(1)記憶體配置給予1GB空間、(2)網路卡設定成橋接模式。
Micro 第一次開機會要求進行設定,主要是指派 IP 位址及提供 Cloud Foundry 配發的 configuration token。雖然 IP 設定有 DHCP / Static 兩種,但是為讓 XXX.cloudfoundry.me 的 domain 可以正確指向對外實體 IP 位址,因此直接使用 Static 設定靜態位址比較方便(除非有架設 DHCP 可以把對外實體 IP 配發給虛擬機器)。
從 Cloud Foundry 取得的 domain 名稱長這樣: XXX.cloudfoundry.me
若要將開發好的軟體專案,發佈到 Micro Cloud Foundry 架設的 private cloud,就是使用 api.XXX.cloudfoundry.me 。
虛擬機器調整兩個部份:(1)記憶體配置給予1GB空間、(2)網路卡設定成橋接模式。
Micro 第一次開機會要求進行設定,主要是指派 IP 位址及提供 Cloud Foundry 配發的 configuration token。雖然 IP 設定有 DHCP / Static 兩種,但是為讓 XXX.cloudfoundry.me 的 domain 可以正確指向對外實體 IP 位址,因此直接使用 Static 設定靜態位址比較方便(除非有架設 DHCP 可以把對外實體 IP 配發給虛擬機器)。
從 Cloud Foundry 取得的 domain 名稱長這樣: XXX.cloudfoundry.me
若要將開發好的軟體專案,發佈到 Micro Cloud Foundry 架設的 private cloud,就是使用 api.XXX.cloudfoundry.me 。
![]() |
Micro Cloud Foundry 伺服器畫面 |
![]() |
服務狀態顯示 |
首先要確認 Ruby 及 RubyGems 開發工具是否已經完成安裝。
sudo apt-get install ruby-full
sudo apt-get installl rubygems
安裝好 rubygems 系統就會有 gem 指令,利用它將 vmc 裝上。
sudo gem install vmc
如果打 vmc 找不到指令,必須手動加上 PATH 設定。
export PATH=/var/lib/gems/1.8/bin:$PATH
再來使用 vmc 設定目標服務器,XXX 就是 Cloud Foundry 配發的 domain 名稱。
vmc target api.XXX.cloudfoundry.me
然後使用 Cloud Foundry 註冊的帳號(E-Mail)及密碼登入驗證。
vmc login
以上就設定完成 vmc 所需的配置。
我們的第一個 DEMO 專案,將採用 Ruby on Rails 建立。因為目前 Cloud Foundry 僅支援 Rails 3 以上的版本,如果使用 apt 安裝 Ubuntu 套件庫的 rails,版本為 2.x 不符合需求。目前使用 gem 安裝的 rails 預設就是 3.0.10。
sudo gem install rails
檢查一下 rails 版本,沒問題就可以繼續。若版本抓錯,可以考慮用 sudo apt-get purge rails 將之前的安裝移除,再確定 gem 裝得版本沒問題。
gem list
rails -v
因為 rails 預設的資料庫採用 sqlite3 ,為了測試方便我們不想改為 MySQL,所以還要補裝 sqlite3 相關套件。
sudo apt-get install sqlite3 libsqlite3-dev
sudo gem install sqlite3
終於可以建立 rails 專案了,命名為 hello 吧(new 是 rails3+ 才需要的指令)!
rails new hello
切換到新專案資料夾。
cd hello
先檢查、補裝相依套件。
bundle package; bundle install
在本地端測試 rails 專案是否可以順利執行。
rails server
使用瀏覽器打開 http://localhost:3000/ 有看到畫面就是成功,回到終端機用 ctrl+c 把測試伺服器結束。
再來就是要把專案「推」向雲端。
vmc push
它會出現一些 Y 或 N 的問題,通常用預設值就搞定。其中 Application Name 是發佈到雲端之後的應用程式名稱,會影響網址,例如命名為 hello 發佈後就是: http://hello.XXX.cloudfoundry.me/ 。
如果你也跟我一樣僥倖發佈成功,畫面應該是長這樣:
![]() |
vmc push |
那...如果發佈失敗怎麼辦?
還記得李教授曾經說過:死了就上雲端啦!
如果在本地測試成功的專案,發佈到雲端失敗,剛開始還真的覺得死不瞑目吶!!!
現階段 vmc push 之後如果失敗,並不會顯示什麼有用的錯誤訊息,但是在遠(雲)端主機上會留下 log 檔,使用 vmc files 指令可以查看 log 記錄內容。
vmc files hello
輸出:
app/ -
logs/ -
vmc files hello logs/
輸出:
migration.log 201B
staging.log 1006B
stderr.log 185B
stdout.log 149B
vmc files hello logs/stderr.log
輸出:
[2011-08-27 11:19:18] INFO WEBrick 1.3.1
[2011-08-27 11:19:18] INFO ruby 1.8.7 (2010-08-16) [x86_64-linux]
[2011-08-27 11:19:18] INFO WEBrick::HTTPServer#start: pid=10276 port=38902
有 log 訊息可以參考,應該比較瞑目了。
快快樂樂馬後炮:如果沒有良好且盡可能完整的測試,就把專案發佈到雲端,出錯要找問題其實相當麻煩。因此 Test-Driven Development 就更顯得重要了。如果軟體專案要為雲端做好準備,請記得測試、要測試、要先寫測試,否則很有可能...專案死了以後它自己上雲端了。
看起來還在許願階段:
回覆刪除http://support.cloudfoundry.com/entries/20053652-database-dump-backup