Vue项目打包部署

news2025/1/22 12:34:19
	前几天看[小猪课堂发布的nginx部署](https://zhuanlan.zhihu.com/p/431796992),跟着做了一遍,由于本人是第一次尝试,遇见了很多问题。经过查阅和搜索,终于解决掉了。下面给大家介绍一下我的流程和遇见的问题,我们可以多讨论。
	项目打包部署

1.准备工作
完整的Vue项目
一台服务器
准备工作很简单,只需要一个项目和一台服务器即可,项目甚至可以只是一个html文件。
2.初始化Vue项目
使用vue-cli脚手架搭建一个最简单的项目,vue create 项目名,之后跟着项目使用npm serve将项目跑起来,
在这里插入图片描述在这里插入图片描述

这样我们的前端项目就跑起来了
3.服务器安装Nginx
Nginx是一款轻量级的Web服务器、反向代理服务器,由于它的内存占用少,启动极快,高并发能力强,在互联网项目中广泛应用,我们的网站部署到Nginx服务器上。当然也可以选择其它web服务器,这里我们就使用主流的Nginx。
我这里的服务器是Centos系统,故已Centos为例。
服务端的搭建
下载虚拟机软件,搭建服务端首先需要合适的镜像,下载镜像可以去阿里https://developer.aliyun.com/mirror/?spm=a2c6h.25603864.0.0.a21c66ed4X1vdL下载
在这里插入图片描述

下载时,建议不要使用min版本,因为过于精简所以导致很多指令都无法使用,大佬随意。
下载好之后安装镜像,一路默认即可。
如果安装过程中遇见
在这里插入图片描述
在这里插入图片描述

选择稍后安装操作系统.系统类型选择linux,一路默认修改硬件设置,在虚拟机设置中修改
在这里插入图片描述

之后正常启动项目即可,最后来到服务器上准备安装nginx。
服务器安装nginx
在服务端输入yum install -y nginx 指令安装nginx,
如果提示找不到nginx那就说明我们需要换源,换源命令
rpm -uvh http://nginx.org/packages/centos/7/noarch/rpms/nginx-release-centos-7-0.el7.ngx.noarch.rpm
换源成功后重新安装nginx即可。使用指令whereis nginx 来判断是否安装成功nginx。

4.启动nginx
在服务端输入nginx之后回车即可。
在这里插入图片描述

输入指令netstat -ntlp查看端口占用情况,可以看到现在nginx在占用80端口。
在这里插入图片描述

此时我们打开浏览器,输入虚拟机ip回车即可看到下图,即nginx启动成功。
在这里插入图片描述

如果启动了nginx,但是输入ip却看不到网页,原因可能是80端口未开放,解决方法见
CentOS安装Nginx无法访问80端口的解决方法。
如需停止nginx 输入指令nginx -s stop.

5.修改nginx配置文件。
通过指令whereis nginx查询nginx的安装目录,一般来说/etc/nginx则是nginx配置文件存放位置。cd /etc/nginx进入改文件夹.修改nginx.conf文件,找到对象server中的listen 80,将80端口修改为9000端口(如果9000端口未开放记得先开放端口)。将root对应的路径修改为你即将上传的包所存放的路径,建议修改为/home/www/dist。之后推出保存。修改nginx.conf使用的是vim指令 。
在这里插入图片描述

但是我的文件有点特殊,默认配置文件目录为/etc/nginx/conf.d 文件夹下的default.conf
修改完毕后输入指令nginx -s reload重启即可。

6.新建项目文件夹
建议在home文件夹中新建www文件夹,具体操作是指令cd /home进入home文件夹,指令mkdir www新建www文件夹,dist文件夹不需要新建,因为我们后续项目打包后的文件就是一个dist文件夹。

7.打包部署vue项目
回到我们的vue项目中,使用npm run build 将项目打包。打包之后项目中会生成一个dist文件夹。然后上传到服务器。
在这里插入图片描述

上传方式有两种。
最简单的就是利用ftp工具拖拽上传。例如finalshall
在这里插入图片描述

第二种使用指令,在你的项目中打开cmd窗口,输入指令
scp -r dist/ root@139.9.219.136:/home/www蓝色部分为ip,记得替换自己ip即可。
(不知道ip在服务端使用指令ifconfig即可观察到ip)
在这里插入图片描述

此时我们打开浏览器输入我们的ip:9000即可观察到我们的项目页面了

8.解决刷新路由404问题
当我们切换路由后,然后在刷新页面,会出现404的情况。这是因为我们vue项目采用了history的路由方式,至于原因主要是vue是单页面应用,细节部分大家可自行下来了解。
解决问题的办法:
(1)将路由模式改为hash
(2)修改nginx配置:
location / {
try_files $uri $uri/ /index.html; —解决页面刷新404问题
} 
修改之后重启nginx,这个时候刷新浏览器则不会出现404了。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/408443.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Vue3:探讨一下mixin

一、Vue2中的mixin 1、定义要混入的数据对象 // 定义一个 mixin 对象 export const myMixin {created() {this.hello()},methods: {hello() {console.log(hello from mixin!)}} } 2、在需要这些东西的地方去通过mixins获得mixin对象 <template><div><h1>…

浅识WebGL和Three.js

WebGL 想必各位看官大大都了解过&#xff0c;进行3D图形渲染&#xff0c;主要依赖显卡&#xff08;GPU&#xff09;为我们提供强大的运算支持。GPU也像不同CPU架构具备不同的指令集一样&#xff0c;不同的显卡厂商也为不同的GPU型号提供了不同的底层指令逻辑&#xff0c;所支持…

Axios发送请求

--- axios是什么: Axios&#xff0c;是一个基于promise的网络请求库&#xff0c;作用于node.js和浏览器中。 一、axios的特点&#xff1a; 1.在浏览器中发送XMLHttpRequest请求。 2.在node.js中可以发送请求 3.支持PromiseAPI 4.拦截请求和响应数据 二、axios的请求方式…

thinkphp5.0.24反序列化漏洞分析

thinkphp5.0.24反序列化漏洞分析 文章目录thinkphp5.0.24反序列化漏洞分析具体分析反序列化起点toArraygetRelationData分析$modelRelation生成进入__call前的两个if__call虚假的写文件setTagItem绕过exitexppop链图解决windows下的文件名问题参考链接thinkphp5框架&#xff1a…

webstorm使用指南

前言 前端开发比较推荐的两款编辑器JetBrains的WebStorm和微软的VsCode&#xff0c;本人之前开发一直用的VsCode&#xff0c;日常开发其实基本上就满足了&#xff0c;但有几个地方对于我来说一直都是痛点&#xff0c;体验感非常不好。 首先是Git分支管理和提交&#xff0c;虽然…

漂亮的弹出框,javascript库bootbox介绍

传统的javascript的警告框、确认框、提示框&#xff1a; <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>弹出框</title> </head> <body> <button onclick"f1()">…

Javaweb实验:静态网页制作

Javaweb实验&#xff1a; 1.静态网页制作 目录 Javaweb实验&#xff1a; 前言 一、实验目的 二、实验原理 三、实验内容 四、实验步骤 五、实验结果 六、实验内容 七、实验步骤 八、实验结果 九、思考 1、frameset和frame标签的作用是什么&#xff1f; 2、个人主…

不用AI也能实现的文字自动播报

背景如果注意观察的话&#xff0c;在现实生活中&#xff0c;你一定会遇到下列几个场景&#xff0c;一起来看看有没有熟悉的感觉。场景一、某周某&#xff0c;小明和朋友一起去某美食街进行聚餐&#xff0c;到了美食街找到一家推荐度非常高的美食店。由于推荐度非常高&#xff0…

【JavaScript 进阶教程】对象新增方法 defineProperty 与 keys 的说明与使用

文章导读&#xff1a; 这篇文章给大家讲解在 ES5 中对象新增的两个常用方法&#xff1a;defineProperty()&#xff0c;keys()&#xff0c; 这两个方法可以让我们更方便的操作对象&#xff0c;获取对象属性&#xff0c;赋值修改等等操作&#xff0c;最重要的是&#xff0c;这些方…

JS的同步与异步

js的同步与异步 ​ 众所周知&#xff0c;js是一个单线程的语言&#xff0c;学过java、c之类的都知道&#xff0c;其他语言有个叫类继承的东西&#xff0c;就相当于开辟另个一个流水线&#xff0c;是多线程 ​ 而javascript就像一条流水线&#xff0c;它无法开辟别的流水线&am…

猿创征文|【React 三】组件实例的三大属性(state、props、refs)

目录 一、 State 1.概念 2.State的简单用法3. JS绑定事件 4.react 绑定事件 5.react this指向问题 6.修改state值 7.代码简写 二、props 1.概念 2.传参的基础方法、运算符传参 三、refs 定义 字符串形式的ref、回调函数下ref、createRef 创建ref容器 一、 State 1…

【微信小程序】-- 分包(四十四)

&#x1f48c; 所属专栏&#xff1a;【微信小程序开发教程】 &#x1f600; 作  者&#xff1a;我是夜阑的狗&#x1f436; &#x1f680; 个人简介&#xff1a;一个正在努力学技术的CV工程师&#xff0c;专注基础和实战分享 &#xff0c;欢迎咨询&#xff01; &…

Vue3 + PDF.js 实现 PDF 预览

文章目录1 前言2 PDF 预览测试2.1 下载 PDF.js2.2 window.open 直接打开2.3 弹框形式打开3 修改配置项3.1 修改主题色为暗色系3.2 修改默认语言为简体中文3.3 打开 PDF 后默认跳转到某一页4 移除部分按钮4.1 简单按钮移除4.2 复杂按钮移除5 错误处理5.1 跨域报错5.2 默认语言为…

架构图以及vue的简介

架构图 前后端分离总架构图 ​ 前端架构设计图 ​ MVVM 架构模式 MVVM 的简介 MVVM 由 Model,View,ViewModel 三部分构成&#xff0c;Model 层代表数据模型&#xff0c;也可以在Model中定义数据修改和操作的业务逻辑&#xff1b;View 代表UI 组件&#xff0c;它负责将数据模…

养老院管理系统(Java+Web+MySQL)

目 录 摘 要 1 Abstract 2 第一章 绪论 6 一、 选题的依据及意义 6 二、 国内外现状研究 6 三、 研究目的 7 四、 本文研究的主要内容 7 五、 本文章节安排 7 六、 本章小结 8 第二章 设计技术与开发环境 9 一、 相关技术介绍 9 &#xff08;一&#xff09; JSP简介 9 &#xf…

在vue中使用echarts

欢迎大家加入我的社区&#xff1a;http://t.csdn.cn/Q52km 社区中不定时发红包 文章目录1、安装2、在vue中引入&#xff08;全局引入&#xff09;3、在vue中的使用4、模板代码放在哪个位置5、完整的一个vue页面实例&#xff1a;6、实现效果7、可能遇到的问题&#xff0c;下载不…

vue3 解决各场景 loading过度 ,避免白屏尴尬!

Ⅰ、前言 当我们每次打卡页面&#xff0c;切换路由&#xff0c;甚至于异步组件&#xff0c;都会有一个等待的时间 &#xff1b;为了不白屏&#xff0c;提高用户体验&#xff0c;添加一个 loading 过度动画是 非常 常见的 &#xff1b;那么这几种场景我们应该把 loading 加在哪…

Vue3 - $attrs 的几种用法(1个或多个根元素、Options API 和 Composition API)

theme: smartblue 持续创作&#xff0c;加速成长&#xff01;这是我参与「掘金日新计划 6 月更文挑战」的第6天&#xff0c;点击查看活动详情 本文简介 点赞 关注 收藏 学会了 使用 Vue 开发时&#xff0c;肯定会接触到 组件 的概念&#xff0c;无可避免的也会接触到 组件通…

Vue:Vue事件整理

文章目录前言一、Vue基本事件this对象传递参数总结二、事件修饰符三、键盘事件keyup/keydown四、ElementUi前言 本篇复习Vue中的事件处理&#xff0c;包含事件基本响应、事件修饰符、键盘事件等内容 一、Vue基本事件 Vue中&#xff0c;设置点击、鼠标滚动和键盘输入等相应事…

vue3【列表渲染】v-for 详细介绍(vue中的“循环”)

vue 常用语法——列表渲染 v-for文章简介v-for 主要内容&#x1f53a;item in itemsv-for 变量的作用域v-for 与对象在 v-for 里使用范围值&#x1f53a;<template> 上的 v-forv-for 与 v-if&#x1f53a;通过 key 管理状态&#x1f53a;组件上使用 v-forsummary下期预告…