1. 程式人生 > 實用技巧 >部署node服務(在本地模擬環境進行部署)

部署node服務(在本地模擬環境進行部署)

部署node服務,可以利用pm2管理程序,但是相關的mongodb也需要在環境中安裝和配置,此文以本地windows環境去模擬(只是為了模擬全過程,不建議服務不是在windows環境,會使自己的電腦卡頓,很多資源進行閃退,而且自己的電腦也會常常關機)

為了可以自動管理,重啟等,設定成服務

1 windows服務的簡介

Microsoft Windows 服務(即以前的 NT 服務)使您能夠建立在它們自己的 Windows 會話中可長時間執行的可執行應用程式。這些服務可以在計算機啟動時自動啟動,可以暫停和重新啟動而且不顯示任何使用者介面。這種服務非常適合在伺服器上使用,或任何時候,為了不影響在同一臺計算機上工作的其他使用者,需要長時間執行功能時使用。還可以在不同於登入使用者的特定使用者帳戶或預設計算機帳戶的安全上下文中執行服務。

我們可以通過開選單-->輸入服務-->回車即可查詢本機所有的服務

可以對服務進行停止,重啟和刪除,如下在本地開啟個nginx服務,在上面方式開啟的介面可以停止和重啟

也可以刪除該服務,使用服務相關命令

用sc.exe這個Windows命令
開始——執行——cmd.exe,然後輸入sc就可以看到了。使用辦法很簡單:
sc
sc query nginx
sc delete nginx 

sc delete "服務名" (如果服務名中間有空格,就需要前後加引號),服務名稱可以在服務的屬性裡找到,不要將服務名稱誤認為顯示名稱。

2 安裝配置mongoDb服務

將mongoDb配置成windows的服務有兩種方式,

方式一:在mongoDb安裝過程中有選項可以直接按流程勾選

詳見:https://docs.mongodb.com/manual/tutorial/install-mongodb-on-windows/

方式二:使用命令列(老版本文件裡有介紹),以管理員身份開啟cmd執行下面的命令

sc.exe create MongoDB binPath= "\"E:\tool\MongoDB\Server\4.2\bin\mongod.exe\" --service --config=\"E:\tool\MongoDB\Server\4.2\mongod.cfg\"" DisplayName= "MongoDB" start= auto  

上面的執行可能存在各種問題,總結:

Q1:執行完後沒有反應,開啟服務:net start MongoDB Server
       結果顯示:mangodb服務無法啟動,發生服務特定錯誤:100
A:刪除D:\MongoDB\data\mongod.lock檔案

Q2:提示“服務沒有響應控制” 造成錯誤的原因是在第一步配置時,輸入有誤。
A:在 cmd 中 使用 sc delete MongoDB 命令來刪除之前安裝的服務,並重新執行第一步並 
     確保準確無誤。

Q3:報錯“拒絕訪問”,原因:則應該使用管理員身份執行cmd
A:在開始頁面輸入cmd,右邊欄中選擇“以管理員身份執行”

詳見:https://docs.mongodb.com/v3.6/tutorial/install-mongodb-on-windows/

3 安裝node服務

使用pm2管理專案,下面列出了部分常用的命令

pm2 start --name="projectName" main.js
pm2 list 檢視各個專案執行情況
pm2 reload name/id 掛掉了重啟 
Pm2 stop item-id 停止專案
Pm2 delete item-id 刪除專案 
1. 取最新程式碼  git clone https://**/*.git 
2. cd projectName
3. npm install
一般部署專案時別忘記在平臺安裝依賴包,本文在本機嘗試暫時不需要

將pm2設定為服務,在不同系統上是不同的

一般的linux系統:

pm2 list   //檢視你的專案是否成功啟動
pm2 save   //儲存你的專案,可以直接看到儲存到的目錄
pm2 startup  //設定自啟動指令碼,執行後悔要求設定環境變數,按下面方式設定一下即可
[PM2] You have to run this command as root. Execute the following command:
      sudo su -c "env PATH=$PATH:/home/unitech/.nvm/versions/node/v4.3/bin pm2 startup <distribution> -u <user> --hp <home-path>

注意:當升級到較新的Node.js版本時,請更新PM2的啟動指令碼! 先使用pm2 unstartup,然後再使用pm2 startup

詳見官網:https://pm2.keymetrics.io/docs/usage/startup/

在windows系統,需要引入外部庫,生成一個相容Windows的啟動指令碼,如pm2-windows-service或pm2-windows-startup。

使用pm2-windows-startup,使用方法如下

pm2save   //儲存當前的程序列表
npminstallpm2-windows-startup-g
pm2-startupinstall

現在PM2將在啟動時自動恢復儲存的程序。

詳見:https://www.npmjs.com/package/pm2-windows-startup

pm2-windows-service詳見https://www.npmjs.com/package/pm2-windows-service

4 nginx 服務,設定開機自啟動

我們常規的方法電腦重啟都需要手動start,如何進行開啟自啟

1 正常下載nginx解壓
2 下載winSW.NET4
    https://github.com/winsw/winsw/releases/tag/v2.9.0
3 配置等詳見下面文章
https://www.npmjs.com/package/pm2-windows-service

注意nginx配置代理時需要小心/問題

#當請求的介面地址為/myproject/getMySource時
#實際將訪問http://127.0.0.1:3000/myproject/publicPath/getMySource
location/myproject/{
proxy_passhttp://127.0.0.1:3000;
}
#實際將訪問http://127.0.0.1:3000/publicPath/getMySource
location/myproject/{
proxy_passhttp://127.0.0.1:3000/;
}

  

經過上面的一系列配置,可以重啟下你的電腦試一下了。記錄一下自己學習的全過程,如有錯誤或更好的方法,有大神經過感謝指點一下;