前端Vue项目部署到服务器过程,以及踩坑记录

news2025/7/17 10:42:02

目录

需求

过程

踩坑

nginx服务器404错误的原因 404  Not Found

nginx服务器500错误的原因 500 Internal Server Error

nginx反向代理


 

需求

前后端完成项目后,需要部署到本地的服务器上。 

第一次部署,以下是从0开始慢慢学着弄的详细过程

过程

1、首先,肯定需要将vue的项目进行打包

npm run build ,打包成功后,会出现dist文件夹

9142892f97ab4db1902157429b40ae50.png

这时候你可以先试试打开dist文件夹下的index.html能不能显示页面。如果可以,直接跳到第二步。如果和我一样打开后没页面,是空白页的。可以试试下面的操作。

在vue.config.js中,添加下面三行代码

115d56b70619432993a49796362ae5da.png

如果这时候还是不行的话,看看你路由是不是用的hash模式

2ddbb5bc52d544d1bb3e8973648106fc.png

这样,应该就可以打开了。

2、将dist文件上传到服务器

因为服务器就在身边,所以没那么麻烦,直接用移动硬盘拷进去了。 如果需要远程上传的话,可以参考用Xftp相关的帖子。

3、使用Nginx配置 

 首先要保证服务器里面安装了nginx。我是Ubuntu下安装,所以直接用apt-get

# 切换至root用户
sudo su root
apt-get install nginx

查看nginx是否安装成功

nginx -v

启动nginx

service nginx start

浏览器输入服务器ip地址就能看到了

f8b6d21ca52943c584d9e987d7b5ebca.png

然后修改nginx

终端下
cd /etc/nginx
sudo vim nginx.conf

 vim是进行文件修改,cat是进行查看  sudo是以管理员身份运行,防止权限问题

ps:修改配置文件时,按一下 i 进入编辑模式,编辑完了 按Esc,然后切换到英文输入法,输入  :wq 保存并退出

然后在http代码块内输入下面的代码

server {
                listen 9000 default_server;
                listen [::]:80 default_server;
                root /home/www/dist;
                index index.html index.htm index.nginx-debian.html;
                server_name _;
                location / {
                        try_files $uri $uri/ /index.html;
                }
        }

其实主要就是添加server,我这里设置的端口号是9000,可以根据自己的需求设置,不用一样,root放的就是我拷到服务器的dist文件存放的目录  (就是这里,遇到了3个坑,后面会讲的,这里还不是最终代码,一步一步来)

可以输入 sudo nginx -t  查看是否修改的正确,输出如下 (其实感觉只能检查出最基本的错误,有一些小问题也没法检查出来)

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

然后就重新加载nginx ,输入:

sudo nginx -s reload


做完上面的步骤以后,我以为就已经解决了,然后打开浏览器,访问 主机号:端口号 然后报错 404

下面就记录一下,跟着上面步骤踩坑的过程。如果有类似的,可以参考。

 

踩坑

nginx服务器404错误的原因 404  Not Found

首先,我们还是要回到nginx.conf配置文件去检查有没有写错ip地址和端口号

然后 location / {} 里面 如果是try_files $uri $uri/ =404;的话,把=404改掉,改成你的html名,大部分应该都是index.html

nginx服务器500错误的原因 500 Internal Server Error

解决完404以后,又访问一下,结果是500的错。这个坑折腾了我很久。

首先,我们遇到500,先去看报的什么错,再具体问题具体分析。

error.log 和 access.log 都在/var/log/nginx 下 (如果没有的话,可以看看你的nginx.conf,里面应该会有写),所以输入

cd /var/log/nginx
cat error.log

然后发现,报错内容是 rewrite or internal redirection cycle while internally redirecting to "/index.html"

如果你也是这个问题,一定去检查你的路径,也就是上文中我们在nginx.conf里面配置的 server中的 root和location / {} 

                root /home/www/dist;
                location / {
                        try_files $uri $uri/ /index.html;
                }

我上文中写的是这样子,其实我在home和www文件夹中还有一个文件夹被我漏掉了,一定要仔细检查,要么就是路径,要么就是斜杠,要么就是文件名或者后缀写错了。

所以,完整路径应该是 /home/abc/www/dist/index.html

所以,应该要改成

                root /home/abc/www/dist;
                location / {
                        try_files $uri $uri/ /index.html;
                }

还看到一个报错,是Permission denied,这个是权限问题,在nginx。conf的第一行应该是又 user root这个权限的,如果被注释了,打开就行。


nginx反向代理

又解决完500后,终于能访问到了。但是还有一个坑,就是后台接口用不了,数据一个都没返回。第一次用,所以不知道还要配置反向代理

server {
                listen 9000 default_server;
                listen [::]:80 default_server;
                root /home/hhu4204/www/dist;
                index index.html index.htm index.nginx-debian.html;
                server_name 121.xxx.xxx.xx;
                location ^~/api/ {
                        proxy_pass http://121.xxx.xxx.xx:8083;
                }
                location / {
                        try_files $uri $uri/ /index.html;
                }
        }

后台接口的主机号和服务器的主机号是一直的,都是121.xxx.xxx.xx, server_name添加了主机号,因为所有接口都有共同前缀 api,所以反向代理,接口是8083

至此,部署全部完毕

如果有帮助,可以收藏点赞一下哟,感谢!!!

 

 

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

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

相关文章

大白话理解-微信小程序获取授权

学习目录 微信小程序前端直接获取授权微信为什么要授权微信怎么授权?微信登录微信小程序前端直接获取授权 微信为什么要授权 微信用户授权,才可以操作微信官方的某些接口。简单来说就是:微信定义了很多接口,然后他们认为有一部分是涉及到用户使用安全的,所以把这一部分划…

Python 爬虫案例

一、用cookie池模拟登录 在网络请求交互中,为了维持用户的登录状态,引入了cookie的概念。当用户第一次登录某个网站时,网站服务器会返回维持登录状态需要用到的信息,这些信息就称为cookie。浏览器会将cookie信息保存在本地计算机…

微信小程序(分包)

文章目录分包概念作用分包后的项目构成分包的加载规则分包的体积限制配置方法小程序打包原则引用原则独立分包分包预下载分包 概念 分包指的是把一个完整的小程序项目,按照需求划分为不同的子包,在构建时打包成不同的分包,用户在使用时按需…

解决报错:Uncaught TypeError: Cannot read properties of undefined (reading ‘install‘)

在做vue2项目时出现如下错误,页面空白且控制台出现如下错误: 报错内容: Uncaught TypeError: Cannot read properties of undefined (reading install) at Vue.use (vue.runtime.esm.js?c320:5709:1) at eval (index.js?5aa4:7:1…

Http请求-hutool工具类的使用

Http请求-hutool工具类的使用 前言 在日常java后端开发的工作中经常会遇到后端发起HTTP请求的情况,这里可以使用一个简单的工具类。 官方网址:Http请求-HttpRequest (hutool.cn) 介绍 本质上,HttpUtil中的get和post工具方法都是HttpRequ…

【小程序从0到1】首页布局案例的实现

欢迎来到我的博客 📔博主是一名大学在读本科生,主要学习方向是前端。 🍭目前已经更新了【Vue】、【React–从基础到实战】、【TypeScript】等等系列专栏 🛠目前正在学习的是🔥React/小程序React/小程序React/小程序&am…

let、const和var的区别(涉及块级作用域)

let 、const和var的区别 let、const、var在js中都是用于声明变量的,在没有进行ES6的学习前,我基本只会使用到var关键字进行变量的声明,但在了解了ES6之后就涉及到了块级作用域以及let,const了。 let与const let是用于替代var来…

Java实现本地缓存、分布式缓存及多级缓存

以下均为自己参考其它博主文章或自己理解整理而成,如有错误之处,欢迎在评论区批评指正! 0. 缓存简介 像MySql等传统的关系型数据库已经不能适用于所有的业务场景,比如电商系统的秒杀场景,APP首页的访问流量高峰场景&a…

火爆全网的人工智能真的有那么强嘛?

📋 个人简介 💖 作者简介:大家好,我是阿牛,全栈领域优质创作者。😜📝 个人主页:馆主阿牛🔥🎉 支持我:点赞👍收藏⭐️留言&#x1f4d…

Element-UI中的表单验证

Element是一套为开发者、设计师和产品经理准备的基于 Vue 2.0 的桌面端组件库。   Element为vue-cli 准备了相应的 Element 插件,开发者可以用它们快速地搭建一个基于 Element 的项目,不仅能够快速体验交互细节,还可以使用前端框架封装的代…

Spring AOP 切面增强

背景背景:我们在开发过程中,经常需要做些周边功能: 性能统计、日志、事物管理。我们需要考虑如何解耦这些周边功能开发和核心业务开发区分开达到提升代码质量目的。定义在AOP思想里面定义周边功能定义是(性能统计、日志、事务管理…

两种方案解决ERROR in Conflict: Multiple assets emit different content to the same filename index.html 的问题

Ⅰ、所遇问题简述: 1、问题描述: 在用 vue-cli 正常来创建新的基于 vue2 框架 的项目,在安装好 node-modules 之后,运行命令 ‘npm run serve’ ,报错情况如下: ERROR in Conflict: Multiple assets emit different…

用Pytorch构建第一个神经网络模型(附案例实战)

本文参加新星计划人工智能(Pytorch)赛道:https://bbs.csdn.net/topics/613989052 目录 一、Pytorch简介 二、实验过程 2.1数据集介绍 2.2加载数据 2.3数据预处理 2.3.1特征转换 2.3.2缺失值处理 2.3.3样本不平衡处理 2.4特征工程 2.4.1划分训练集和测试集 …

Unity 插件篇 ✨ | 受击插件Feel 详细教程,开发游戏时更好的操控 游戏打击感

🎬 博客主页:https://xiaoy.blog.csdn.net 🎥 本文由 呆呆敲代码的小Y 原创,首发于 CSDN🙉 🎄 学习专栏推荐:Unity系统学习专栏 🌲 游戏制作专栏推荐:游戏制作 &…

同态加密详解

什么是同态加密 同态加密(Homomorphic Encryption)是指将原始数据经过同态加密后,对得到的密文进行特定的运算,然后将计算结果再进行同态解密后得到的明文等价于原始明文数据直接进行相同计算所得到的数据结果。 同态加密与一般加…

与C知道的第一次亲密接触

chatG.P.T没向大陆地区开放服务,如要注册除了要邮箱,还要一个已开放服务国家的电话号来接受验证,于是果断放弃注册。还好,CSDN官网提供过网页版的类似聊天机器人,现只在CSDN APP上才有入口。而且现在改名为“C知道”&a…

MQ-2烟雾传感器的使用

一、MQ-2烟雾传感器简介 MQ-2烟雾传感器采用在清洁空气中电导率较低的二氧化锡(SnO2),属于表面离子式N型半导体。当MQ-2烟雾传感器在200到300摄氏度环境时,二氧化锡吸附空气中的氧,形成氧的负离子吸附,使半导体中的电子密度减少&a…

学习操作系统的必备教科书《操作系统:原理与实现》| 文末赠书4本

使用了6年的实时操作系统,是时候梳理一下它的知识点了 摘要: 本文简单介绍了博主学习操作系统的心路历程,同时还给大家总结了一下当下流行的几种实时操作系统,以及在工程中OSAL应该如何设计。希望对大家有所启发和帮助。 文章目录…

技术瓶颈?如何解决MongoDB超大块数据问题?

目录一、MongoDB服务器管理1、添加服务器2、修改分片中的服务器3、删除分片二、均衡器三、修改块的大小四、超大块1、分发超大块2、分发超大块步骤:3、避免出现超大块4、输出内容详解:五、系统分析器六、一些常见的辅助命令大家好,我是哪吒&a…

阿里巴巴高并发架构,到底如何对抗双十一亿级并发流量

前言 我们知道,高并发代表着大流量,高并发系统设计的魅力就在于我们能够凭借自己的聪明才智设计巧妙的方案,从而抵抗巨大流量的冲击,带给用户更好的使用体验。这些方案好似能操纵流量,让流量更加平稳得被系统中的服务…