比較不同的 PaaS 平台上的 Node.js 支援

來源:互聯網
上載者:User

Node.js相對於其他的語言來說可能仍然是年輕的,但是它的虛擬機器主機卻有很多的選擇。在這篇文章中,我們就來看看幾個“平台即服務(PaaS)”供應商。

我這裡不涵蓋某些“基礎設施即服務(IaaS)”的選擇,比如 AWS 和 Joyent,儘管這些選擇之中的某些PaaS和IaaS之間的界限有一點點模糊。

在這一輪中,我主要考察兩個方面:部署和環境變數的配置。我還把一些有關起步,儀表板的和對其它的雜項操作的觀察囊括了進來。在以後的文章中,我們將會運行一些基礎的效能測試,然後來看看架構伸縮難易程度。

The Players
Provider Deployment method Environment variables Performance
Nodejitsu CLI CLI or web interface coming soon
Heroku git CLI
Modulus CLI or web upload CLI or web interface
App Fog CLI CLI or web interface
Azure CLI or git CLI or web interface
dotCloud CLI CLI or .yml file
Engine Yard git ey_config npm module
OpenShift git SSH and create file
CloudFoundry coming soon coming soon
設定

我開始於一個非常簡單的Express app,使用nconf可以提供多種不同的方式,讓我們可以給app指定連接埠,監聽我們的應用程式(必要時)以及一個dummy變數,我稱之為SECRET。它會先尋找節點命令傳遞的參數,環境變數,然後從根目錄的上一級到我們制定的預設位置,嘗試載入的config.json檔案。當載入app時,我們能知道變數從外部源載入是否正確。如果錯誤,載入app時將復原到預設的SECRET。如果我可以訪問app的開機記錄,也就可以看到app監聽在NODE_ENV上的哪個連接埠。

最後,我設定"engines": { "node": "v0.10.x" ...到 package.json檔案中,就可以看到每個提供者如何響應。

現在沒有特定的順序..

Nodejitsu

https://www.nodejitsu.com/

一個最初的參與者仍然完全地是Node.js的解決方案,當Joyent放棄他們的no.de服務之後Joyent的Nodejitsu成為了官方夥伴(慚愧,那真是一個不錯的網域名稱).Nodejitsu不再是一個永久免費的中介層.但是個別的方案需要3$每月和有一個30天的免費試用期.

變數配置

根據文檔你不需要設定監聽連接埠,只要它是80或大於1024.

設定我們的SECRET來覆蓋預設的是相當容易的.您可以使用CLI或web介面列表來設定變數,就像這個名單上其他幾個供應商。

部署

發布你的代碼到Nodejitsu雲是通過一個自訂的命令列介面(CLI)應用程式,安裝rpm,註冊以後將自動轉存到 github 指令版本庫. 但整體安裝過程是相當痛苦的,當提示你選擇一個次層網域,然後會自動添加到package.json檔案,在我跑了幾個測試中,部署是非常快的. 在每個部署的package.json檔案的版本屬性是自動遞增與的,這不會麻煩我但可能會使另外一些人煩惱.

我遇到了三個小故障,第一是版本控制,在我部署時有資訊輸出,我展示下:

info: jitsu v0.12.10-2, node v0.10.4

然而,我被告知0.10.x不是支援價值,只有通過對比到0.8.x時我才能夠獲得成功.

第二,我嘗試在package.json改變屬性名稱然後就告訴不能部署

第三.我把ENV變數給消除了,每次我都的重新部署,也許有一個方法可以避免.

Misc Notes 和 Dashboard

我喜歡Nodejitsu。任何處理自訂配置都會通過標準的package.json檔案。你甚至可以定義定製的predeploy和postdeploy hooks。我對它的印象是,它能非常靈活地部署和查看日誌。

 

Heroku

https://www.heroku.com/

PaaS世界的龐然大物, 使用無所不在的Ruby on Rails 構造出的極端流行的平台。

變數配置

同樣是使用CLI設定我們的SECRET,用來覆蓋預設值。

所有應用在連接埠5000上運行,所以你需要監聽這個連接埠。

最後,需要建立一個Procfile來說明web應用:node server.js。這隻是支援多語言的PaaS的平台的小小的副作用。

部署

Heroku的"toolbelt"CLI是用於管理您的帳戶和應用,但部署是通過git,你只需要添加終端他們就會為您提供遠程在你的git配置中,因為他們不完全支援Node.js,我很驚喜地發現他們已經支援v 0.10.6,我的第一個部署似乎成功,但是我收到追蹤錯誤引導我發現第一次需要指定有多少資源,我想致力於這個程式:

heroku ps:scale web=1

在那之後,它是一帆風順的.

雜項說明和控制台

對於我自己的項目我沒嘗試過Heroku直到大約3個月前,部分原因是因為我有一個適度的標準來協助我調整自己的伺服器,及部分原因是因為我認為他們事後處理node.js的,但是如果你能克服他們的不足關於WebSocket支援和一些錯誤標記和統計,這是一個相當不錯的經驗.

他們還得到了一個非常優美和功能的控制台,與一些方便的功能,使你不會感到像其它地方指向S3-hosted檔案中的404頁面,並且能夠將項目的所有權轉讓給不同的使用者。

Modulus

http://modulus.io

.io 尾碼是一個相對較新的服務。 關於Node.js, 他們內嵌支援MongoDB 和本地檔案儲存體。

組態變數

組態變數可以通過網頁介面或者CLI。我試圖在建立SECRET。在嘗試並碰到錯誤後,我發現不能在變數中出現空格!所以奇怪是SECRET模組不能運作。

應用需要監聽8080連接埠, “但我們推薦用連接埠環境變數 (process.env.PORT).”

部署

部署可以通過CLI來做,但你也可以壓縮整個項目並把它通過他們很有趣的網路介面上傳。我沒有任何問題,部署,但每次要把你整個項目(除了node_modules之外)都打包和上傳,這會使它的處理過程比那些使用 git 的“diff”功能或 rsync 的工具慢得多。

至於寫作,模組運行於0.8.15版本,並忽略你在 package.json 中指定的任何內容。

其它注意事項和儀表板

我為這些傢伙歡呼,並希望他們能繼續改善。有個內建MongoDB的選項會是不錯的,我喜歡前期定價。

 

AppFog

http://appfog.com

AppFog先前因PHP Fog而出名,現在已被CenturyLink收購。你可以指定你想使用的雲,如不同地區的AWS、HP以及Azure雲。

組態變數

變數可通過web控制台或者CLI(命令列工具)設定。設定私密變數毫無問題。

文檔要求監聽process.env.VCAP_APP_PORT連接埠,但我嘗試使用預設配置也能正常工作。日誌顯示它在監聽57277連接埠。

部署

也是藉助CLI工具。寫這篇文章的時候,AppFog使用v0.8.14版本,並且忽略package.json裡的版本設定。

其他注意事項和儀錶盤

它的免費計劃看起來挺慷慨的。它提供多達8個執行個體,總共2GB RAM,並可隨意分割使用。它也有內建MongoDB的選項。

 

Windows Azure

http://windowsazure.com

變數配置

變數可以通過網路介面或者CLI配置。在我第一次通過CLI配置SECRET的時候遇到了一個比較詭異的小問題,SECRET變成了secret。所以我不得不用網路介面來更正它。

在沒有對連接埠做任何修改的情況下,這個應用跑得很好,但是在日誌中發現了一個很奇怪的值: \\.\pipe\bea0dffc-de5b-47f4-8575-4d17c2175fd5

部署

希望微軟在這裡還能有更多的自訂的東西,因為當有些檔案被添加進代碼中(名為azure_error and iisnode.yml),CLI會自動通過npm安裝同時也會通過git部署。

Azure啟動並執行是0.8.2這個版本,不過這個版本號碼可以在package.json檔案中重新設定。

注意事項和儀表板

帳戶建立過程是迄今為止最乏味的。它包括簡訊驗證,一個Windows Live帳戶,和一個單獨用於部署的Git帳戶。但總體而言,在Azure平台的巨大範圍來看,儀表板是相當不錯的。他們還支援流記錄檔。至於我可以告訴,Heroku是唯一這麼做的供應商。

 

dotCloud

http://dotcloud.com

支援多國語言.就像Nodejitsu一樣, 他們最近取消了他們的免費服務,所以在開始使用之前需要綁定一張信用卡.

參數配置

參數的設定通過CLI或者一個dotcloud.yml檔案設定.

監聽連接埠需要設定為8080.

部署

dotClouds CLI使用Python編寫的, 同時使用rsync在每次部署的時候最小化你要上傳的資料. 為了帛書,你需要配置supervisord.conf和dotcloud.yml檔案。

目前, dotCloud的版本為 0.6.20. Ouch.

注意事項和控制台

早期的時候我感到非常的憤怒,當他們進行一些重大修改卻幾乎沒有警告的時候。我猜這就是生活在一個beta的世界,但是我一直沒有急著跑回來。

 

Engine Yard

http://engineyard.com

就像Heroku一樣, Engine Yard 也是通過Ruby on Rails來託管的。 不過不一樣的是, 我們對於安裝和環境配置擁有更多的選擇。有伺服器管理經驗的人會覺得Engine Yard更像直接操作某台伺服器,不過這仍然是PaaS。

變數配置

我們可以通過npm模組ey_config來配置環境變數。Engine Yard還支援通過SSH來訪問你的機器,那樣我們就可以直接建立config.json並放到一個正確的地方。

部署

這個是通過git來部署的,不過package.json檔案中的node版本號碼最多隻支援0.8.11。

注意事項和控制台

當我們建立了一個應用,我們需要選擇nginx(推薦)作為前端代理或者使用Node.js,後者支援WebSockets。

當我第一次部署失敗,會彈出一個可以輸入手機號的視窗。

OpenShift.com

http://openshift.com

OpenShift 一個主要由Red Hat維護的開源項目, OpenShift.com是一個託管式服務的平台(像WordPress.org 和 WordPress.com).

組態變數

OpenShift.com 支援用SSH串連你的電腦,這意味著你可以建立 config.json 並把它放到合適的地方. 否則, 沒有特殊的命令來預先定義設定檔.

連接埠是 process.env.OPENSHIFT_INTERNAL_PORT || 8080.

部署

用git操作,如果你不是基於網頁的GUI的粉絲,儘管有 CLI 用來建立和管理項目. 你需要先將你的公用SSH key加到你的賬戶中,這是不包括在node.js快速進階範例的一步。

package.json檔案中的node版本號碼會被忽略,它會預設使用v0.6.20,不過你可以通過額外的操作來改變它

注意事項和控制台

之前我對於擷取樣本應用有些問題,所以我重新開始並讓OpenShift用他們的樣本檔案填充git倉庫。這裡小小的提示一下,包括deploy hook和一些設定檔都在openshift目錄下,README檔案展示了結構並說明每個檔案的意義。

但是我仍然對監聽一個特定IP地址感到困惑,就如下面的:

var ipaddr = process.env.OPENSHIFT_NODEJS_IP || "127.0.0.1";

然後在server.js檔案的app.listen中添加 ipaddr, 就像這樣:

app.listen(app.get('port'), ipaddr, function(){...

我已經和OpenShift相關人員進行了溝通,他們也將更新入門指南讓這部分內容更加得通俗易懂。

CloudFoundry

http://cloudfoundry.com

首先來看,CloudFoundry有一個明確、友好的入門過程。然而,幾個螢幕之後,我得到了這個訊息:
*我們正處在一個過渡時期:*
您正在閱讀V2文檔... Cloudfoundry.com在2013年6月將被升級到V2。

所以,我會轉回到他們在這一系列的下一期中。

後會有期 

不用說,這個世界正在迅速的變化著。不要把太多的關注放在任何具體的細節上,除非先檢查更新。例如,在兩天前我寫好這篇文章,Modulus發送了一封郵件給我,有關升級版本的Node.js。

在以後的文章中,我將繼續監控和測試這些平台的效能,然後記錄擴充他們的快照。在此期間,如果我錯過了你最喜歡的Node.js PaaS,請讓我知道。

via http://www.oschina.net/translate/a-comparison-of-node-js-paas-hosting-providers

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.