部署Node應用程式選擇Heroku還是Now.sh?

趙鈺瑩發表於2018-05-07

  隨著Node.js的不斷流行,新教程層出不窮,教程式設計師如何編寫伺服器端JavaScript應用程式和API。本文將介紹兩大用於部署Node應用程式的專案:Now.sh和Heroku。解釋如何將程式碼部署到上述兩個平臺,在監控選項、易用性、提供的功能以及免費託管計劃方面各有哪些利弊。

  用Heroku進行部署

  為了能夠將應用程式部署到Heroku,程式設計師必須在Heroku上註冊併為機器安裝Heroku CLI。

  開始之前,需要向Procfile新增一些程式碼。因為,Heroku將利用這個檔案來確定如何執行上傳的程式碼。

  如果將下面的程式碼新增到檔案中,Heroku就知道應該執行什麼命令來啟動應用程式:

  部署Node應用程式:一文看懂Heroku和Now.sh的最大區別!

  一旦完成,請嘗試透過從終端輸入heroku login的方式登陸,Heroku會要求輸入登入憑證。

  接下來,導航到專案的根目錄並輸入命令:heroku create。這將在Heroku上建立一個應用程式,該應用程式已準備好接收專案的原始碼。Heroku上的應用程式名稱是隨機建立的。

  要將程式碼部署到Heroku,只需使用git push heroku master。程式設計師可以使用heroku open命令來訪問應用程式,這將開啟生成的URL。

  推動對Heroku的更改

  遵循正常的Github流程可以推動更改:

  部署Node應用程式:一文看懂Heroku和Now.sh的最大區別!

  有用的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分鐘後進入睡眠狀態

  隨機生成應用程式名稱

  有關記憶體使用情況,響應時間和可用吞吐量的度量標準,但無法新增自定義度量標準

  部署Node應用程式:一文看懂Heroku和Now.sh的最大區別!

  使用now.sh進行部署

  Now.sh著重於開發者體驗(DX),這是一種獨特的方式。他們試圖提供靈活的工具,使用起來非常簡單。Now.sh是Zeit.cowhich開發的一些工具的一部分。

  為了簡單起見,我們將只透過npm安裝Now.sh CLI:

  部署Node應用程式:一文看懂Heroku和Now.sh的最大區別!

  接下來,需要註冊以便可以在控制檯中使用。登入和註冊都發生在login page。每次登入時,都必須透過電子郵件驗證來確認登入嘗試。 確認後,將被重定向到儀表板,程式設計師可以檢視日誌和部署。

  現在開始使用,只需在控制檯中輸入now即可。控制檯將提示輸入電子郵件,填寫正確的電子郵件,並透過點選驗證電子郵件。

  登入之後,讓我們來看看package.json中的啟動指令碼。 Now.sh使用這個來啟動應用程式。這是scripts欄位的樣子:

  部署Node應用程式:一文看懂Heroku和Now.sh的最大區別!

  讓我們開始將程式碼部署到now.sh. 確保在程式碼示例的根目錄下。要開始部署過程,只需點選now即可。我想你可以看到developer experience,一切都可以用一個關鍵字now執行!如果對應用程式進行更改,並且想要重新部署應用程式,那麼只需在控制檯中點選now即可。

  應用程式的URL可以在控制檯日誌中找到,有關部署或其他命令的更多常規日誌可以在儀表板找到。

  部署Node應用程式:一文看懂Heroku和Now.sh的最大區別!

  定製和定義環境變數

  定製Now.sh部署的一種方法是使用now.json檔案。但是,由於已經使用了package.json檔案,因此可以在now鍵下新增所需的自定義。此配置允許自定義應用程式名稱和別名,設定環境變數,指定部署型別並定義引擎。

  部署Node應用程式:一文看懂Heroku和Now.sh的最大區別!

  程式設計師也可以透過CLI設定環境變數:now -e NODE_ENV =“production”-e PORT =“3001”。

  如果想提供一個dotenv檔案,可以設定選項--dotenv,如果想使用.env.production而不是.env?,可以考慮用--dotenv=.env.production來解決。最後,還可以將生產dotenv檔案新增到你的package.json。

  部署Node應用程式:一文看懂Heroku和Now.sh的最大區別!

  有用的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/,如需轉載,請註明出處,否則將追究法律責任。

相關文章