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


相关推荐

  • SynchronousQueue详解「建议收藏」

    SynchronousQueue详解「建议收藏」SynchronousQueue是BlockingQueue的一种,所以SynchronousQueue是线程安全的。SynchronousQueue和其他的BlockingQueue不同的是SynchronousQueue的capacity是0。即SynchronousQueue不存储任何元素。也就是说SynchronousQueue的每一次insert操作,必须等待其他线性的remove操作。而每一个remove操作也必须等待其他线程的insert操作。这种特性可以让我们想起了Exchanger

    2022年6月22日
    32
  • python是什么?python能做什么?

    python是什么?python能做什么?人生苦短,我用python。python是什么?Python是一个高层次的结合了解释性、编译性、互动性和面向对象的脚本语言。python语言有以下特点:易于学习。Python有相对较少的关键字

    2022年7月6日
    23
  • 利用MATLAB 2016a进行BP神经网络的预测(含有神经网络工具箱)「建议收藏」

    利用MATLAB 2016a进行BP神经网络的预测(含有神经网络工具箱)「建议收藏」利用MATLAB2016a进行BP神经网络的预测(含有神经网络工具箱)   最近一段时间在研究如何利用预测其销量个数,在网上搜索了一下,发现了很多模型来预测,比如利用回归模型、时间序列模型,GM(1,1)模型,可是自己在结合实际的工作内容,发现这几种模型预测的精度不是很高,于是再在网上进行搜索,发现神经网络模型可以来预测,并且有很多是结合时间序列或者SVM(支持向量机)等组合模型来

    2022年6月20日
    60
  • uwsgi模式_uwsgi配置详解[通俗易懂]

    uwsgi模式_uwsgi配置详解[通俗易懂]#先激活virtualenv#启动:uwsgiuwsgi.ini#停止:uwsgi–stopuwsgi.pid[uwsgi]#对外提供http服务的端口http=:8000#thelocalunixsocketfilethancommnuincatetoNginx用于和nginx进行数据交互的端口socket=127.0.0.1:8001#the…

    2022年9月11日
    1
  • DOS命令:copy

    DOS命令:copycopy命令,将至少一个文件复制到另一个位置copy/?—查看官方帮助文档对COPYT的解释说明COPY[/D[1]][/V][/N][/Y|/-Y][/Z][/A|/B]source[/A|/B][+source[/A|/B][+…]][destination[/A|/B]]source指定要复制的文件。/A表示一个ASCII文本文件。/B表示一个二进位文件。/D允许解密要创建的目标文件dest…

    2022年7月18日
    14
  • Iterative Soft Thresholding和Iterative Shrinkage/Thresholding的区别「建议收藏」

    Iterative Soft Thresholding和Iterative Shrinkage/Thresholding的区别「建议收藏」版权声明:本文为博主原创文章,遵循CC4.0by-sa版权协议,转载请附上原文出处链接和本声明。…

    2022年6月6日
    24

发表回复

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

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