vue项目打包布署

vue项目打包布署我们使用 Vue 做项目时 通常前端是单独部署 用户访问的也是前端项目地址 因此前端开发人员很有必要熟悉一下项目部署的流程与各类问题的解决办法了 Vue 项目打包部署本身不复杂 不过一些前端同学可能对服务器接触不多 部署过程中还是会遇到这样那样的问题 本文介绍一下使用 nginx 服务器代理前端项目的方法以及项目部署的相关问题 内容概览

我们使用Vue做项目时,基本都是前后端分离的,所以项目布署有时是前后单独部署。因此前端开发人员很有必要熟悉一下项目部署的流程。

Vue项目打包部署本身不复杂,不过一些前端同学可能对服务器接触不多,部署过程中还是会遇到这样那样的问题。本文介绍一下使用nginx服务器代理前端项目的方法以及项目部署的相关问题。

一、准备工作——服务器和nginx配置使用

1、准备一台服务器

一般我们在布署时,服务器已经开通好了,我们进入服务器配置就好了。

2、安装nginx

一般而言,nginx后端会安装好。我们在此熟悉一下安装过程

# 安装 sudo apt-get install nginx #安装完成后使用nginx -v检查,如果输出nginx的版本信息表明安装成功 # 启动 sudo service nginx start

启动后,正常情况下,直接访问`http://服务器ip`或`http://域名`。如果出现`Welcome to nginx!`的页面,说明成功了!

3、nginx配置文件`nginx.conf`

linux系统下的配置文件通常会存放在/etc目录下,nginx的配置文件就在/etc/nginx文件夹,打开文件/etc/nginx/nginx.conf。

如图所示:

vue项目打包布署

 可以看到默认情况下,nginx代理的根目录是/var/www/html,输入`http://服务器ip`会访问这个文件夹下的文件,然后会根据index的配置值来找默认访问的文件,比如index.html、index.htm之类。

我们可以更改root的值来修改nginx服务代理的文件夹:

1、创建文件夹/www,并创建index.html,写入”Hello world”字符串

mkdir /www
echo 'Hello world' > /www/index.html​

2、修改root值为 /www

 vue项目打包布署

3、sudo nginx -t 检查nginx配置是否正确

 如果出现successfull,说明成功

4、重启nginx

nginx配置好后,要重启才生效

nginx -s reload

5、再次访问页面,发现页面内容已经变成了我们创建的index.html,里面内容是Hello World

二、Vue项目打包并同步文件到服务器

1、打包

一般情况下,使用vue-cli创建的项目,package.json里的script应该已经配置了build指令,直接执行

yarn build

或者

npm run build

`build`命令默认是打包生产环境,如果想指定环境可以这样配置:

"build:stage": "vue-cli-service build --mode staging",// 测试环境 "build:prod": "vue-cli-service build --mode production", // 生产环境

2. 同步到远程服务器

scp -r dist/* root@ip地址:/www 或 rsync -avr --delete-after dist/* root@ip地址:/www

注意这里以及后续步骤是使用root用户远程同步,应该根据你的具体情况替换root和ip(ip换为你自己的服务器IP)。 

为了方便,可以在package.json脚本中加一个push命令,以使用yarn为例(如果你使用npm,则push命令中yarn改成npm  run即可):

"scripts": { "build": "vue-cli-service build", "push": "npm run build && scp -r dist/* root@ip地址:/www" },

这样就可以直接执行yarn push 或者npm run push直接发布了。不过还有一个小问题,就是命令执行的时候要求输入远程服务器的root密码(这里使用root来连接远程的,你可以用别的用户)。

3、同步ssh key

为了避免每次执行都要输入root密码,我们可以将本机的ssh同步到远程服务器的`authorized_keys`文件中。

a、生成ssh key:使用git bash或者powershell执行`ssh-keygen`可以生成ssh key。会询问生成的key存放地址,直接回车就行,如果已经存在,则会询问是否覆盖。然后会让你输入私钥的密码,直接回车就行(如果设置了私钥密码,每次打包上传还要输这个密码;如果设置了后期也可以取消)。

 vue项目打包布署

 我这里因为之前已经生成了私钥(默认名称),所以新的私钥就改了个名字

原来的私钥:/c/Users/chenlim/.ssh/id_rsa

新的私钥:/c/Users/chenlim/.ssh/id_rsa_prd

b、回车后就会生成一对密钥,并存放在你指定的文件夹下

vue项目打包布署

 vue项目打包布署

c、id_rsa是私钥,id_rsa.pub是相对应的公钥

b、使用ssh-copy-id指令同步ssh key到远程服务器,同步的是公钥

ssh-copy-id -i ~/.ssh/id_rsa.pub root@服务器IP地址

vue项目打包布署

然后要输入一次服务器密码,之后再次同步就不需要输入密码了。其实ssh_key是同步到了服务器(此处是root用户目录)~/.ssh/authorized_keys文件里。

当然你也可以手动复制本地~/.ssh/id_rsa.pub(注意是pub结尾的公钥)文件内容追加到服务器~/.ssh/authorized_keys的后面(从命名可以看出该文件可以存储多个ssh key)

注意: 这里全程使用的是root用户,所以没有文件操作权限问题。如果你的文件夹创建用户不是远程登录用户,或许会存在同步文件失败的问题,此时需要远程服务器修改文件夹的读写权限(命令 chmod)。

三、路由为history时的布署

我们知道vue中路由有两种模式,hash和history,默认是hash。

vue项目打包布署

 上图为实际项目中的history模式配置。比hash模式多了句代码。

此项目布署在nginx的根目录下,如果布署到非域名根目录,还需要正确配置项目中的publicPath值,此情况下,非域名根路径部署应该将publicPath配置为完整的前缀路径。publicPath必须使用绝对路径/xxx的配置形式,而不能用相对路径./。比如布署在根目录下的test文件夹,publicPath为`/test`,而非`./`。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/233493.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • nfv与sdn的区别是什么_sdvn是什么技术

    nfv与sdn的区别是什么_sdvn是什么技术NFV负责各种网元的虚拟化,而SDN负责网络本身的虚拟化(比如,网络节点和节点之间的相互连接 什么叫网络虚拟化?先上两张简单粗暴的图。所有的通信应用无非就是两部分组成:计算和网络。这两者关系密不可分,但两者关系严重缺乏对称性,网络一直拖累着计算。4G网络RAN将会不断进化,据说,未来的4G网络空口速率将是现在的10倍。随着智能硬件的爆发,大量的应用接入4G网络,人们的流量需…

    2025年10月13日
    1
  • apt-get 出现的 GPG error 问题[通俗易懂]

    apt-get 出现的 GPG error 问题[通俗易懂]在本本装上Debian后,用apt-getupdate更新软件源时,出现以下warning:GPGerror:http://debian.linux.org.twetchRelease:由于没有公钥,下列签名无法进行验证:NO_PUBKEY07DC563D1F41B907解决方案:首先,确保已经安装了以下程序#apt-getinstallgnupg然后,手动导入所需公钥#gpg

    2022年10月12日
    1
  • VMWare 安装Ubuntu 16.04

    VMWare 安装Ubuntu 16.041、新建虚拟机(1)点击文件–>新建虚拟机(2)选择自定义(高级)–> 下一步(3)选择Workstation12.0 –> 下一步(

    2022年8月2日
    8
  • linux(8)Linux 查看端口占用情况[通俗易懂]

    linux(8)Linux 查看端口占用情况[通俗易懂]前言平常使用linux,我们经常需要查看哪个服务占用了哪个端口,接下来就为大家介绍了2种Linux查看端口占用情况可以使用lsof和netstat命令。1.lsof-i:端口号用

    2022年7月30日
    7
  • Java内存管理-掌握自定义类加载器的实现(七)

    勿在流沙筑高台,出来混迟早要还的。做一个积极的人编码、改bug、提升自己我有一个乐园,面向编程,春暖花开!上一篇分析了ClassLoader的类加载相关的核心源码,也简单介绍了ClassLoader的设计思想,读源码相对来说是比较枯燥的,还是这个是必须要走的过程,学习源码中的一些思想,一些精髓,看一下大神级人物是怎么写出那么牛逼的代码。我们能够从中学到一点点东西,那也是一种进步和成长了…

    2022年2月28日
    31
  • 深入浅出Windows BATCH

    深入浅出Windows BATCH

    2021年12月13日
    51

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号