Vue-CLI 3.X 프로젝트 를 생산 서버 에 배치 하 는 방법
1.Nginx 서버 파일 설정
server {
listen 80;
server_name www.xxxxxx.com;#
location / {
root /usr/local/www/xxx_program/;
index index.html;
try_files $uri $uri/ /index.html;
}
}
server {
listen 80;
server_name test.xxxxxx.com; #
location / {
root /usr/local/www/xxx_program_test/;
index index.html;
try_files $uri $uri/ /index.html;
}
}
2.생산/테스트 환경 서버 SSH 원 격 로그 인 계 정 설정프로젝트 루트 디 렉 터 리 에.env 파일 만 들 기(현재 환경 변수)
VUE_APP_SERVER_ID 변 수 는 현재 배치 해 야 할 서버 ID 를 0 으로 표시 합 니 다.
VUE_APP_SERVER_ID=0
프로젝트 루트 디 렉 터 리 에 deploy/products.js 파일 을 만 듭 니 다.이 파일 의 기능 은 다음 과 같 습 니 다.
(1)env 환경 변수 읽 기
const fs = require('fs')
const path = require('path')
// env
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('
').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(/\
/gm, '
')
}
// remove any surrounding quotes and extra spaces
value = value.replace(/(^['"]|['"]$)/g, '').trim()
res[key] = value
}
})
return res
}
(2)여러 서버 계 정 정의 및 SERVERID 현재 환경 서버 계 정 내 보 내기
const SERVER_LIST = [
{
id: 0,
name: 'A- ',
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- ',
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]
3.자동화 배치 스 크 립 트 만 들 기(scp 2 라 이브 러 리 사용)프로젝트 루트 디 렉 터 리 에 deploy/index.js 파일 을 만 듭 니 다.
const scpClient = require('scp2')
const ora = require('ora')
const chalk = require('chalk')
const server = require('./products')
const spinner = ora(' ...')
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(' .
'))
throw err
} else {
console.log(chalk.green(' Success! !
'))
}
})
4.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"
}
5.배치 임무 수행프로젝트 루트 디 렉 터 리 에서 npm run deploy 명령 을 실행 하거나 vue ui 제어 판 을 사용 하여 deploy 작업 을 수행 하면 온라인 서버 에 자동 으로 포장 하고 배치 할 수 있 습 니 다.
비고:배 치 된 서버 를 전환 하려 면.env 파일 의 서버 ID 를 수정 한 다음 deploy 작업 을 수행 하면 됩 니 다.
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.