1. 程式人生 > >【nuxt】伺服器部署步驟

【nuxt】伺服器部署步驟

一. 安裝nodejs
建立檔案目錄

mkdir -p /usr/local/software
  

進入檔案目錄

cd  /usr/local/software
  

下載nodeJS

wget https://nodejs.org/dist/v8.9.1/node-v8.9.1-linux-x64.tar.gz  
  

注意

      想要合適的版本node到 https://nodejs.org/dist/ 下自己查詢 到時候複製連結 wget的時候還稱自己的連結即可

解壓NodeJs檔案

tar -zxvf node-v8.9.1-linux-x64.tar.gz -C ../
  

為nodejs更名

 mv /usr/local/node-v8.9.1-linux-x64/ /usr/local/node8.9.1 
  

  
  1. # 軟連結指向到node npm
  2. ln - s /usr/ local/node8. 9.1/bin/node /usr/ local/bin/node
  3. ln - s /usr/ local/node8. 9.1/bin/npm /usr/ local/bin/npm

檢視軟鏈是否成功

ls -al /usr/local/bin
  

軟連結輸出內容


  
  1. [[email protected] bin]# ls -al /usr/ local/bin
  2. total 3428
  3. drwxr-xr-x 2 root root 4096 Feb 6 14: 09 .
  4. drwxr-xr-x. 32 root root 4096 Feb 6 14: 02 ..
  5. lrwxrwxrwx 1 root root 29 Feb 6 14: 09 node -> /usr/ local/node8. 9.1/bin/node
  6. lrwxrwxrwx 1 root root 28 Feb 6 14: 09 npm -> /usr/ local/node8. 9.1/bin/npm

一: 安裝vue相相關包

如果vue-cli沒有安裝,請安裝vue-cli

npm install -g vue-cli
  

到專案目錄下

cd /data/www/project/shop/yf_mall_v1.0.5
  

安裝淘寶景象, 因為在國內用npm安裝會比較慢, 所有我們使用淘寶映象安裝 也就是cnpm

npm install -g cnpm --registry=https://registry.npm.taobao.org 
  

建立cnpm軟鏈

ln -s /usr/local/node8.9.1/bin/cnpm  /usr/local/bin/cnpm 
  

安裝vue相關元件

cnpm install
  

檢視是cnpm 是否安裝完成

cnpm -v
  

輸出內容包括:
node版本
npm版本
cnpm 版本等資訊


  
  1. [[email protected] yf_mall_v1. 0.5]# cnpm -v
  2. [email protected] 5.2. 0 (/usr/ local/node8. 9.1/lib/node_modules/cnpm/lib/parse_argv.js)
  3. [email protected] 5.6. 0 (/usr/ local/node8. 9.1/lib/node_modules/cnpm/node_modules/npm/lib/npm.js)
  4. [email protected] 8.9. 1 (/usr/ local/node8. 9.1/bin/node)
  5. [email protected] 3.3. 0 (/usr/ local/node8. 9.1/lib/node_modules/cnpm/node_modules/npminstall/lib/ index.js)
  6. prefix=/usr/ local/node8. 9.1
  7. linux x64 3.10. 0- 693.5. 2.el7.x86_64
  8. registry=https: //registry.npm.taobao.org

一、安裝npm:
安裝pm2 node程序管理器

進入到yf_mall_v1.0.5目錄下安裝pm2
注(重要): 樓主在其他目錄下安裝全域性pm2 雖能安裝成功 但是執行pm2 list的時間一直失敗 在專案目錄下成功了 所以才到專案目錄下執行安裝pm2命令

cd  /data/www/project/shop/yf_mall_v1.0.5
  
cnpm install -g pm2 
  

安裝資訊如下(最後幾行):


  
  1. All packages installed ( 194 packages installed from npm registry, 1 packages installed from remote url, used 3s, speed 2.13MB/s, json 173( 1.43MB), tarball 5.17MB)
  2. [[email protected] 10.1] link /usr/local/node8. 9.1/bin/[email protected] -> /usr/local /node8.9.1/lib /node_modules/pm2/bin/pm2
  3. [[email protected] 10.1] link /usr/local/node8. 9.1/bin/[email protected] -> /usr/local /node8.9.1/lib /node_modules/pm2/bin/pm2-dev
  4. [[email protected] 10.1] link /usr/local/node8. 9.1/bin/[email protected] -> /usr/local /node8.9.1/lib /node_modules/pm2/bin/pm2-docker
  5. [[email protected] 10.1] link /usr/local/node8. 9.1/bin/[email protected] -> /usr/local /node8.9.1/lib /node_modules/pm2/bin/pm2-runtime

建立軟連結

ln -s /usr/local/node8.9.1/bin/pm2  /usr/local/bin/pm2
  

Nuxt官方部署教程如下:https://zh.nuxtjs.org/guide/commands

由於我們的環境是本地開發,部署於Linux伺服器,下面開始 打包操作:

需要先後執行以下命令

nuxt build
  

但是樓主安裝的時候提示


  
  1. [[email protected] shop] # nuxt build
  2. -bash: nuxt: command not found

解決方法如下:
把nuxt自帶的nuxt命令放到專案的要目錄下
執行軟鏈(放到根目錄)命令如下:

 ln -s /data/www/project/shop/yf_mall_v1.0.5/node_modules/nuxt/bin/nuxt /data/www/project/shop/yf_mall_v1.0.5/nuxt
  
  •  

此時專案目錄為:


  
  1. [[email protected] yf_mall_v1.0.5]# ls -al
  2. total 228
  3. drwxr-xr-x 12 root root 4096 Feb 6 19:14 .
  4. drwxr-xr-x 5 root root 4096 Feb 6 12:02 ..
  5. -rw-r--r-- 1 root root 1536 Feb 6 12:03 app.html
  6. drwxr-xr-x 4 root root 4096 Feb 6 12:03 assets
  7. drwxr-xr-x 6 root root 4096 Feb 6 12:03 components
  8. -rw-r--r-- 1 root root 207 Feb 6 12:03 .editorconfig
  9. -rw-r--r-- 1 root root 28623 Feb 6 12:03 element-variables.scss
  10. -rw-r--r-- 1 root root 11515 Feb 6 12:03 .eslintrc.js
  11. -rw-r--r-- 1 root root 92 Feb 6 12:03 .gitignore
  12. drwxr-xr-x 2 root root 4096 Feb 6 12:03 layouts
  13. drwxr-xr-x 2 root root 4096 Feb 6 12:03 middleware
  14. drwxr-xr-x 1106 root root 114688 Feb 6 14:18 node_modules
  15. lrwxrwxrwx 1 root root 64 Feb 6 19:14 nuxt -> /data/www/project/shop/yf_mall_v1.0.5/node_modules/nuxt/bin/nuxt #樓主新增: 注意此行
  16. -rw-r--r-- 1 root root 2950 Feb 23 14:20 nuxt.config.js
  17. -rw-r--r-- 1 root root 1150 Feb 23 14:20 package.json
  18. drwxr-xr-x 24 root root 4096 Feb 23 14:20 pages
  19. drwxr-xr-x 2 root root 4096 Feb 23 14:20 plugins
  20. -rw-r--r-- 1 root root 2843 Feb 23 14:20 README.md
  21. drwxr-xr-x 9 root root 4096 Feb 23 14:20 static
  22. drwxr-xr-x 2 root root 4096 Feb 23 14:20 store
  23. drwxr-xr-x 4 root root 4096 Feb 23 14:20 .svn

注:官方推薦的根目錄package.json配置資訊如下(我自定義埠在8025):


  
  1. {
  2. "name": "hao_de_pc",
  3. "version": "1.0.0",
  4. "description": "hao_de_pc",
  5. "author": "wangpengjie <[email protected]>",
  6. "private": true,
  7. "config": {
  8. "nuxt": {
  9. "host": "127.0.0.1",
  10. "port": "8205"
  11. }
  12. },
  13. "scripts": {
  14. "dev": "nuxt",
  15. "build": "nuxt build && PORT=8205 npm start",
  16. "start": "nuxt start",
  17. "generate": "nuxt generate",
  18. "lint": "eslint --ext .js,.vue --ignore-path .gitignore .",
  19. "precommit": "npm run lint"
  20. },
  21. }

OK,將 根目錄的這幾個資料夾都上傳到 伺服器的 nuxt 資料夾(我的話 對應伺服器資料夾為:/data/www/project/shop/yf_mall_v1.0.5):

再安裝下依賴外掛:


  
  1. cd /data/www/project/shop/yf_mall_v1 .0 .5
  2. npm install

注: 為方便與pm2守護進行結合, 使用更加方便nuxt.js服務端渲染應用部署這樣就完成了
官方先後執行 npm run build 、npm start 即可完成部署。
而我這邊只要執行 npm run build ,其實我只是把兩個合併成一個,並設定了埠以便區別其他應用,避免端口占用!

簡單說一下nuxt命令(來自官方):

nuxt 啟動一個熱載入的Web伺服器(開發模式,埠預設3000) localhost:3000。
nuxt build 利用webpack編譯應用,壓縮JS和CSS資源(釋出用)。
nuxt start 以生成模式啟動一個Web伺服器 (nuxt build 會先被執行)。
nuxt generate 編譯應用,並依據路由配置生成對應的HTML檔案 (用於靜態站點的部署)。

*1.下面啟動Nuxt專案

npm run start

  


*2.到專案目錄下用pm2執行啟動Nuxt專案命令

pm2 start npm --name "jsyfShopNuxt" -- run start
  
  • 首先一點,必須先啟動 nuxt專案,再啟動 pm2 專案才可以

再做apache的逆向代理配置,你想代理幹嘛用的。。就不解釋了,有新的小哥哥小姐姐可以去帖子看:https://www.cnblogs.com/Nouno/p/6029950.html

 

最終你在 v-host 檔案裡寫的配置為:

不加資原始檔夾嗯。。。


  
  1. <VirtualHost *: 80>
  2. ServerAdmin [email protected]qq.com
  3. php_admin_value open_basedir / data/www/test.anendbro.com:/tmp:/ var/tmp:/proc:/ data/www/ default/phpmyadmin
  4. ServerName test.anendbro.com
  5. ServerAlias test.anendbro.com
  6. ErrorLog / data/wwwlog/test.anendbro.com/error.log
  7. CustomLog / data/wwwlog/test.anendbro.com/access.log combined
  8. ProxyRequests On
  9. ProxyPass / http: //localhost:8205/
  10. ProxyPassReverse / http: //localhost:8205/
  11. </VirtualHost>

 最後幾點補充:

  1. 關於pm2常用命令:

  
  1. pm2 list # 檢視當前正在執行的程序
  2. pm2 start all # 啟動所有應用
  3. pm2 restart all # 重啟所有應用
  4. pm2 stop all # 停止所有的應用程式
  5. pm2 delete all # 關閉並刪除所有應用
  6. pm2 logs # 控制檯顯示所有日誌
  7. pm2 start 0 # 啟動 id為 0的指定應用程式
  8. pm2 restart 0 # 重啟 id為 0的指定應用程式
  9. pm2 stop 0 # 停止 id為 0的指定應用程式
  10. pm2 delete 0 # 刪除 id為 0的指定應用程式
  11. pm2 logs 0 # 控制檯顯示編號為0的日誌
  12. pm2 show 0 # 檢視執行編號為0的程序
  13. pm2 monit jsyfShopNuxt # 監控名稱為jsyfShopNuxt的程序

注:
pm2官網: http://pm2.keymetrics.io/
pm2-github: https://github.com/Unitech/pm2

2. 全部設定完畢,但你的所有檔案都顯示502 錯誤:

   你看下你的代理設定是不是設定完全了。。。我當時錯誤是因為

 如圖第一個設定錯了丟了 / 這玩意導致全部無法訪問。。。

OK以上設定完畢,如果還有

nuxt問題可以加這個群 大佬解答632394867

vue問題可以加這個群 大佬解答115658205

【以上有一半以上轉載於:https://blog.csdn.net/hanwuqia0370/article/details/79269161 感謝 貼主 的方法】

一. 安裝nodejs
建立檔案目錄