教你在heroku雲平台上部署Node.js應用,herokunode.js
雖然AWS現在也推出了自己的PaaS平台,叫Elastic Beanstalk,但heroku的優勢在於它上面有很多第三方的add-on,比如MongoDB,mysql, redis, memcached, 還有各種訊息佇列、sms和郵件、後台批處理、搜尋、自動化監控等外掛程式,從生態環境的角度來說比AWS還是強很多。
這也就是說,heroku上有現成的Node.js PaaS運行環境,還有很多add-on,每天會自動把資料備份到AWS S3上,你只需要用git命令把代碼push上去就行了,其他的什麼都不用管。對於咱們程式猿來說,世界上還有比這更爽的事情嗎?
所以,為了造福網友,俺今天就把部署的幾個小步驟總結一下。
假定你已經有了一個叫sample的node.js應用,代碼放在/Home/Apps/sample9527下,目錄下有你的伺服器端核心js檔案server.js,現在你已經cd到了這個目錄下。
為了讓heroku識別你的應用,需要在這個目錄下加入一個檔案Procfile,內容是一行代碼:
web: node server.js
(這裡的 web: node 是告訴heroku你要部署的是一個node.js web應用,後面的server.js 就是你的伺服器端核心程式碼檔案名稱)
好,現在部署工作可以開始了。
首先,你需要到 www.heroku.com 上註冊一個使用者,使用者名稱是你的郵箱地址。然後安裝 Heroku Toolbelt ,這是一個命令列工具,可以讓你直接在shell裡用命令發布代碼,查看系統狀態,修改伺服器配置,等等。
然後在shell裡用heroku login命令登入,輸入你的使用者名稱和密碼即可。
$ heroku login
第一步可以用foreman start命令檢查一下你的代碼是否能順利在heroku上運行,如果看到輸出中沒有報錯,那就說明基本正常。
$ foreman start
然後就是用git同步代碼:
$ git init$ git add .$ git commit -m "init"
建立heroku應用:
$ heroku create sample9527
如果sample9527這個app名在heroku上沒有人用,那麼你會建立成功,應用的連結就是http://sample9527.herokuapp.com/,不然就改個名字接著試,或者直接用heroku create讓它幫你起一個新名字。
如果需要安裝一些資料庫之類的外掛程式,可以看看它有什麼add-on可用,然後在命令列加入。比如加入一個MongoLab提供的MongoDB資料庫:
$ heroku addons:add mongolab
(大部分add-on需要你在使用者資訊中填入信用卡,但是如果選用免費版本則不會被計費,放心吧)
然後就可以同步程式碼了:
$ git push heroku master
同步之後,heroku會自動根據npm配置下載和安裝必要的dependencies,然後啟動你的應用。
現在可以到應用連結看一下是否正常,如果有錯誤,可以在命令列查看日誌:
$ heroku logs
根據日誌中的錯誤資訊修改代碼後,可以再次提交代碼:
$ git commit -a -m "update some code"$ git push heroku master
或者在需要時直接用restart命令重啟服務:
$ heroku restart
heroku的初級玩法基本上就是這些了,夠簡單吧?自己去試試唄。
怎在heroku上部署nodejs
Heroku是一個雲應用部署平台,你可以在上面部署簡單的應用(包括java、ruby、node.js應用等)。
這裡只是做一個測試,所以使用了Express架構,你可以按照heroku的參考說明部署自己的應用。
註冊
首先要註冊一個heroku帳號,這個很簡單,一個郵箱即可。
下載heroku自己的命令列工具Toolbelt
這裡我是在mac平台下,使用homebrew可以直接一鍵安裝(brew install heroku),你可以按照自己的平台在官網下載相應的安裝包安裝。
在自己電腦上登陸
開啟命令列,輸入: heroku login , 按照提示輸入帳號密碼即可。
開始部署應用
這裡介紹的是node.js應用的部署,其它應用按官網上步驟操作即可。
部署node.js應用
編寫應用
這裡我直接使用express產生了一個應用
修改package.json檔案
範例:
{
"name": "MyMobile",
"version": "0.0.1",
"private": true,
"scripts": {
"start": "node app.js",
"postinstall": "./node_modules/bower/bin/bower install"
},
"dependencies": {
"express": "~3.4.5",
"jade": "*",
"bower": "*"
},
"engines": {
"node": "0.10.x",
"npm": "1.3.x"
}
}
添加Procfile檔案
注意Procfile檔案要放在根目錄下,名稱為Procfile。簡單的話,只加一條 web: node web.js 即可。
使用git建立一個倉庫
部署到heroku
heroku create
git push heroku master
運行應用
命令列輸入heroku ps:scale web=1
你可以檢查是否部署成功,在命令列輸入 heroku ps即可,如果正常輸出,即是部署成功。
查看
命令列輸入 heroku open 即可開啟瀏覽器,它自動在瀏覽器中顯示你啟動並執行應用。
添加你自己的網域名稱
在DNS解析的地方,用CNAME將你自己的網域名稱映射到heroku分配給你的網域名稱即可。
在這裡我還使用了bower,所以在package.json裡使用了一條 bower命令。這樣heroku在運行前會自動按你的 bower.json 裡的依賴下載相應的庫。這樣你就不用把這些庫添加到倉庫,減少項目體積。
原文連結:......餘下全文>>
雲平台的雲部署架構有什?
雲端運算架構主要可分為四層,其中有三層是橫向的,分別是顯示層、中介軟體層和基礎設施層,通過這三層技術能夠提供非常豐富的雲端運算能力和友好的使用者介面,還有一層是縱向的,稱為管理層,是為了更好地管理和維護橫向的三層而存在的。下面介紹每個層次的作用和屬於這個層次的主要技術。
顯示層
這層主要是用於以友好的方式展現使用者所需的內容,並會利用到下面中介軟體層提供的多種服務,主要有五種技術:
HTML:標準的Web頁面技術,現在主要以HTML4為主,但是將要推出的HTML5會在很多方面推動Web頁面的發展,比如視頻和本機存放區等方面。
JavaScript:一種用於Web頁面的動態語言,通過JavaScript,能夠極大地豐富Web頁面的功能,最流行的JS架構有jQuery和Prototype。
CSS:主要用於控制Web頁面的外觀,而且能使頁面的內容與其表現形式之間進行優雅地分離。
Flash:業界最常用的RIA(Rich Internet Applications)技術,能夠在現階段提供HTML等技術所無法提供的基於Web的富應用,而且在使用者體驗方面,非常不錯。
Silverlight:來自業界巨擎微軟的RIA技術,雖然其現在市場佔有率稍遜於Flash,但由於其可以使用C#來進行編程,所以對開發人員非常友好。
在顯示層,大多數雲端運算產品都比較傾向HTML,、JavaScript和CSS這對黃金組合,但是Flash和Silverlight等RIA技 術也有一定的用武之地,比如VMware vCloud就採用了基於Flash的Flex技術,而微軟的雲端運算產品肯定會在今後使用到Silverlight。
中介軟體層
這層是承上啟下的,它在下面的基礎設施層所提供資源的基礎上提供了多種服務,比如快取服務和REST服務等,而且這些服務即可用於支撐顯示層,也可以直接讓使用者調用,並主要有五種技術:
REST:通過REST技術,能夠非常方便和優雅地將中介軟體層所支撐的部分服務提供給調用者。
多租戶:就是能讓一個單獨的應用執行個體可以為多個組織服務,而且保持良好的隔離性和安全性,並且通過這種技術,能有效地降低應用的購置和維護成本。
平行處理:為了處理海量的資料,需要利用龐大的X86叢集進行規模巨大的平行處理,Google的MapReduce是這方面的代表之作。
應用伺服器:在原有的應用伺服器的基礎上為雲端運算做了一定程度的最佳化,比如用於Google App Engine的Jetty應用伺服器。
分布式緩衝:通過分布式緩衝技術,不僅能有效地降低對後台伺服器的壓力,而且還能加快相應的反應速度,最著名的分布式緩衝例子莫過於Memcached。
對於很多PaaS平台,比如用於部署Ruby應用的Heroku雲平台,應用伺服器和分布式緩衝都是必備的,同時REST技術也常用於對外的介面, 多租戶技術則主要用於SaaS應用的後台,比如用於支撐Salesforce的Sales Cloud等應用的Force.com多租戶核心,而平行處理技術常被作為單獨的服務推出,比如Amazon的Elastic MapReduce。
基礎設施層
這層作用是為給上面的中介軟體層或者使用者準備其所需的計算和儲存等資源,主要有四種技術:
虛擬化:也可以理解它為基礎設施層的“多租戶”,因為通過虛擬化技術,能夠在一個物理伺服器上產生多個虛擬 機,並且能在這些虛擬機器之間能實現全面的隔離,這樣不僅能減低伺服器的購置成本,而且還能同時降低伺服器的營運成本,成熟的X86虛......餘下全文>>