Vue3+Vite3多项目Nginx部署

一、概述

1.1. 问题描述

将多个 Vue3 + Vite3 构建的项目部署到服务器上,使用 Nginx 进行反向代理,实现同一域名和端口号,且不同路径前缀访问不同项目。

1.2. 准备工作

本文将假设有以下2个项目需要进行部署:

项目名访问路径
project/*
project-admin/admin/*

二、Vue 项目的构建

2.1. 多环境的配置

VITE_BASE_PATH 参数为项目静态资源的访问路径。

  • project/.env.production
NODE_ENV = production

VITE_BASE_PATH = /
  • project-admin/.env.production
NODE_ENV = production

VITE_BASE_PATH = /admin/

2.2. vite.config.ts 文件修改

添加 base 属性,设置静态资源的基础路径。

官方文档详细介绍:https://cn.vitejs.dev/config/shared-options.html#base

import { ConfigEnv, defineConfig, loadEnv } from 'vite'

export default ({ command, mode }: ConfigEnv) =>{
  const env = loadEnv(mode, process.cwd());

  return defineConfig({
    base: env.VITE_BASE_PATH
  })
}

2.3. src/router/index.ts 文件修改

const router: Router = createRouter({
  history: createWebHistory(import.meta.env.VITE_BASE_PATH as string),
  routes
});

2.4. 添加 base 标签

设置 a、img、link 等标签链接的基础路径。

Vite 本身没有像 vue-cli 的模板语法功能,可以借助 vite 的 html 替换插件实现动态设置 base。
参考: vite-plugin-html 插件

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <base href="/admin/">
    <link rel="icon" href="/favicon.ico" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Admin</title>
  </head>
  <body>
    <div id="app"></div>
    <script type="module" src="/src/main.ts"></script>
  </body>
</html>

之后在使用 a 标签时,如 <a href="test">test</a> (base标签的url末尾有“/”,则a标签的url第一个字符不能是“/”),将会跳转到 /admin/test

2.5. 打包生成dist文件夹

我的 vue 项目的 package.json 文件中的 scripts 如下:

{
  "scripts": {
    "dev": "cross-env vite --mode development",
    "product": "cross-env vite --mode production",
    "build": "vue-tsc --noEmit && vite build",
    "build:dev": "cross-env vite build --mode development",
    "build:product": "cross-env vite build --mode production",
    "preview": "vite preview"
  }
}

通过调用 yarn build:product 命令执行打包指令生成dist文件夹。

2.5. 上传项目文件

使用 Xftp 将 project 项目 dist 文件夹中所有文件上传到 /home/www 目录中,将 project-admin 项目 dist 文件夹中所有文件上传到 /home/admin 目录中。

三、Nginx 配置

server {
    listen       80;
    server_name  xxx.xxx.xxx.xxx; # 服务器IP地址

    location / {
        alias   /home/www/;
        index  index.html index.htm;
        try_files $uri $uri/ /index.html;
    }

    location /admin {
        alias   /home/admin/;
        index  index.html index.htm;
        try_files $uri $uri/ /admin/index.html;
    }
}
# 重新加载配置
$ nginx -s reload

最后访问 http://xxx.xxx.xxx.xxx 或 http://xxx.xxx.xxx.xxx/admin 即可访问不同项目。

  • 2
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Vue3是一种流行的JavaScript框架,它提供了一种简洁、高效的方式来构建用户界面。TypeScript是一种静态类型检查的JavaScript超集,可以增强代码的可读性和可维护性。Vite是一个基于ES模块的构建工具,用于快速构建现代化的Web应用程序。 要将Vue3 + TypeScript + Vite项目部署Nginx服务器上,可以按照以下步骤进行操作: 1. 构建项目:在本地开发环境中,使用Vite构建工具将Vue3 + TypeScript项目打包成静态文件。在项目根目录下运行以下命令: ``` npm run build ``` 这将生成一个`dist`目录,其中包含了构建后的静态文件。 2. 配置Nginx:在Nginx服务器上创建一个新的站点配置文件,例如`myapp.conf`。可以使用以下命令在`/etc/nginx/conf.d/`目录下创建该文件: ``` sudo nano /etc/nginx/conf.d/myapp.conf ``` 在配置文件中添加以下内容: ``` server { listen 80; server_name yourdomain.com; # 替换为你的域名 root /path/to/your/project/dist; # 替换为你的项目dist目录的路径 index index.html; location / { try_files $uri $uri/ /index.html; } } ``` 确保将`yourdomain.com`替换为你的域名,并将`/path/to/your/project/dist`替换为你的项目`dist`目录的实际路径。 3. 重启Nginx:保存并关闭配置文件后,使用以下命令重启Nginx服务器以使配置生效: ``` sudo service nginx restart ``` 现在,你的Vue3 + TypeScript + Vite项目应该已经成功部署Nginx服务器上了。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值