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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 简单无序列表_无序列表怎么横排

    简单无序列表_无序列表怎么横排实现如下图所示的简单无序列表,并为每个列表项添加超链接。每个列表项的宽度为50px,高度为30px,列表中的文字在水平和垂直方向上均居中显示,超链接初始状态和访问后的状态均为黑色无下划线,鼠标经过和点

    2022年8月2日
    7
  • html中iframe自适应高度_设置iframe高度自适应

    html中iframe自适应高度_设置iframe高度自适应h5iframe自适应高度外部div:divposition:relative;width:100%;padding-top:calc(100%*720/1280);border:2pxblacksolid;内部iframe:position:absolute;width:100%;height:100%;top:0;<divstyle=”position:relative;width:100%;padding-top:cal

    2022年10月12日
    3
  • 单模光纤和多模光纤的波长_用立式光学计测量轴径结论

    单模光纤和多模光纤的波长_用立式光学计测量轴径结论熔接必备住友82C菲尼特熔接教程首先是介绍下多模光纤和单模光纤区别:1、多模光纤是光纤通信最原始的技术,这一技术是人类首次实现通过光纤来进行通信的一项革命性的突破。2、随着光纤通信技术的发展,特别是激光器技术的发展以及人们对长距离、大信息量通信的迫切需求,人们又寻找到了更好的光纤通信技术—-单模光纤通信。3、光纤通信技术发展到今天,多模光纤通信固有的很多局限性愈发显得突出:①多…

    2022年8月30日
    6
  • c#中高效的excel导入sqlserver的方法

    将oledb读取的excel数据快速插入的sqlserver中,很多人通过循环来拼接sql,这样做不但容易出错而且效率低下,最好的办法是使用bcp,也就是System.Data.SqlClient.S

    2021年12月27日
    38
  • 安卓java游戏模拟器_Java手机游戏模拟器

    安卓java游戏模拟器_Java手机游戏模拟器Java手机游戏模拟器主要针对诺基亚S60系列(屏幕176*220)手机以及其他大屏手机(小屏游戏也可运行,但不能全屏显示),是一款非常简单而且实用的JAVA游戏模拟器,可以正常运行绝大部分JAVA手机游戏!软件特色众所周知DM2的JAVA模拟器相当好用。但是,虽然模拟器本身可以放在卡上运行,但是用模拟器安装的JAVA文件仍然被放在手机的ProgramFilesCoreTekDeltaMIDP…

    2022年7月7日
    49
  • linux命令行杀死进程_shell脚本获取进程号并杀死进程

    linux命令行杀死进程_shell脚本获取进程号并杀死进程1.kill作用:根据进程号杀死进程用法:kill[信号代码]进程ID举例:[root@localhost~]#psauxf|grephttpdroot49390.00.05160708pts/3S+13:100:00\_grephttpdroot48300.11.32423210272?Ss13:020:00/usr/sbin/h…

    2022年9月1日
    5

发表回复

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

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