Cloud Foundry 是開放源碼的 PaaS 解決方案,支援多種程式語言、開發框架及資料庫等服務,而且更容易開發、測試及佈署。本系列文章將從零開始,和學習者一起開啟雲端應用程式開發的大門。
使用 VMC 將簡易 Node.js 程式發佈到 Cloud Foundry。
建立一個新資料夾(例如 myfirstnode)。
::
mkdir myfirstnode
cd myfirstnode
將 Node.js 範例儲存為「app.js」。
::
var http = require('http');
http.createServer(function (req, res) {
res.writeHead(200, {'Content-Type': 'text/plain'});
res.end('Hello World\n');
}).listen(8000, '127.0.0.1');
console.log('Server running at http://127.0.0.1:8000/');
使用 VMC 工具的 push 指令,就可以將這個超簡易的 Hello World 程式發佈到 Cloud Foundry。
::
vmc push
正常情況下,會有以下的畫面訊息。
::
$ vmc push
Would you like to deploy from the current directory? [Yn]:
Application Name: myfirstnode
Application Deployed URL [myfirstnode.cloudfoundry.com]:
Detected a Node.js Application, is this correct? [Yn]:
Memory Reservation (64M, 128M, 256M, 512M, 1G) [64M]:
Creating Application: OK
Would you like to bind any services to 'myfirstnode'? [yN]:
Uploading Application:
Checking for available resources: OK
Packing application: OK
Uploading (0K): OK
Push Status: OK
Staging Application: OK
Starting Application: OK
Application Name 需要為應用程式定義一個專屬的名稱,如果命名與其他人的名稱重複,發佈應用程式就會失敗。這個範例使用最少的記憶體配置(64MB),VMC 會自動偵測出程式使用 Node.js 開發;這個範例不需要用到資料庫服務,所以在選擇不要與任何服務連結(bind)。
*您需要將 myfirstnode 名稱更換為其他設定,因為本文的範例在測試時已經先註冊這個名稱了。
使用瀏覽器開啟網址「http://myfirstnode.cloudfoundry.com/」,就可以看到發佈至 Cloud Foundry 的程式已經正常運作。
使用 VMC 的 logs 指令,可以看到程式輸出到 console 的訊息被記錄:
::
vmc logs myfirstnode
使用 VMC 的 stats 指令,查詢應用程式執行狀態:
::
vmc stats myfirstnode
狀態查詢結果的範例如下,可以看到應用程式佔用的記憶體、磁碟容量及處理器,以及啟動經過的時間。
::
+----------+-------------+----------------+--------------+---------------+
| Instance | CPU (Cores) | Memory (limit) | Disk (limit) | Uptime |
+----------+-------------+----------------+--------------+---------------+
| 0 | 0.0% (4) | 14.4M (64M) | 256.0K (2G) | 0d:0h:39m:48s |
+----------+-------------+----------------+--------------+---------------+
曾經用過其他 PaaS 的 Node.js 開發者,對這個範例也許會發現一個疑問;一般發佈 Node.js 程式到 PaaS,可能需要以下的設定,透過環境變數取得連接埠(port)參數,才可以順利在雲端環境執行(例如 Windows Azure)。
::
.listen(process.env.port);
早期 Cloud Foundry 執行 Node.js 程式,也同樣需要加上參數,而且必須使用 Cloud Foundry 指定的參數名稱。
::
.listen(process.env.VCAP_APP_PORT);
但目前新的 Cloud Foundry 已經支援 Auto-Reconfiguration,也就是即使我們在程式碼指定 1337 或 8000 之類的連接埠號碼,發佈到 Cloud Foundry 執行時,會由 PaaS 自動調整為合適的設定。關於 Auto-Reconfiguration 機制可以參考以下連結。
* Cloud Foundry Now Supports Auto-Reconfiguration for Node.js Applications(http://goo.gl/fUkEf)