NUXT 使用pm2服務器發布


背景


  之前發布Nuxt 項目都是使用  npm run generate 指令發布到服務器上面,性能存在問題所以想要 更換發布方式,因為是Windows平台所以嘗試使用 iisnode 托管在iis,但是訪問圖片的路徑是虛擬目錄一直訪問不到圖片, 使用反向代理折騰了一天沒有找到解決方案之后嘗試使用 pm2 托管node 再在iis 上重寫路由。

過程


  安裝pm2,直接全局安裝 (pm2 官網地址:http://pm2.keymetrics.io )

npm install -g pm2

  常用指令

pm2 list        查看pm2托管線程列表
pm2 start       啟動服務
pm2 stop        停止服務
pm2 restart     重啟服務
pm2 delete      刪除服務

  如果是在本地打包好再上傳到服務器的化 執行

npm run build

  需要將一下四個文件及文件夾上傳到服務器上在執行

npm install

安裝相關依賴

  托管到pm2

  執行指令

pm2 start npm -- start

執行成功

就可以瀏覽器直接訪問 http://localhost:3000 可以打開

  使用 application request routing 反向代理

安裝:下載地址(http://www.iis.net/downloads/microsoft/application-request-routing)

安裝完成后,打開IIS->選中服務器名稱->雙擊 右側功能視圖 IIS 節點下的Application Request Routing Cache->點擊 右側操作視圖Proxy節點下的Server Proxy Settings->勾選上Enable Proxy前面的復選框

     

 

 

 

 

給你的iis web服務配置URL重寫規則

  

添加規則

 

 

 添加虛擬目錄

 

總結


 

   這是第一次使用Nodejs 啟動服務, pm2 也還有更多高級的配置需要學習, 記錄的過程也比較粗糙 打算自己重復幾次 完善一下  這里有遇到一個pm2的一個, 在啟動服務的時候遇到這個錯誤, 

(function (exports, require, module, __filename, __dirname) { :: Created by npm, please don't edit manually.
                                                              ^
SyntaxError: Unexpected token :
    at createScript (vm.js:56:10)
    at Object.runInThisContext (vm.js:97:10)
    at Module._compile (module.js:542:28)
    at Object.Module._extensions..js (module.js:579:10)
    at Module.load (module.js:487:32)
    at tryModuleLoad (module.js:446:12)
    at Function.Module._load (module.js:438:3)
    at Object.<anonymous> (C:\Users\admin\AppData\Roaming\npm\node_modules\pm2\lib\ProcessContainerFork.js:53:21)
    at Module._compile (module.js:570:32)
    at Object.Module._extensions..js (module.js:579:10)
C:\PROGRAM FILES\NODEJS\NPM.CMD:1
(function (exports, require, module, __filename, __dirname) { :: Created by npm, please don't edit manually.
                                                              ^

GitHub 上面有解決方案 https://github.com/Unitech/pm2/issues/2808 

There's your problem - when you do that, you're telling pm2 to interpret the "npm script" with an argument of start. Try putting a npm-cmd call into a start script called startscript.js, and then doing pm2 start startscript.js.

Eg
npm install node-cmd --save;

in startscript.js:
var cmd=require('node-cmd'); cmd.run('npm start');

pm2 start startscript.js

需要安裝 node-cmd 這個包,之后創建一個 start.js 文件使用指令啟動該文件 

pm2 start start.js

解決完這個 問題之后 我發現啟動完 一直有一個 npm 命令框存在也關不掉 好像也沒啥影響就是看着有點不舒服

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM