Vue-CLI 3.x 部署项目至生产服务器

本教程主要讲解的是 Vue-CLI 3.x 脚手架搭建的vue项目, 先构建生成dist文件(纯静态应用), 然后自动化部署到静态文件服务器 Nginx。

一、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;
        }
    }

二、配置生产/测试环境 服务器SSH远程登陆账号

 

1. 在项目根目录下, 创建 .env 文件 (当前环境变量)

VUE_APP_SERVER_ID变量指代 当前需部署的服务器ID为0

VUE_APP_SERVER_ID=0

2. 在项目根目录下, 创建 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(‘\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) 定义多个服务器账号 及 根据 SERVER_ID 导出当前环境服务器账号

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]

三、创建自动化部署脚本 (使用scp2库)

在项目根目录下, 创建 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(‘  发布失败.\n‘))
    throw err
  } else {
    console.log(chalk.green(‘  Success! 成功发布到生产服务器! \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"
  }

五、执行部署任务

在项目根目录下 执行 npm run deploy命令, 或 使用 vue ui控制面板执行deploy任务, 即可自动打包并部署至线上服务器

备注: 

要切换部署的服务器, 只需修改 .env文件中的服务器ID, 然后再执行deploy任务即可.

福利: 

本文已同步到我的个人技术网站 IT干货-sufaith 该网站包括Python, Linux, Nodejs, 前端开发等模块, 专注于程序开发中的技术、经验总结与分享, 欢迎访问.

原文地址:https://www.cnblogs.com/sufaith/p/vue-cli.html

时间: 2024-10-07 04:25:09

Vue-CLI 3.x 部署项目至生产服务器的相关文章

部署项目至青云服务器简易流程

在青云服务器上,安装好项目所需的环境.按照如下步骤部署项目. 第一,将发布文件拷贝到指定的文件路径下. /usr/local/tomcat/tomcat8001/apache-tomcat-7.0.57/webapps/ 第二,赋权限. chmod -R 777 /usr/local/tomcat/tomcat8001/apache-tomcat-7.0.57/webapps/项目名称 第三,切换tomcat工作目录,关闭服务. cd /usr/local/tomcat/tomcat8001/a

【生产环境部署】部署项目到生产环境Linux下

以前自己写过一个开源的项目,没部署到线上环境,借此机会熟悉下线上部署的流程 1.Linux上安装数据库MySQL,创建一个数据库database 名 Mxonline 2.使用远程工具 Navicat Premium 登录Linux数据库上,并把本地已经跑好的数据库表同步传输到 Mxonline上 3.数据库传输好后,在Linux上搭建Python的虚拟环境 在Linux系统的opt目录创建Python虚拟环境,一般虚拟环境创建在opt目录不然会有权限问题 再将 本地开发的项目project 文

部署项目到远程服务器

JavaWeb 甚至 Html 都还没开始学,我就鼓捣着部署到服务器的活,是不是有点装逼嫌疑? 其实,学习 JavaWeb 纯属于个人兴趣,兴趣的起源就是搭建自己的网站,所以在一开始写 HelloWorld 的时候,就把它打包部署到远程服务器上,让任何人都可通过浏览器进行访问(虽然并没有人)我的 HelloWorld 页面,这可以大大激发我的积极性. 前期准备: 首先我们得有一个云主机才行,露珠的是在腾讯云租的最低配置的 centos7 服务器,在校大学生有优惠,一个月一块钱. 在 centos

MyEclipse应用服务器之部署项目到Tomcat服务器

1. 导入示例Web项目 (1)下载示例Web项目. (2)选择File>Import. (3)展开General,然后在工作区中选择现有项目,并单击下一步. 导入现有项目 (4)选择Select archive file选项,浏览下载的zip文件,并单击Finish. 选择一个归档文件导入 (5)根据向导迁移项目. 2. 部署Web项目 现在您有一个Web项目需要工作,可以将它部署到Tomcat上,同时可以开始开发它的实时性. (1)在服务器视图中右键单击MyEclipse Tomcat服务器

mac 客户端远程部署项目到linux服务器

首先,你要知道远程服务1:IP或域名,2:用户名,密码 3:远程服务器已经装有ssh,下面分享下在mac客户端如何部署,window或其他客户端只是连接服务命令不同其他一样. 准备:远程服务器IP比如是555.555.55.555     用户名是:userlogin   密码是:password    要部署的项目名是:projectName 1.    登录到远程服务器(一般服务机都会提供ssh协议):ssh  [email protected] 2.    接下来会提示输入密码:passw

Tomcat普通用户部署教程(生产服务器)

1.环境准备 JDK安装 解压 tar xf tomcat-xx.tar.gz -C /data/soft cd /data/soft 重命名 mv tomcat-xx tomcat Tomcat安装 解压 tar xf jdk-xxx.tar.gz -C /data/soft cd /data/soft 重命名 mv jdk-xxx jdk 设置环境变量 vim /etc/profile export TOMCAT_HOME=/data/soft/tomcat export JAVA_HOME

部署项目到12服务器(18082)

打开putty软件,选择12服务器地址进入控制台.输入账号密码登录. 18082tomcat地址为: 进入到trunk_war_https目录下,将C:\Users\zhanxiaoling\js-xdb目录下的war包放入,执行.sh文件开始重启tomcat: 执行/data/TomcatDeploy/Tomcat_https.sh命令:

vue cli 3.x 项目部署到 github pages

github pages 是 github 免费为用户提供的服务,写博客,或者部署一些纯静态项目. 最近将 vue cli 3.x 初始化项目部署到 github pages,踩了一些坑,记录如下. https://github.com/nusr/resume-vue 1. vue-router 不要开启 history 模式 路径中的 # 比较丑,就开启了 vue-router 的 history 模式,去掉了 #.平时做项目也是默认开启 history 模式.折腾了半天发现,我这是部署到 g

weblogic初学笔记2-在Linux上部署项目

一.这两天在做部署项目到Linux服务器上. 网上有用war包部署的,也有把war包解压之后部署的.比如:http://www.cnblogs.com/xdp-gacl/p/4143413.html 因为我本地用的是tomcat,编译生成的文件和weblogic上用的其实是一样的,目录也一样.所以直接从tomcat下的webapps下copy出整个代码文件夹,上传到Linux服务器上的weblogic域中.这样以后update项目代码也很方便,不像war包一样还要打包解压.直接拿本地tomcat