部署vue项目到服务器

环境准备

1、安装Node.js

部署Vue项目到服务器的第一步是安装Node.js,Node.js是一个基于Chrome V8引擎的JavaScript运行时环境,可以让JavaScript在服务器端运行,访问Node.js官网(https://nodejs.org/)下载对应操作系统的安装包,按照提示进行安装即可。

部署vue项目到服务器

2、安装npm

Node.js安装完成后,会自动安装npm(Node.js包管理器),如果没有安装,可以访问npm官网(https://www.npmjs.com/)下载对应操作系统的安装包,按照提示进行安装。

3、创建Vue项目

使用Vue CLI创建一个新的Vue项目,首先确保已经全局安装了Vue CLI,如果没有安装,可以通过以下命令进行安装:

npm install -g @vue/cli

然后使用以下命令创建一个新的Vue项目:

vue create my-project

my-project是你的项目名称,可以根据需要自行修改,创建完成后,进入项目目录:

cd my-project

构建项目

1、安装打包工具

部署vue项目到服务器

为了将Vue项目部署到服务器,需要将其打包成一个静态文件,这里我们使用Webpack作为打包工具,首先安装Webpack及其相关依赖:

npm install --save-dev webpack webpack-cli webpack-dev-server html-webpack-plugin css-loader style-loader file-loader babel-loader @vue/cli-plugin-babel @vue/cli-plugin-eslint @vue/cli-plugin-router@4 @vue/cli-plugin-unit-jest @vue/cli-service@next vue-template-compiler cross-env --save-dev extra-babel-plugin-styles

2、配置Webpack

在项目根目录下创建一个名为vue.config.js的配置文件,并添加以下内容:

module.exports = {
  productionSourceMap: false,
  devServer: {
    open: true,
    host: 'localhost',
    port: 8080, // 可选,设置为0表示不监听端口,使用默认端口8080,也可以自定义端口号,如:port: 9090。
  }
}

3、打包项目

在项目根目录下运行以下命令进行打包:

npm run build

打包完成后,会在项目根目录下生成一个名为dist的文件夹,里面包含了打包后的静态文件。

部署到服务器

1、将打包后的静态文件上传到服务器

部署vue项目到服务器

可以使用FTP工具(如FileZilla)或者SSH工具(如PuTTY)将本地的dist文件夹上传到服务器上,上传完成后,在服务器上找到该文件夹并解压,将文件夹解压到/var/www/html目录下。

2、配置Nginx代理

为了让用户能够访问到我们的Vue应用,需要配置Nginx代理,确保服务器上已经安装了Nginx,然后编辑Nginx配置文件,通常位于/etc/nginx/nginx.conf/etc/nginx/sites-available/default,在server块中添加以下内容:

location /my-project/ {
  root /var/www/html;  这里填写你的项目解压后的路径,/var/www/html/my-project/dist;
  try_files $uri $uri/ @rewrites;  首先尝试直接访问静态资源,如果无法访问则尝试重写URL,这里的@rewrites是一个内部注释,需要取消注释并添加相应的重写规则。
}

接下来,取消Nginx配置文件中的第7行注释,并添加相应的重写规则:

location @rewrites {  这个注释是为了防止语法错误而加上的,实际上不需要保留,但为了保证代码的可读性,可以保留这个注释,后面的代码也是如此,请不要删除这些注释和空格。---------------------------------------------------------------------------------------------------^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-----------------------------------------------------------------------------------------------------------------------}      try to fix the issue below and leave this comment around until it's resolved.        rewrite ^/my-project/(.*)$ /index.html last;          redirect everything else to index.html            break;              If the above rule doesn't work, try this                       if ($request_filename != '/') {                        rewrite ^/my-project(.*)$ $1 last;                        }                       try_files $uri $uri/ @rewrites;              If the above rule still didn't work (e.g. you have custom routes),                then we can try to do a catch-all for all other requests                    (not just the ones listed above).                               This will make sure that no other route is handled by this server block.                  Note that this rule will only work if the server block is the first one  encountered by Nginx when trying to resolve a request.                      So make sure that there are no other server blocks on your configuration!                                                                                                                                                                                                       If the above rules don't work either (i.e. you have other server blocks or custom routes), then we can try another approach:                                                                                                                                              Use a proxy server to forward requests to your backend server (the one hosting your Vue app). This way, you don't need to configure Nginx again for your Vue app.                                                                                                                                                                                 For more information about proxy servers, see https://www.nginx.com/resources/wiki/start/topics/examples/full/howtosetupareverseproxyforthenginxserver                                                                                                                       location ~* \.(jpg|jpeg|gif|png|css|js|ico|xml)$                                                                         {                        proxy_pass http://your_backend_server_ip:your_backend_server_port;                        proxy_set_header Host $host;                        proxy_set_header X-Real-IP $remote_addr;                        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;                        add_header Access-Control-Allow-Origin *;                            add_header Access-Control-Allow-Methods 'GET, POST, OPTIONS';                            add_header Access-Control-Allow-Headers 'DNT,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Range';                            add_header Access-Control-Expose-Headers 'Content-Length,Content-Range';                        }                                                                                                                                                                                                                                         If you want to use a reverse proxy with SSL support (HTTPS), you can use the following code snippet instead:                                                                                                                                                                                                                              location ~* \.(jpg|jpeg|gif|png|css|js|ico|xml)$                                                                         {                        proxy_pass https://your_backend_server_ip:your_backend_server_port;                        proxy_set_header Host $host;                        proxy_set_header X-Real-IP $remote_addr;                        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;                        add_header Access-Control-Allow-Origin *;                            add_header Access-Control-Allow-Methods 'GET, POST, OPTIONS';                            add_header Access-Control-Allow-Headers 'DNT,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Range';                            add_header Access-Control-Expose-Headers 'Content-Length,Content-Range';                        }                                                                                                                                                                                                                                         If you want to use a reverse proxy with SSL support (HTTPS), you can use the following code snippet instead:                                                                                                                                                                                                                              location ~* \.(jpg|jpeg|gif|png|css|js|ico|xml)$                                                                         {                        proxy_pass https://your_backend_server_ip:your_backend_server_port;                        proxy_set_header Host $host;                        proxy_set_header X-Real-IP $remote_addr;                        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;                        add_header Access-Control-Allow-Origin *;                            add_header Access-Control-Allow-Methods 'GET, POST, OPTIONS';                            add_header Access-Control-Allow-Headers 'DNT,User-Agent,X-Requested

原创文章,作者:K-seo,如若转载,请注明出处:https://www.kdun.cn/ask/264965.html

Like (0)
Donate 微信扫一扫 微信扫一扫
K-seo的头像K-seoSEO优化员
Previous 2024-01-27 03:10
Next 2024-01-27 03:12

相关推荐

  • vue入门之main.js介绍及配置

    Vue.js是一个用于构建用户界面的渐进式JavaScript框架,在开始使用Vue.js之前,我们需要先了解并配置好项目的入口文件——main.js,本文将详细介绍main.js的作用以及如何进行配置。main.js的作用main.js是Vue.js项目的核心文件,它负责创建和挂载根实例,导入和使用Vue插件,以及导出一个Vue对象……

    2024-01-22
    087
  • vue做多页面

    Vue.js是一个用于构建用户界面的渐进式JavaScript框架,它既可以用于单页面应用(SPA),也可以用于多页面应用(MPA),Vue多页面和单页面的区别是什么呢?本文将详细介绍这两种应用模式的特点和区别。1、单页面应用(SPA)SPA是一种只加载一次HTML、CSS和JavaScript的应用,在用户与应用交互过程中动态更新D……

    2024-01-06
    0114
  • vue如何引入图片

    在Vue项目中引入Zepto,通常意味着希望使用这个轻量级的JavaScript库来简化DOM操作和事件处理,Zepto是一个针对现代浏览器的小型JavaScript库,它提供了与jQuery类似的API,但体积更小,加载速度更快,以下是如何在Vue项目中引入和使用Zepto的详细步骤。准备工作在开始之前,请确保你的Vue项目已经创建……

    2024-02-13
    0180
  • vue如何引入element-ui

    Vue 是一个流行的前端框架,而 ElementUI 是一套为开发者、设计师和产品经理准备的基于 Vue 2.0 的桌面端组件库,它提供了丰富的组件,可以帮助开发者快速构建出功能完善的 Web 应用,本文将详细介绍如何在 Vue 项目中引入并使用 ElementUI。1. 安装 ElementUI我们需要在项目中安装 ElementU……

    2024-03-04
    0184
  • vue的cdn是干嘛的

    在现代Web开发中,为了提高网站的加载速度和性能,开发者们通常会使用各种技术手段,内容分发网络(Content Delivery Network,简称CDN)是一种非常有效的方法,本文将深入探讨Vue.js CDN的概念、作用以及使用方法,帮助大家更好地理解和利用这一关键工具。一、Vue.js CDN简介Vue.js是一个轻量级的Ja……

    2023-11-07
    0268
  • vue项目部署到nginx服务器没生效

    Vue项目部署到Nginx服务器在开发完一个Vue项目后,我们通常需要将其部署到服务器上,以便其他人可以通过互联网访问,Nginx是一个非常流行的Web服务器,它可以处理大量的并发请求,因此非常适合作为Vue项目的部署环境,本文将详细介绍如何将Vue项目部署到Nginx服务器上。1、准备工作在开始部署之前,我们需要确保已经安装了Nod……

    2024-01-21
    0148

发表回复

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

免备案 高防CDN 无视CC/DDOS攻击 限时秒杀,10元即可体验  (专业解决各类攻击)>>点击进入