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

 更新时间:2023年05月08日 15:26:06   作者:Eric加油学!  
使用Vue做前后端分离项目时,通常前端是单独部署,用户访问的也是前端项目地址,因此前端开发人员很有必要熟悉一下项目部署的流程,下面这篇文章主要给大家介绍了关于前端Vue项目部署到服务器的全过程以及踩坑记录的相关资料,需要的朋友可以参考下

需求

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

第一次部署,以下是从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

至此,部署全部完毕

总结

到此这篇关于前端Vue项目部署到服务器的全过程以及踩坑记录的文章就介绍到这了,更多相关前端Vue项目部署服务器内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 在vue2项目中使用dart-sass的问题及解决方法

    在vue2项目中使用dart-sass的问题及解决方法

    在Vue2项目中,使用dart-sass替代node-sass可以解决安装困难和环境兼容问题,VueCLI3+用户可直接使用,而VueCLI2用户需升级VueCLI和项目,具体方法包括修改package.json依赖并使用.scss文件编写样式,此更改有助于提升项目的开发效率和跨平台兼容性
    2024-09-09
  • Vue3中如何使用异步请求示例详解

    Vue3中如何使用异步请求示例详解

    Vue3增加了很多让人眼前一亮的特征,suspense 组件就是其中之一,对处理异步请求数据非常实用,下面这篇文章主要给大家介绍了关于Vue3中如何使用异步请求的相关资料,需要的朋友可以参考下
    2022-06-06
  • 深入了解vue中一键复制功能的实现

    深入了解vue中一键复制功能的实现

    在现代的Web应用中,用户体验至关重要,而提供简单易用的复制功能是改善用户体验的一项关键功能,本文将为大家详细介绍Vue实现一键复制功能的具体方法,需要的可以参考下
    2023-11-11
  • 基于Vue过渡状态实例讲解

    基于Vue过渡状态实例讲解

    下面小编就为大家带来一篇基于Vue过渡状态实例讲解。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-09-09
  • vue组件间通信子与父详解(二)

    vue组件间通信子与父详解(二)

    这篇文章主要为大家详细介绍了vue组件间通信子与父的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-11-11
  • 使用vue-markdown实现markdown文件预览

    使用vue-markdown实现markdown文件预览

    Vue-Markdown 是一个轻量级且高效的库,用于在Vue.js应用程序中渲染Markdown文本,下面我们来看看如何使用vue-markdown实现markdown文件预览效果吧
    2025-04-04
  • vue使用$emit实现同步调用

    vue使用$emit实现同步调用

    这篇文章主要介绍了vue使用$emit实现同步调用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-04-04
  • vue中的provide/inject的学习使用

    vue中的provide/inject的学习使用

    本篇文章主要介绍了vue中的provide/inject的学习使用,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-05-05
  • React和Vue实现路由懒加载的示例代码

    React和Vue实现路由懒加载的示例代码

    路由懒加载是一项关键技术,它可以帮助我们提高Web应用的加载速度,本文主要介绍了React和Vue实现路由懒加载的示例代码,具有一定的参考价值,感兴趣的可以了解一下
    2024-01-01
  • 基于Vue实现支持按周切换的日历

    基于Vue实现支持按周切换的日历

    这篇文章主要为大家详细介绍了基于Vue实现支持按周切换的日历,根据实际开发情况按每年、每月、每周进行切换,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-08-08

最新评论