RuoYi-Vue3项目部署与运维
RuoYi-Vue3项目部署与运维【免费下载链接】RuoYi-Vue3???? (RuoYi)官方仓库 基于SpringBoot,Spring Security,JWT,Vue3 & Vite、Element Plus 的前后端分离权限管理系统...
RuoYi-Vue3项目部署与运维
本文详细介绍了RuoYi-Vue3项目的环境配置、Docker部署、CI/CD集成、监控日志管理以及性能调优与安全加固等内容。从开发与生产环境的不同配置,到通过Docker实现容器化部署,再到结合GitHub Actions或Jenkins实现自动化CI/CD流程,全面覆盖了项目部署与运维的各个环节。此外,还深入讲解了系统的监控日志功能和性能安全优化策略,为项目的高效稳定运行提供了完整解决方案。
开发环境与生产环境配置
在RuoYi-Vue3项目中,开发环境与生产环境的配置是通过Vite的环境变量和配置文件实现的。以下将详细介绍如何配置和管理这两种环境,以确保项目在不同阶段的高效运行。
环境变量配置
RuoYi-Vue3使用Vite作为构建工具,环境变量通过.env文件管理。项目根目录下通常包含以下文件:
.env:默认环境变量文件.env.development:开发环境变量文件.env.production:生产环境变量文件
示例配置
# .env.development
VITE_APP_TITLE = RuoYi-Vue3 (开发环境)
VITE_APP_BASE_API = /dev-api
# .env.production
VITE_APP_TITLE = RuoYi-Vue3
VITE_APP_BASE_API = /prod-api
关键变量说明
| 变量名 | 说明 | 开发环境值 | 生产环境值 |
|---|---|---|---|
VITE_APP_TITLE |
应用标题 | RuoYi-Vue3 (开发环境) | RuoYi-Vue3 |
VITE_APP_BASE_API |
API基础路径 | /dev-api | /prod-api |
代码中的使用
在代码中,可以通过import.meta.env访问这些环境变量。例如:
// 获取应用标题
const title = import.meta.env.VITE_APP_TITLE;
// 获取API基础路径
const baseUrl = import.meta.env.VITE_APP_BASE_API;
构建命令
Vite提供了不同的构建命令来区分环境:
# 开发环境启动
yarn dev
# 生产环境构建
yarn build:prod
# 测试环境构建
yarn build:stage
动态配置示例
以下是一个动态配置API请求的示例:
// src/utils/request.js
import axios from "axios";
const service = axios.create({
baseURL: import.meta.env.VITE_APP_BASE_API,
timeout: 5000,
});
export default service;
流程图:环境切换流程
注意事项
- 敏感信息:避免在
.env文件中存储敏感信息(如数据库密码),建议使用服务器环境变量。 - 变量命名:环境变量必须以
VITE_开头,否则Vite不会将其暴露给客户端代码。 - 缓存问题:修改环境变量后,可能需要重启开发服务器或重新构建。
通过以上配置,可以轻松管理RuoYi-Vue3项目的开发与生产环境,确保代码在不同环境中的一致性和可靠性。
Docker部署与CI/CD集成
RuoYi-Vue3作为一个现代化的前后端分离项目,支持通过Docker容器化部署,并可以轻松集成到CI/CD流程中,实现自动化构建、测试和部署。以下将详细介绍如何通过Docker部署RuoYi-Vue3,并结合CI/CD工具(如GitHub Actions或Jenkins)实现持续集成与持续交付。
Docker部署
1. 构建Docker镜像
首先,确保项目根目录下已准备好Dockerfile文件。以下是一个典型的Dockerfile示例:
# 使用官方Node镜像作为构建环境
FROM node:16-alpine as build-stage
WORKDIR /app
COPY package*.json ./
RUN npm install
COPY . .
RUN npm run build
# 使用Nginx作为运行时环境
FROM nginx:stable-alpine as production-stage
COPY --from=build-stage /app/dist /usr/share/nginx/html
EXPOSE 80
CMD ["nginx", "-g", "daemon off;"]
2. 构建并运行容器
执行以下命令构建Docker镜像并运行容器:
# 构建镜像
docker build -t ruoyi-vue3 .
# 运行容器
docker run -d -p 8080:80 --name ruoyi-vue3-container ruoyi-vue3
3. 验证部署
访问http://localhost:8080,确认应用正常运行。
CI/CD集成
1. GitHub Actions
以下是一个简单的GitHub Actions工作流示例,用于自动化构建和部署:
name: CI/CD Pipeline
on:
push:
branches: [ main ]
jobs:
build-and-deploy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Build Docker image
run: docker build -t ruoyi-vue3 .
- name: Log in to container registry
run: echo "${{ secrets.REGISTRY_TOKEN }}" | docker login -u ${{ secrets.REGISTRY_USERNAME }} --password-stdin
- name: Push Docker image
run: |
docker tag ruoyi-vue3 ${{ secrets.REGISTRY_USERNAME }}/ruoyi-vue3:latest
docker push ${{ secrets.REGISTRY_USERNAME }}/ruoyi-vue3:latest
- name: Deploy to server
run: |
ssh ${{ secrets.SSH_USER }}@${{ secrets.SSH_HOST }} "docker pull ${{ secrets.REGISTRY_USERNAME }}/ruoyi-vue3:latest && docker stop ruoyi-vue3-container || true && docker rm ruoyi-vue3-container || true && docker run -d -p 8080:80 --name ruoyi-vue3-container ${{ secrets.REGISTRY_USERNAME }}/ruoyi-vue3:latest"
2. Jenkins
若使用Jenkins,可以配置以下步骤:
- 拉取代码:从Git仓库拉取最新代码。
- 构建镜像:执行
docker build命令。 - 推送镜像:将镜像推送到容器仓库。
- 部署到服务器:通过SSH连接到目标服务器,拉取镜像并运行容器。
流程图示例
以下是一个简化的CI/CD流程示意图:
表格:CI/CD工具对比
| 工具 | 优点 | 缺点 |
|---|---|---|
| GitHub Actions | 与GitHub无缝集成,配置简单 | 仅适用于GitHub项目 |
| Jenkins | 支持多种插件,高度可定制 | 配置复杂,需额外维护服务器 |
通过以上步骤,您可以轻松实现RuoYi-Vue3的Docker化部署和CI/CD集成,提升开发和运维效率。
监控与日志管理
在RuoYi-Vue3项目中,监控与日志管理是系统运维的重要组成部分,涵盖了登录日志、操作日志、定时任务日志等多个模块。通过这些功能,管理员可以实时监控系统运行状态,及时发现并解决问题。以下将详细介绍这些功能的实现与使用方法。
1. 登录日志管理
登录日志模块记录了用户的登录行为,包括登录时间、登录地点、登录IP等信息。通过分析这些数据,可以识别异常登录行为,提升系统安全性。
核心功能
- 查看登录记录:支持按时间、IP等条件筛选日志。
- 批量删除:可清理过期或无用的日志记录。
- 解锁用户:对于因多次失败登录被锁定的用户,管理员可手动解锁。
代码示例
<el-table-column label="登录地点" align="center" prop="loginLocation" :show-overflow-tooltip="true" />
<el-table-column label="登录时间" align="center" prop="loginTime" sortable="custom" :sort-orders="['descending', 'ascending']" width="180">
<template #default="scope">
<span>{{ parseTime(scope.row.loginTime) }}</span>
</template>
</el-table-column>
流程图
2. 操作日志管理
操作日志模块记录了用户的操作行为,如增删改查等。通过分析操作日志,可以追踪用户行为,便于审计和问题排查。
核心功能
- 日志查询:支持按操作类型、时间范围等条件筛选。
- 日志导出:可将日志导出为Excel文件。
- 日志清理:支持批量删除或清理过期日志。
表格示例
| 字段名 | 描述 | 类型 |
|---|---|---|
operId |
日志ID | 数字 |
operTime |
操作时间 | 日期时间 |
operUrl |
操作URL | 字符串 |
operParam |
操作参数 | 字符串 |
代码示例
<el-dialog title="操作日志详细" v-model="open" width="800px" append-to-body>
<el-form :model="form" label-width="100px">
<el-form-item label="操作模块">{{ form.title }}</el-form-item>
<el-form-item label="请求方式">{{ form.requestMethod }}</el-form-item>
</el-form>
</el-dialog>
3. 定时任务日志
定时任务日志模块记录了系统定时任务的执行情况,包括任务名称、执行时间、执行结果等。通过分析这些日志,可以优化任务调度策略。
核心功能
- 任务执行记录:查看任务的执行状态(成功/失败)。
- 任务详情:查看任务的详细执行日志。
- 日志导出:支持将任务日志导出为Excel文件。
状态图
代码示例
<el-dialog title="调度日志详细" v-model="open" width="700px" append-to-body>
<el-form :model="form" label-width="100px">
<el-form-item label="任务名称">{{ form.jobName }}</el-form-item>
<el-form-item label="执行结果">{{ form.status === '0' ? '成功' : '失败' }}</el-form-item>
</el-form>
</el-dialog>
4. 在线用户监控
在线用户模块实时显示当前登录系统的用户信息,包括登录IP、登录时间等。管理员可通过此功能强制下线异常用户。
核心功能
- 实时监控:显示当前在线用户列表。
- 强制下线:可手动踢出指定用户。
代码示例
<el-table-column label="登录地点" align="center" prop="loginLocation" :show-overflow-tooltip="true" />
<el-table-column label="登录时间" align="center" prop="loginTime" width="180">
<template #default="scope">
<span>{{ parseTime(scope.row.loginTime) }}</span>
</template>
</el-table-column>
通过以上功能,RuoYi-Vue3项目提供了全面的监控与日志管理能力,帮助管理员高效运维系统。
性能调优与安全加固
RuoYi-Vue3 是一个基于 SpringBoot 和 Vue3 的前后端分离快速开发框架,其高性能和安全性是项目运维中的关键点。本节将详细介绍如何通过性能调优和安全加固来提升 RuoYi-Vue3 的稳定性和安全性。
性能调优
1. 前端性能优化
RuoYi-Vue3 使用 Vite 作为构建工具,其天然支持按需加载和快速热更新。以下是一些前端性能优化的建议:
-
代码拆分与懒加载
通过动态导入 (import()) 实现路由懒加载,减少首屏加载时间。// 示例:动态导入路由组件 const User = () => import('@/views/system/user/index.vue'); -
缓存策略
利用浏览器缓存机制,对静态资源(如 JS、CSS、图片)设置合适的缓存头。 -
减少 HTTP 请求
合并小型静态资源文件,使用雪碧图或内联关键 CSS/JS。
2. 后端性能优化
-
数据库查询优化
使用索引、分页查询和缓存(如 Redis)减少数据库压力。-- 示例:为常用查询字段添加索引 CREATE INDEX idx_user_name ON sys_user(user_name); -
接口响应优化
启用 Gzip 压缩,减少传输数据量。# 在 application.yml 中配置 server: compression: enabled: true mime-types: text/html,text/css,application/javascript
安全加固
1. 认证与授权
RuoYi-Vue3 内置了基于 Token 的认证机制,以下是一些安全加固建议:
-
强密码策略
强制用户使用复杂密码,并定期更换。// 示例:密码复杂度校验 const validatePassword = (password) => { return /^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)[a-zA-Z\d]{8,}$/.test(password); }; -
权限控制
使用@/directive/permission实现细粒度的前端权限控制。<template> <button v-hasPermi="['system:user:edit']">编辑用户</button> </template>
2. 防止常见攻击
-
XSS 防护
使用DOMPurify对用户输入进行过滤。import DOMPurify from 'dompurify'; const clean = DOMPurify.sanitize(userInput); -
CSRF 防护
启用 CSRF Token 校验。# 在 application.yml 中配置 security: csrf: enabled: true
3. 日志与监控
-
操作日志记录
记录用户关键操作,便于审计。// 示例:记录操作日志 @Log(title = "用户管理", businessType = BusinessType.UPDATE) public void updateUser(User user) { // 业务逻辑 } -
服务监控
使用 RuoYi 内置的监控功能,实时查看系统状态。
通过以上措施,可以显著提升 RuoYi-Vue3 的性能和安全性,确保系统稳定运行。
更多推荐




所有评论(0)