部署Node應用程式選擇Heroku還是Now.sh?
隨著Node.js的不斷流行,新教程層出不窮,教程式設計師如何編寫伺服器端JavaScript應用程式和API。本文將介紹兩大用於部署Node應用程式的專案:Now.sh和Heroku。解釋如何將程式碼部署到上述兩個平臺,在監控選項、易用性、提供的功能以及免費託管計劃方面各有哪些利弊。
用Heroku進行部署
為了能夠將應用程式部署到Heroku,程式設計師必須在Heroku上註冊併為機器安裝Heroku CLI。
開始之前,需要向Procfile新增一些程式碼。因為,Heroku將利用這個檔案來確定如何執行上傳的程式碼。
如果將下面的程式碼新增到檔案中,Heroku就知道應該執行什麼命令來啟動應用程式:
一旦完成,請嘗試透過從終端輸入heroku login的方式登陸,Heroku會要求輸入登入憑證。
接下來,導航到專案的根目錄並輸入命令:heroku create。這將在Heroku上建立一個應用程式,該應用程式已準備好接收專案的原始碼。Heroku上的應用程式名稱是隨機建立的。
要將程式碼部署到Heroku,只需使用git push heroku master。程式設計師可以使用heroku open命令來訪問應用程式,這將開啟生成的URL。
推動對Heroku的更改
遵循正常的Github流程可以推動更改:
有用的Heroku命令
要確保至少有一個應用程式例項在執行:heroku ps:scale web = 1
因為正在使用免費平臺,所以不可能擴充套件應用程式。但是,可以縮減比例,因此不執行的應用程式例項:heroku ps:scale web = 0。
按照Heroku生成的時間順序檢視最新的日誌(流):heroku logs --tail
可以只顯示應用程式日誌。應用程式日誌是程式碼中console.log()語句的輸出,可以使用如下語句檢視:heroku logs--source app-name
Heroku提供了在本地//localhost:5000上執行應用程式的可能性:heroku local web
列出所有Heroku應用程式:heroku apps
刪除部署:heroku apps:destroy--app app-name
新增所有者(帳戶)來訪問應用程式:heroku access:add me@email.com,刪除heroku access:remove
Heroku環境變數
如果在本地使用.env檔案,則可能需要為Heroku部署使用其他環境變數。可以使用heroku config來設定它們:heroku config:setPORT=3001.。這些值將覆蓋使用者在.env檔案中設定的變數。
要檢視所有定義的Heroku環境變數,只需使用heroku config。如果想刪除一個環境變數例如 PORT,使用heroku config:unset PORT。
免費可用的版本
允許最多五個Heroku應用程式
512 MB RAM
不可升級可用,只可以同時執行一個應用程式例項
閒置30分鐘後進入睡眠狀態
隨機生成應用程式名稱
有關記憶體使用情況,響應時間和可用吞吐量的度量標準,但無法新增自定義度量標準
使用now.sh進行部署
Now.sh著重於開發者體驗(DX),這是一種獨特的方式。他們試圖提供靈活的工具,使用起來非常簡單。Now.sh是Zeit.cowhich開發的一些工具的一部分。
為了簡單起見,我們將只透過npm安裝Now.sh CLI:
接下來,需要註冊以便可以在控制檯中使用。登入和註冊都發生在login page。每次登入時,都必須透過電子郵件驗證來確認登入嘗試。 確認後,將被重定向到儀表板,程式設計師可以檢視日誌和部署。
現在開始使用,只需在控制檯中輸入now即可。控制檯將提示輸入電子郵件,填寫正確的電子郵件,並透過點選驗證電子郵件。
登入之後,讓我們來看看package.json中的啟動指令碼。 Now.sh使用這個來啟動應用程式。這是scripts欄位的樣子:
讓我們開始將程式碼部署到now.sh. 確保在程式碼示例的根目錄下。要開始部署過程,只需點選now即可。我想你可以看到developer experience,一切都可以用一個關鍵字now執行!如果對應用程式進行更改,並且想要重新部署應用程式,那麼只需在控制檯中點選now即可。
應用程式的URL可以在控制檯日誌中找到,有關部署或其他命令的更多常規日誌可以在儀表板找到。
定製和定義環境變數
定製Now.sh部署的一種方法是使用now.json檔案。但是,由於已經使用了package.json檔案,因此可以在now鍵下新增所需的自定義。此配置允許自定義應用程式名稱和別名,設定環境變數,指定部署型別並定義引擎。
程式設計師也可以透過CLI設定環境變數:now -e NODE_ENV =“production”-e PORT =“3001”。
如果想提供一個dotenv檔案,可以設定選項--dotenv,如果想使用.env.production而不是.env?,可以考慮用--dotenv=.env.production來解決。最後,還可以將生產dotenv檔案新增到你的package.json。
有用的Now.sh命令
可以為部署新增一個別名:now alias deploy-url aliasname
列出所有部署與他們唯一的程式碼:now ls
刪除部署:now rm unique-code
強制新建(如有問題):now-f
擴充套件web應用程式(免費版最多3個):now scale deployment-url3。有時,預測流量是不容易的。Now.sh允許設定自動縮放比例的最小值和最大值:now scale deployment-url min max。
監視日誌
日誌輸出可以透過以下命令獲取:nowlogs[deployment-url|deployment-id]。更高階的日誌記錄也是可能的。
now logs-a-q"GET"-n10deployment-url:顯示包含單詞GET的10個最新日誌。
now logs--since=20171028:顯示2017年10月28日的所有日誌(ISO 8601格式)
點選Now.sh儀表板中的應用程式也可以訪問日誌。
Now.sh的OSS計劃
OSS計劃可以免費使用,並提供以下內容:
頻寬:1GB
日誌儲存高達100MB
無限的部署可能
併發例項限制為3個
不支援自定義域
最大檔案大小:1MB
沒有自動擴充套件支援
比較
Heroku和Now.sh都提供了很好的功能。Now.sh透過提供易於使用的CLI更多地關注開發者的體驗。另一方面,Heroku更注重視覺化的記錄,特別是用度量指標進行監控。
就個人而言,我更喜歡簡單的Now.sh,現在只需使用一個關鍵字now來進行(重新)部署。對於Node應用程式,我喜歡在.package.json檔案中新增now屬性來自定義Now.sh部署。不需要像Procfile Heroku所要求的那樣新增額外的檔案。
這兩個平臺之間很難選擇, 但這隻取決於你的喜好和需求。除了上述一些關於免費版本可以獲得的支援,從易用性方面來說,Now.sh或許更棒!
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31077337/viewspace-2153990/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 在 heroku 平臺部署 node.js 程式Node.js
- 管理 node 版本,選擇 nvm 還是 n?
- 將Laravel應用部署到HerokuLaravel
- 你應該選擇 Ubuntu 還是 Fedora?Ubuntu
- 程式設計師:選擇效率,還是選擇質量?程式設計師
- 如何選擇正確的Node框架:Express,Koa還是Hapi?框架ExpressAPI
- 如何快速使用 Heroku 來部署你的 Laravel 應用Laravel
- 用Vue.js開發原生應用選擇Weex還是NativeScript?Vue.js
- 怎樣選擇TCP還是選擇UDPTCPUDP
- Heroku 自動部署 GitHub 程式碼Github
- 專案管理工具,選擇本地部署還是上雲?專案管理
- 小程式還是APP,企業該如何選擇?APP
- Flutter還是React Native?誰是2021年構建移動應用程式的最佳選擇?FlutterReact Native
- C 還是 Rust:選擇哪個用於硬體抽象程式設計Rust抽象程式設計
- 使用 Docker 部署 Node 應用Docker
- 測試開發應該選擇 Java 還是 Go 呢?JavaGo
- 應屆生選擇大公司還是小團隊
- Java選擇自學還是培訓?Java
- Java之外選擇Scala還是Groovy?Java
- 將SAP UI5應用部署在Heroku雲平臺裡UI
- 資料倉儲架構到底選擇內部部署還是上雲?架構
- 老菜鳥致青春,程式設計師應該選擇 Java 還是 C#程式設計師JavaC#
- 選擇python還是web前端好PythonWeb前端
- 選擇HTTPS代理還是SOCKS代理?HTTP
- iOS 開發選擇OC還是Swift?iOSSwift
- React 還是 Vue:你該如何選擇?ReactVue
- 開發該選擇Blocks還是DelegatesBloC
- 選擇介面還是抽象類?---應用例項說明介面與抽象類的應用場合(區別)抽象
- 資料上雲,應該選擇全量抽取還是增量抽取?
- 如何選擇谷歌seo還是adwords廣告?谷歌
- 分析選擇Salesforce CRM還是Zoho CRM(上)Salesforce
- 微服務選擇Spring Cloud還是Dubbo?微服務SpringCloud
- php還是java,選擇比努力更重要!PHPJava
- Python/Sqlite 程式:瀏覽器應用還是桌面應用?PythonSQLite瀏覽器
- 程式設計應該用 Mac,還是 PC ?程式設計Mac
- 程式設計應該用 Mac 還是 PC ?程式設計Mac
- 非程式設計師選擇學習C++還是Python?程式設計師C++Python
- 學Python應該選擇Linux系統還是Windows系統?PythonLinuxWindows