首页 > 系统相关 >windows部署vue项目:nginx

windows部署vue项目:nginx

时间:2023-03-13 09:35:11浏览次数:128  
标签:index vue 配置文件 项目 windows nginx html

一点废话:vue部署这个事儿原本是打算写上下两篇的,上篇nginx下篇tomcat,很完美。奈何笔者太菜tomcat还没学会,只好附点使用记录,等实操过了再来补全。在此立个flag,期待一下我薛定谔的下篇。

 

言归正传,在开始部署之前,我们先要准备好以下工作:

  • 一个能跑通的Vue项目
  • 一个正常的、安装了nginx的服务器(可以是本地电脑)

如果说服务器有了,nginx没安装?

那没关系,安装起来很简单,可以参考以下步骤:

 

附、安装nginx

(1)官网下载安装包。官网:http://nginx.org/ 

 

(2)找到下载的安装包,解压缩。(nginx不需要运行安装,此时解压的位置就算是nginx安装的位置)

包解压后会得到如下目录。里面比较重要文件夹有:

conf:里面有配置文件nginx.conf

html:放打包好的vue项目

nginx.exe:nginx启动项

另外,多版本的nginx可以共存,只要设置web端口不一样就可以同时使用(而且官方迭代速度真的很快,我电脑里就同时有仨版本。。。)

 

(3)打开配置文件conginx.conf,查看配置项。

如下图,<listen>项为nginx监听的端口,默认是80。如果本地80端口被占用,需要修改成其他端口。

 

 

 ps.想查看端口是否被占用,cmd使用命令:

// 查看所有运行的端口
netstat -ano
// 查看指定端口是否被占用(未占用返回空值,已占用返回占用信息)
netstat -aon|findstr "8081"

 

(4)启动nginx,有两种方法:

①双击nginx.exe,屏幕上会闪过一个黑色弹窗,意为启动完成。

②打开cmd,cd切换到nginx所在文件夹下,输入命令:start nginx,回车。

 

(5)打开浏览器,输入网址:http://localhost:812(假设配置文件中端口修改成812)

浏览器出现以下界面,则启动成功!

(6)关于nginx的其他命令

启动nginx

// 启动服务
start nginx

 停止nginx

// 快速停止nginx
nginx -s stop  
// 完整有序的停止nginx
nginx -s quit

 重启nginx

// 重启nginx,一般用在修改配置文件之后
nginx -s reload

 使用taskkill命令

taskkill /f /t /im nginx.exe

 

ok,nginx安装完毕,接下来就可以开始部署项目了——

 

一、打包并移动vue项目

运行命令:npm run build

到前端项目目录下,找到<dist>文件夹。复制<dist>下的文件,粘贴至nginx根目录下的<html>

 

 

二、修改配置文件nginx.conf

完成上一步后,打开我们的配置文件<nginx.conf>,找到<server>节点,修改参数。

初始的配置参数是这样的——

 大概需要修改的配置如下:

 

<listen>:代理端口(自定义未被占用的端口号)

<server_name>:代理名称(域名、ip),本地就用localhost

<root>:项目存放目录(如果只发布一个项目,就是直接把dist拷贝到html文件夹下这种情况,可以直接用html,否则要指定文件夹)

<try_files>:一个覆盖所有情况的候选资源。如果 URL 匹配不到任何静态资源,返回同一个 index.html 页面

 

三、重启nginx,验证效果

打开cmd,输入重启命令:nginx -s reload (若配置文件没做修改可忽略这一步)

刷新浏览器,查看项目效果!

此处就不放我的项目截图了,放个白板项目凑数——

 

 

 部署成功!

 

参考资料,感谢大佬们:

关于windows下安装nginx部署vue项目讲解

前端Vue项目打包部署实战教程——Centos系统

 

 

四、关于部署后遇到的各种问题

1、页面刷新404问题

方法①:打开vue项目,修改router模式,从history改为hash

打开vue项目router配置文件index.js,history——>hash即可

 缺点就是,url里会多出一个#,有点丑

 

方法②:修改nginx配置项

添加一行:

 

 也可以这样添加:

两种办法,总有一个适合你!

ps:我的配置文件设置的是第二种写法,印象里当初用第一种写法有问题,所以换了第二种。时间久远记不清当时到底是啥个情况了,整理这篇的时候又把两个办法都试了一编,结果都可用,我:地铁老人看手机.jpg

说不定以后还会遇到类似问题呢,等遇到了再补充吧。

附上文字版:

// 策略一
location / {
    root   html;
    index  index.html index.htm;
    try_files  $uri $uri/ /index.html;
}
// 策略二
location / {
    root   html;
    index  index.html index.htm;
    try_files $uri $uri/ @router;
}
location @router {
    rewrite ^.*$ /index.html last;
}

参考,感谢大佬: Nginx部署Vue项目动态路由刷新404

 

2、项目重新发布,线上未更新

原因:浏览器有缓存,所以用户通过浏览器访问到的还是旧版本

方法①:修改vue项目配置

打开vue项目,在vue.config.js里添加版本号配置

vue打包的文件加上版本号

 

方法②:修改nginx配置文件

正则匹配所有以htm或html结尾的文件,不进行缓存

 

 

 

 附上文字版:

location / {
    if ($request_filename ~* .*\.(?:htm|html)$)  
    {
        add_header Cache-Control "no-store, no-cache";
        
    }
    root   html;
    index  index.html index.htm;
    #try_files  $uri $uri/ /index.html;
}

详细的配置项解析请见:【Nginx】nginx配置文件学习

 

 

 

 五、vue部署到tomcat的一些参考

Vue项目打包部署后首页空白的问题

vue项目部署到nginx/tomcat服务器的实现

 

标签:index,vue,配置文件,项目,windows,nginx,html
From: https://www.cnblogs.com/Yan3399/p/17202859.html

相关文章

  • 如何解决nginx:未找到命令问题
    1、打开环境变量所在的文件:vim/etc/profile2、在profile文件末尾,加上如下内容#指向nginx的安装目录sbin"PATH=$PATH:/usr/local/nginx/sbin3、重新加载环境source/......
  • Nginx
    一、Niginx是什么?Nginx是一个高性能的HTTP和反向代理web服务器,同时也提供了IMAP/POP3/SMTP服务。Niginx是一款轻量级的web服务器/反向代理器,Nginx是高性能的HTTP和反......
  • 我的第一个vue页面
    1.使用编辑器打开我们使用vue-cli创建的项目2.创建自己的vue文件  1)在views文件夹中创建vue组件  注意:首字母大写eg.HelloView.vue<!--在页面中显示的内容-->......
  • vue以及vue脚手架的安装
    一、安装nodejs1.下载nodejs安装包,双击安装2.配置需要图片展示的配置addtopath是添加环境变量,全局使用node3.修改安装路径不想安装到c盘,点击change,改变安装路径......
  • webpack、vite、vue-cli、create-vue 的区别
    首先说结论Rollup更适合打包库,webpack更适合打包项目应用,vite基于rollup实现了热更新也适合打包项目。功能工具工具脚手架vue-clicreate-vue构建项目 vit......
  • 建立新的vue项目
    1、win+R打开cmd.    2、开始新建项目 3、显示成功 4、cnpminstall安装模块到node_modules目录 5、跳到项目运行 6、成功,网页输入http://localh......
  • 【django-vue】课程表数据录入 课程分类接口 所有课程接口 课程详情接口 所有章节接口
    目录上节回顾APSchudler双写一致性今日内容1课程表数据录入2课程分类接口2.1路由2.2序列化类2.3视图类3所有课程接口(过滤,排序)3.1表模型3.2序列化类课程动态显示......
  • Windows-ApacheBench的安装和使用
    ApacheBench是什么ApacheBench是一个用来衡量http服务器性能的单线程命令行工具。原本针对Apachehttp服务器,但是也适用于其他http服务器。ab工具与标准Apache源码一起发......
  • Mapping of Windows Handles to Objects(Windows句柄到(C++)对象的映射)
     TN003:MappingofWindowsHandlestoObjects技术文章003:Windows句柄到(C++)对象的映射ThisnotedescribestheMFCroutinesthatsupportmappingWindow......
  • Vue2入门之超详细教程一-环境准备
    1、简介Vue.js(通常被简称为Vue)是一个用于构建用户界面的渐进式JavaScript框架。它被设计为易于逐步采用,因此可以逐渐应用到现有项目中,也可以作为新项目的基础。Vue具......