Vue-CLI 3.X 部署項目至生產(chǎn)服務器

本教程主要講解的是 Vue-CLI 3.x 腳手架搭建的vue項目, 先構建生成dist文件(純靜態(tài)應用), 然后自動化部署到靜態(tài)文件服務器 Nginx献酗。

一傲醉、Nginx服務器文件的配置

server {

? ? ? ? listen 80;

? ? ? ? server_name www.xxxxxx.com;#生產(chǎn)環(huán)境

location / {

root /usr/local/www/xxx_program/;

index index.html;

try_files $uri $uri/ /index.html;

}

}

server {

? ? ? ? listen 80;

? ? ? ? server_name test.xxxxxx.com; #測試環(huán)境

location / {

root /usr/local/www/xxx_program_test/;

index index.html;

try_files $uri $uri/ /index.html;

}

}

二、配置生產(chǎn)/測試環(huán)境 服務器SSH遠程登陸賬號

在項目根目錄下, 創(chuàng)建 .env 文件 (當前環(huán)境變量)

VUE_APP_SERVER_ID變量指代 當前需部署的服務器ID為0

VUE_APP_SERVER_ID=0

2. 在項目根目錄下, 創(chuàng)建 deploy/products.js 文件

該文件功能如下:

(1) 讀取env環(huán)境變量

const fs = require('fs')

const path = require('path')

// env環(huán)境變量的路徑

const envPath = path.resolve(__dirname, '../.env')

// env對象

const envObj = parse(fs.readFileSync(envPath, 'utf8'))

const SERVER_ID = parseInt(envObj['VUE_APP_SERVER_ID'])

function parse (src) {

? // 解析KEY=VAL的文件

? const res = {}

? src.split('\n').forEach(line => {

? ? // matching "KEY' and 'VAL' in 'KEY=VAL'

? ? const keyValueArr = line.match(/^\s*([\w\.\-]+)\s*=\s*(.*)?\s*$/)

? ? // matched?

? ? if (keyValueArr != null) {

? ? ? const key = keyValueArr[1]

? ? ? let value = keyValueArr[2] || ''

? ? ? // expand newlines in quoted values

? ? ? const len = value ? value.length : 0

? ? ? if (len > 0 && value.charAt(0) === '"' && value.charAt(len - 1) === '"') {

? ? ? ? value = value.replace(/\\n/gm, '\n')

? ? ? }

? ? ? // remove any surrounding quotes and extra spaces

? ? ? value = value.replace(/(^['"]|['"]$)/g, '').trim()

? ? ? res[key] = value

? ? }

? })

? return res

}

(2) 定義多個服務器賬號 及 根據(jù) SERVER_ID 導出當前環(huán)境服務器賬號

const SERVER_LIST = [

? {

? ? id: 0,

? ? name: 'A-生產(chǎn)環(huán)境',

? ? domain: 'www.xxx.com',

? ? host: 'XX.XX.XX.XX',

? ? port: 22,

? ? username: 'root',

? ? password: 'xxxxxxx',

? ? path: '/usr/local/www/xxx_program/'

? },

? {

? ? id: 1,

? ? name: 'B-測試環(huán)境',

? ? domain: 'test.xxx.com',

? ? host: 'XX.XX.XX.XX',

? ? port: 22,

? ? username: 'root',

? ? password: 'xxxxxxx',

? ? path: '/usr/local/www/xxx_program_test/'

? },?

]

module.exports = SERVER_LIST[SERVER_ID]

三零如、創(chuàng)建自動化部署腳本 (使用scp2庫)

在項目根目錄下, 創(chuàng)建 deploy/index.js 文件

const scpClient = require('scp2')

const ora = require('ora')

const chalk = require('chalk')

const server = require('./products')

const spinner = ora('正在發(fā)布到生產(chǎn)服務器...')

spinner.start()

scpClient.scp('dist/', {

? host: server.host,

? port: server.port,

? username: server.username,

? password: server.password,

? path: server.path

}, function(err) {

? spinner.stop()

? if (err) {

? ? console.log(chalk.red('? 發(fā)布失敗.\n'))

? ? throw err

? } else {

? ? console.log(chalk.green('? Success! 成功發(fā)布到生產(chǎn)服務器! \n'))

? }

})

四躏将、添加 package.json 中的 scripts 命令, 自定義名稱為 “deploy”

"scripts": {

? ? "serve": "vue-cli-service serve",

? ? "build": "vue-cli-service build",

? ? "lint": "vue-cli-service lint",

? ? "deploy": "npm run build && node ./deploy"

? }

五、執(zhí)行部署任務

在項目根目錄下 執(zhí)行 npm run deploy命令, 或 使用 vue ui控制面板執(zhí)行deploy任務, 即可自動打包并部署至線上服務器

備注:要切換部署的服務器, 只需修改 .env文件中的服務器ID, 然后再執(zhí)行deploy任務即可.

?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末考蕾,一起剝皮案震驚了整個濱河市祸憋,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌肖卧,老刑警劉巖蚯窥,帶你破解...
    沈念sama閱讀 206,482評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異塞帐,居然都是意外死亡拦赠,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,377評論 2 382
  • 文/潘曉璐 我一進店門壁榕,熙熙樓的掌柜王于貴愁眉苦臉地迎上來矛紫,“玉大人,你說我怎么就攤上這事牌里〖找В” “怎么了务甥?”我有些...
    開封第一講書人閱讀 152,762評論 0 342
  • 文/不壞的土叔 我叫張陵,是天一觀的道長喳篇。 經(jīng)常有香客問我敞临,道長,這世上最難降的妖魔是什么麸澜? 我笑而不...
    開封第一講書人閱讀 55,273評論 1 279
  • 正文 為了忘掉前任挺尿,我火速辦了婚禮,結(jié)果婚禮上炊邦,老公的妹妹穿的比我還像新娘编矾。我一直安慰自己,他們只是感情好馁害,可當我...
    茶點故事閱讀 64,289評論 5 373
  • 文/花漫 我一把揭開白布窄俏。 她就那樣靜靜地躺著,像睡著了一般碘菜。 火紅的嫁衣襯著肌膚如雪凹蜈。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,046評論 1 285
  • 那天忍啸,我揣著相機與錄音仰坦,去河邊找鬼。 笑死计雌,一個胖子當著我的面吹牛悄晃,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播白粉,決...
    沈念sama閱讀 38,351評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼传泊,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了鸭巴?” 一聲冷哼從身側(cè)響起眷细,我...
    開封第一講書人閱讀 36,988評論 0 259
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎鹃祖,沒想到半個月后溪椎,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,476評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡恬口,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,948評論 2 324
  • 正文 我和宋清朗相戀三年校读,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片祖能。...
    茶點故事閱讀 38,064評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡歉秫,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出养铸,到底是詐尸還是另有隱情雁芙,我是刑警寧澤轧膘,帶...
    沈念sama閱讀 33,712評論 4 323
  • 正文 年R本政府宣布,位于F島的核電站兔甘,受9級特大地震影響谎碍,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜洞焙,卻給世界環(huán)境...
    茶點故事閱讀 39,261評論 3 307
  • 文/蒙蒙 一蟆淀、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧澡匪,春花似錦熔任、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,264評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至荠瘪,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間赛惩,已是汗流浹背哀墓。 一陣腳步聲響...
    開封第一講書人閱讀 31,486評論 1 262
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留喷兼,地道東北人篮绰。 一個月前我還...
    沈念sama閱讀 45,511評論 2 354
  • 正文 我出身青樓,卻偏偏與公主長得像季惯,于是被迫代替她去往敵國和親吠各。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 42,802評論 2 345

推薦閱讀更多精彩內(nèi)容