news 2026/6/11 0:06:23

高效运维:利用宝塔面板优化Ruoyi项目的持续部署流程

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
高效运维:利用宝塔面板优化Ruoyi项目的持续部署流程

高效运维:宝塔面板与Ruoyi项目的持续部署实战指南

1. 环境准备与基础配置

在开始部署Ruoyi项目之前,确保服务器环境已经准备就绪。对于大多数生产环境,推荐使用CentOS 7.x或Ubuntu 20.04 LTS作为操作系统。宝塔面板支持这两种主流Linux发行版,且对资源消耗较低。

服务器基础配置建议

  • CPU:至少2核
  • 内存:4GB以上(Java应用内存需求较高)
  • 磁盘:40GB SSD(数据库和日志文件会占用空间)
  • 带宽:3Mbps以上(根据用户量可适当增加)

安装宝塔面板非常简单,只需在服务器上执行以下命令:

# CentOS yum install -y wget && wget -O install.sh https://download.bt.cn/install/install_6.0.sh && sh install.sh ed8484bec # Ubuntu/Debian wget -O install.sh https://download.bt.cn/install/install-ubuntu_6.0.sh && sudo bash install.sh ed8484bec

安装完成后,记得在服务器安全组中放行以下端口:

端口号用途备注
8888宝塔面板建议安装后修改端口
888phpMyAdmin数据库管理
80HTTPWeb服务
443HTTPS安全Web服务
3306MySQL数据库服务
6379Redis缓存服务
8080应用默认端口Ruoyi后端常用端口

2. Ruoyi后端部署优化

Ruoyi后端基于SpringBoot框架,部署时需要特别注意配置文件的调整和依赖管理。以下是关键步骤:

  1. 数据库准备

    • 在宝塔面板中创建MySQL数据库
    • 导入Ruoyi提供的SQL脚本(通常包括ry_xxxx.sql和quartz.sql)
    • 确保字符集为utf8mb4以支持完整Unicode字符
  2. 配置文件调整: 修改application-druid.yml中的数据库连接信息:

spring: datasource: druid: master: url: jdbc:mysql://localhost:3306/ry-vue?useSSL=false&serverTimezone=Asia/Shanghai username: your_username password: your_password
  1. 日志配置: 在logback.xml中配置日志路径,确保服务器上有对应目录:
<property name="log.path" value="/home/ruoyi/logs" />
  1. 打包与上传: 使用Maven打包项目,推荐使用以下命令确保生产环境配置:
mvn clean package -Pprod -DskipTests

上传生成的ruoyi-admin.jar到服务器后,通过宝塔的Java项目管理器进行部署:

关键配置项

  • 项目类型:SpringBoot
  • JDK版本:推荐1.8或与开发环境一致
  • 项目端口:与application.yml中配置一致
  • 开机自启:建议开启

3. 前端部署与Nginx优化

Ruoyi前端基于Vue.js,部署时需要特别注意生产环境配置和Nginx优化。

  1. 前端打包: 修改.env.production中的API地址:
VUE_APP_BASE_API = 'http://your-domain.com/prod-api'

执行构建命令:

npm run build:prod
  1. Nginx配置优化: 以下是一个高性能的Nginx配置示例:
server { listen 80; server_name your-domain.com; # 前端静态资源 location / { root /www/wwwroot/ruoyi-ui/dist; try_files $uri $uri/ /index.html; index index.html; # 开启gzip压缩 gzip_static on; expires 1y; add_header Cache-Control "public"; } # 后端API代理 location /prod-api/ { proxy_pass http://127.0.0.1:8080/; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; # 长连接优化 proxy_http_version 1.1; proxy_set_header Connection ""; # 超时设置 proxy_connect_timeout 60s; proxy_read_timeout 600s; proxy_send_timeout 600s; } # 静态资源缓存 location ~* \.(jpg|jpeg|png|gif|ico|css|js)$ { expires 365d; add_header Cache-Control "public, no-transform"; } }
  1. 性能优化技巧
    • 开启Brotli压缩(比Gzip更高效)
    • 配置HTTP/2提升加载速度
    • 使用CDN加速静态资源
    • 配置合适的缓存策略

4. 持续集成与自动化部署

要实现真正的DevOps流程,可以配置自动化部署方案。以下是基于宝塔Webhook和Git的自动化部署实现:

  1. 宝塔Webhook配置
    • 在宝塔面板创建Webhook
    • 设置Git仓库的推送事件触发
    • 编写部署脚本

示例部署脚本deploy.sh

#!/bin/bash # 拉取最新代码 cd /www/wwwroot/ruoyi git pull origin master # 构建后端 mvn clean package -Pprod -DskipTests # 重启Java项目 bt restart java_project_name # 构建前端 cd /www/wwwroot/ruoyi-ui npm install npm run build:prod # 刷新Nginx nginx -s reload
  1. Git仓库配置: 在项目的.git/hooks/post-receive中添加:
#!/bin/sh curl -X POST http://your-server-ip:8888/hook?token=your_webhook_token
  1. 备份策略: 使用宝塔的计划任务配置自动备份:
  • 数据库每日全量备份
  • 项目代码每周备份
  • 备份文件同步到云存储

5. 监控与故障排查

完善的监控系统是运维的重要保障。宝塔面板提供基础监控,但对于生产环境建议增加以下监控项:

  1. 基础资源监控

    • CPU、内存、磁盘使用率
    • 网络流量
    • 进程状态
  2. 应用性能监控

    • JVM内存使用情况
    • GC日志分析
    • SQL执行效率
  3. 日志分析: 配置ELK栈集中管理日志:

# 安装Filebeat wget https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-7.14.0-linux-x86_64.tar.gz tar -xzf filebeat-7.14.0-linux-x86_64.tar.gz
  1. 常见问题排查
    • 端口冲突:使用netstat -tunlp检查
    • 内存不足:调整JVM参数-Xms512m -Xmx1024m
    • 数据库连接池耗尽:优化Druid配置

6. 安全加固措施

部署完成后,必须进行安全加固:

  1. 服务器安全

    • 修改SSH默认端口
    • 禁用root远程登录
    • 配置fail2ban防止暴力破解
  2. 宝塔面板安全

    • 修改默认8888端口
    • 设置复杂密码
    • 开启BasicAuth二次验证
  3. 应用安全

    • 定期更新依赖库
    • 配置WAF防火墙规则
    • 启用HTTPS加密
  4. 数据库安全

    • 限制MySQL只允许本地连接
    • 定期更改数据库密码
    • 开启binlog用于数据恢复

在实际项目中,我们曾遇到因未配置日志轮转导致磁盘爆满的情况。通过配置logrotate解决了这个问题:

# /etc/logrotate.d/ruoyi /home/ruoyi/logs/*.log { daily missingok rotate 30 compress delaycompress notifempty create 0640 root root sharedscripts postrotate /usr/bin/find /home/ruoyi/logs/ -name "*.log" -mtime +30 -exec rm -f {} \; endscript }
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/10 15:09:35

c++遍历容器(vector、list、set、map

遍历vector1. 基于范围的 for 循环&#xff08;C11 起推荐使用&#xff09;#include <vector> #include <iostream>std::vector<int> vec {1, 2, 3, 4, 5};for (const auto& element : vec) {std::cout << element << " "; }使用…

作者头像 李华
网站建设 2026/6/10 21:12:07

RMBG-2.0效果对比:与传统抠图工具的全面评测

RMBG-2.0效果对比&#xff1a;与传统抠图工具的全面评测 1. 为什么这次抠图体验让我重新打开了修图软件 上周给客户做电商主图&#xff0c;一张模特穿新季连衣裙的照片卡了我整整两小时。发丝边缘毛躁、薄纱材质半透明、背景是带纹理的浅灰墙纸——用Photoshop钢笔工具抠了三…

作者头像 李华
网站建设 2026/6/10 15:24:09

开源串流工具低延迟优化指南:跨设备高清流畅体验实战

开源串流工具低延迟优化指南&#xff1a;跨设备高清流畅体验实战 【免费下载链接】Sunshine Sunshine: Sunshine是一个自托管的游戏流媒体服务器&#xff0c;支持通过Moonlight在各种设备上进行低延迟的游戏串流。 项目地址: https://gitcode.com/GitHub_Trending/su/Sunshin…

作者头像 李华
网站建设 2026/6/10 15:20:47

StructBERT中文文本分类:快速上手与实战应用

StructBERT中文文本分类&#xff1a;快速上手与实战应用 1. 为什么你需要一个“不用训练”的文本分类器&#xff1f; 你有没有遇到过这样的情况&#xff1a; 客服团队每天收到几百条用户反馈&#xff0c;但没人来标注“这是咨询还是投诉”&#xff1b;运营同事临时要对一批新…

作者头像 李华
网站建设 2026/6/10 7:47:41

从草图到代码:Doubao-Seed-Code如何用视觉理解重构Obsidian插件UI设计

视觉驱动开发&#xff1a;Doubao-Seed-Code如何重塑Obsidian插件设计范式 当设计稿与代码之间的鸿沟被AI瞬间弥合&#xff0c;一场关于生产力革命的序幕正在拉开。在Obsidian插件开发领域&#xff0c;Doubao-Seed-Code带来的视觉理解能力正在颠覆传统的UI开发流程。这款支持原生…

作者头像 李华
网站建设 2026/6/10 9:11:02

mT5分类增强版中文-base效果展示:中文电商搜索Query多样性增强

mT5分类增强版中文-base效果展示&#xff1a;中文电商搜索Query多样性增强 1. 这不是普通改写&#xff0c;是搜索Query的“语义扩容术” 你有没有遇到过这样的问题&#xff1a;用户搜“苹果手机壳”&#xff0c;结果只返回带“苹果”和“手机壳”的商品&#xff1b;但其实“i…

作者头像 李华