以前發佈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前面的複選框
這是第一次使用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 命令框存在也關不掉 好像也沒啥影響就是看着有點不舒服