NUXT 使用pm2服務器發佈

背景


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

過程


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

npm install -g pm2

  經常使用指令github

pm2 list        查看pm2託管線程列表
pm2 start       啓動服務
pm2 stop        中止服務
pm2 restart     重啓服務
pm2 delete      刪除服務

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

npm run build

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

npm install

安裝相關依賴瀏覽器

  託管到pm2服務器

  執行指令app

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 命令框存在也關不掉 好像也沒啥影響就是看着有點不舒服

相關文章
相關標籤/搜索