標籤:
12.2部署的基礎知識
假定你建立了一個想要展示的Web程式,或者建立了一個商業應用,在把它放到生產環境中
之前需要測試一下。你很可能會從一個簡單的部署開始,然後再做些工作讓它的正常已耗用時間和
效能達到最優。本節會帶著你經曆一次簡單、臨時的Git部署,並教你如何用Forever把程式跑起
來。臨時性部署在重啟後會丟失,但它們的優勢是設定起來很迅速。
12.2.1 從Git存放庫部署
我們快速過一下使用Git存放庫的基本部署,讓你對主要步驟有個直觀的認識。
大多數部署都需要完成下面這些步驟:
(1) 用SSH串連到伺服器上;
(2) 如果需要的話,在伺服器上安裝Node和版本控制工具(比如Git和Subversion) ;
(3) 從版本控制存放庫中下載程式檔案,包括Node指令碼、圖片和CSS樣式表,放到伺服器上;
(4) 啟動程式。
這裡有個例子,用Git下載完程式檔案後啟動它:
像PHP一樣,Node也不是背景工作。因此我們列出來的這個基本部署不能斷開 SSH串連。SSH
串連一旦斷開,程式就會終止。不過用一個簡單的工具就可以輕鬆地讓程式保持運行狀態。
自動部署 有幾種可以自動部署Node 程式的辦法。其中一種是使用Fleet
(https://github.com/substack/fleet)這樣的工具,可以用git push部署到一或多個伺服器
上。更傳統的方式是用Capistrano, Evan Tahler的部落格 Bricolage上發表了一篇詳細介紹
文章“用Capistrano部署node.js程式”(http://mng.bz/3K9H)。
12.2.2 讓Node保持運行
比如說你用Cloud9 Nog部落格程式(https://github.com/c9/nog)建立了一個個人部落格,現在你
想要部署它,並要確保在你斷開SSH串連後它仍能運行。
在Node社區中,針對這個問題最常用的處理工具是Nodejitsu的Forever(https://github.com/
nodejitsu/forever)。它能在你斷開SSH串連後讓程式保持運行狀態,在程式崩潰退出後還能重啟它。
圖12-3是Forever工作機制的概念圖。
你可以用sudo命令做Forever的全域安裝。
SUDO命令 在做npm模組的全域安裝時(帶-g選項),經常需要在npm命令前面
加上sudo(www.sudo.ws/),以超級管理員的許可權運行npm命令。在你第一次使用sudo
命令時,系統會提示你輸入密碼。然後再運行跟在sudo後面的命令。
如果你一直跟著我們,現在用下面的命令安裝Forever:
sudo npm install -g forever
Forever裝好之後,你可以用下面這條命令啟動你的部落格,並讓它一直運行下去:
forever start server.js
如果出於某些原因你想停止這個部落格,可以用Forever的stop命令:
forever stop server.js
使用Forever時,你可以用它的list命令擷取它所管理的程式清單:
forever list
Forever還有一個比較實用的功能,當有源碼檔案發生變化時,可以讓它重啟程式。這樣每次
添加新特性或修訂bug時,你就不用再手動重啟了。
要在這種模式下啟動Forever,請用-w選項:
forever -w start server.js
儘管Forever在程式部署上是一個極其實用的工具,但你可能想要一些功能更完備的東西做長
期部署。下一節我們會看一些工業級強度的監測方案,並看看如何讓程式的效能達到最優。
部署node程式並維持正常已耗用時間