【題外話】
上次介紹了VS上開發Node.js的插件Node.js Tools for Visual Studio(NTVS),其提供了非常方便的開發和調試功能,當然很多情況下由于平臺限制等原因需要在其他機器上運行程序,進而需要遠程調試功能,不過還好,NTVS提供的遠程調試也非常方便。
【系列索引】
【文章索引】
NTVS提供了一個遠程調試代理(Remote Debug Proxy)來實現遠程調試,實際上就是不讓Node.js直接運行要調試的程序,而是去運行遠程調試代理,再由代理去執行程序以及與VS進行通信。
獲取NTVS提供遠程調試代理可以在VS里點擊“工具”->“Node.js Tools”->“Remote Debugging Proxy”->“Open Container Folder”,文件夾中的RemoteDebug.js就是了。
RemoteDebug.js的參數為:
node RemoteDebug.js [args] <script to debug> [script args]
即RemoteDebug.js后跟遠程調試代理的參數,然后跟待調試代碼文件,最后跟待調試代碼文件的參數,其中遠程調試代理支持的參數有:
-localport <port num>:本機機器(NTVS所在機器)的端口號,默認為5859
-machineport <port num>:目標機器(執行程序的機器)的端口號,默認為5858
-waitforattach:當附加成功后才執行程序,默認為在目標機器上執行完腳本立即執行程序
-breakatentrypoint:從第一條入口代碼處斷點,即執行待調試代碼時使用--debug-brk參數,默認為--debug
所以如果按默認設置的話,我們只需要把RemoteDebug.js與待執行的代碼一同復制到目標機器上,然后執行如下語句就可以了:
node RemoteDebug.js server.js
如果正確的話會出現類似下圖的內容:
然后在VS中選擇“工具”->“附加到進程”,然后在傳輸里選擇“Node remote debuggin (unsecured)”(如下圖)。
然后在限定符里輸入目標機器的地址和端口然后鍵入回車即可,正確的話將會在下方出現目標機器(如下圖),最后點擊“附加”即可。
接下來就如同在本地調試一樣非常簡單了。
部署Node.js的方式有很多種,比如可以部署在Azure的網站或者云服務(Web Role方式)上等,目前NTVS只支持前者。由于Azure網站是通過IIS上的iisnode模塊實現對Node.js支持的,所以除了部署程序文件以外,還需要配置iisnode,也就是配置Web.config文件。在NTVS里,對Azure網站的支持體現在其兩個Azure項目模板中,即在使用這兩個項目模板創建項目后,會自動生成配置文件,以方便部署使用。當然傳統的方法比如自己上傳文件或通過代碼庫上傳文件(參見相關鏈接3)部署到Azure網站或者通過Web Role方式部署到云服務(參見相關鏈接4)等就不再贅述,微軟網站上都有詳細的文章。
對于NTVS創建的Azure項目,默認包括兩個Web.config文件,分別是本地測試用的Web.config以及部署到Azure上的Web.cloud.config,兩個可以分別修改,其中后者在上傳時會自動修改名稱為“Web.config”。
發布過程與其他項目一樣,可以自己創建配置文件發布到指定文件夾或者FTP等等都可以。對于Windows Azure的項目,可以在發布對話框的第一步“配置文件”頁面中選擇“導入”按鈕,然后選擇“從 Windows Azure 網站導入”,然后點擊登錄就可以輸入自己的Windows Azure的用戶名和密碼,登錄成功后就會如下圖所示,然后在下方選擇要發布的Azure網站即可。
確定后VS會自動從Windows Azure上下載指定網站的配置信息,然后在第二步的“連接”中設置好連接信息,然后一路下一步就可以將項目文件部署到Azure網站上了。其中在最后一步,可以點擊“開始預覽”查看或選擇要上傳的文件,對于Azure網站,其實只需要上傳所有js文件、Web.config文件以及用到的相關靜態文件即可,bin目錄及package.json和README.md都不需要上傳。其中配置文件僅選擇Web.config文件即可,發布時會自動使用Web.cloud.config文件的,而如果選擇Web.cloud.config文件的話,則上傳后的文件名為“Web.cloud.config”。
不過不知道為什么在我這,在發布成功后訪問Azure網站會提示“You do not have permission to view this directory or page.”,就跟沒有正確配置Web.config一樣,所以只能重新上傳一遍Web.config來解決。不過如果不修改Web.config文件話,之后發布時僅發布js等文件就可以了。
【相關鏈接】
- Debugging Node.js running on Linux:http://nodejstools.codeplex.com/wikipage?title=NodeJSOnLinuxOnAzure
- Azure Deployment:http://nodejstools.codeplex.com/wikipage?title=AzureDeployment
- 構建 Node.js 網站并部署到 Windows Azure:http://www.windowsazure.cn/zh-cn/develop/nodejs/tutorials/create-a-website-(mac)/
- 構建 Node.js 應用程序并將其部署到 Windows Azure 云服務:http://www.windowsazure.cn/zh-cn/develop/nodejs/tutorials/getting-started/
文章列表