logo

RuoYi云服务器部署全流程指南:从环境搭建到运维优化

作者:搬砖的石头2025.09.26 21:39浏览量:2

简介:本文详细解析RuoYi系统在云服务器上的部署流程,涵盖环境配置、安全加固、性能调优等关键环节,为开发者提供标准化操作指南。

一、RuoYi系统与云服务器部署的适配性分析

RuoYi作为基于Spring Boot+Vue的快速开发框架,其模块化架构与云原生特性形成天然契合。云服务器提供的弹性计算资源(如ECS实例)、对象存储服务(OSS)和负载均衡(SLB)能力,能有效解决传统物理机部署中资源利用率低、扩展性差等问题。

技术层面,RuoYi的微服务架构可拆分为用户管理、权限控制、代码生成等独立模块,与Kubernetes容器编排形成技术互补。例如在阿里云ACK集群中,可通过Deployment资源定义实现模块级水平扩展,结合HPA(水平自动扩缩)策略应对突发流量。

经济性方面,云服务器的按需付费模式相比自建IDC可降低30%-50%成本。以RuoYi标准版为例,2核4G配置的ECS实例(突发性能型t6)月费用约80元,配合RDS MySQL实例(基础版20GB)月费用65元,整体年运营成本可控制在2000元以内。

二、云服务器环境准备与优化

1. 基础环境配置

选择CentOS 7.6/8.2或Ubuntu 20.04 LTS系统镜像,推荐使用阿里云市场提供的LAMP/LNMP优化镜像。关键配置项包括:

  1. # 修改文件描述符限制
  2. echo "* soft nofile 65535" >> /etc/security/limits.conf
  3. echo "* hard nofile 65535" >> /etc/security/limits.conf
  4. # 调整内核参数
  5. echo "net.core.somaxconn = 65535" >> /etc/sysctl.conf
  6. echo "net.ipv4.tcp_max_syn_backlog = 65535" >> /etc/sysctl.conf
  7. sysctl -p

2. 数据库部署方案

针对RuoYi的MySQL依赖,推荐采用主从复制架构:

  • 主库配置:设置innodb_buffer_pool_size=4G(占内存70%)
  • 从库配置:启用read_only=1参数
  • 连接池优化:在application.yml中配置:
    1. spring:
    2. datasource:
    3. druid:
    4. initial-size: 5
    5. max-active: 50
    6. min-idle: 5
    7. validation-query: SELECT 1

3. 存储方案选择

  • 日志存储:使用云盘(ESSD PL1)挂载至/var/log/ruoyi目录
  • 附件存储:配置OSS Bucket,通过SDK实现文件上传:

    1. // OSS上传示例
    2. public String uploadFile(MultipartFile file) {
    3. String endpoint = "oss-cn-hangzhou.aliyuncs.com";
    4. String accessKeyId = "your-access-key";
    5. String accessKeySecret = "your-secret-key";
    6. OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);
    7. String objectKey = "uploads/" + UUID.randomUUID() + file.getOriginalFilename();
    8. ossClient.putObject("your-bucket", objectKey, new ByteArrayInputStream(file.getBytes()));
    9. return objectKey;
    10. }

三、RuoYi系统部署实施

1. 代码部署流程

  1. Git仓库配置:在云服务器创建裸仓库,设置post-receive钩子自动部署
    ```bash

    !/bin/bash

    TARGET_DIR=”/opt/ruoyi”
    GIT_DIR=”/opt/repo/ruoyi.git”

while read oldrev newrev ref
do
if [[ $ref =~ refs/heads/master ]];
then
echo “Ref $ref received. Deploying master branch to production…”
git —work-tree=$TARGET_DIR —git-dir=$GIT_DIR checkout -f master
cd $TARGET_DIR
mvn clean package
systemctl restart ruoyi
else
echo “Ref $ref received. Doing nothing: only the master branch may be deployed on this server.”
fi
done

  1. 2. **构建优化**:使用Maven多模块构建,配置`-DskipTests`跳过测试:
  2. ```bash
  3. mvn clean package -pl ruoyi-admin -am -DskipTests

2. 容器化部署方案

对于Kubernetes环境,需准备:

  • Dockerfile优化:采用多阶段构建减少镜像体积
    ```dockerfile
    FROM maven:3.8.4-jdk-11 AS build
    WORKDIR /app
    COPY . .
    RUN mvn clean package -DskipTests

FROM openjdk:11-jre-slim
WORKDIR /app
COPY —from=build /app/ruoyi-admin/target/ruoyi-admin.jar .
EXPOSE 8080
ENTRYPOINT [“java”, “-jar”, “ruoyi-admin.jar”]

  1. - Deployment配置示例:
  2. ```yaml
  3. apiVersion: apps/v1
  4. kind: Deployment
  5. metadata:
  6. name: ruoyi-admin
  7. spec:
  8. replicas: 2
  9. selector:
  10. matchLabels:
  11. app: ruoyi-admin
  12. template:
  13. metadata:
  14. labels:
  15. app: ruoyi-admin
  16. spec:
  17. containers:
  18. - name: ruoyi
  19. image: registry.cn-hangzhou.aliyuncs.com/your-repo/ruoyi-admin:v1.0
  20. resources:
  21. limits:
  22. memory: "1Gi"
  23. cpu: "500m"
  24. ports:
  25. - containerPort: 8080

四、运维监控与性能调优

1. 监控体系构建

  • Prometheus+Grafana监控方案:

    • 配置JMX Exporter采集JVM指标
    • 自定义Nginx指标采集:
      1. location /metrics {
      2. stub_status on;
      3. access_log off;
      4. allow 127.0.0.1;
      5. deny all;
      6. }
  • 阿里云ARMS监控集成:通过SDK上报自定义业务指标

2. 性能优化实践

  1. JVM调优

    1. JAVA_OPTS="-Xms512m -Xmx1024m -XX:MetaspaceSize=256m -XX:MaxMetaspaceSize=512m \
    2. -XX:+UseG1GC -XX:G1HeapRegionSize=16m \
    3. -XX:InitiatingHeapOccupancyPercent=35"
  2. 缓存策略优化

  • Redis配置:设置maxmemory-policy=allkeys-lru
  • 本地缓存:使用Caffeine替代Guava Cache

3. 安全加固方案

  1. 网络隔离

    • 配置安全组规则,仅开放80/443/22端口
    • 使用VPC私有网络,子网间通过CLB互通
  2. 数据加密

    • 启用TLS 1.2+,禁用弱密码套件
    • 数据库连接配置SSL:
      1. spring:
      2. datasource:
      3. url: jdbc:mysql://rm-bp1234567890abcde.mysql.rds.aliyuncs.com:3306/ry?useSSL=true&requireSSL=true

五、常见问题解决方案

  1. 文件上传失败

    • 检查Nginx配置client_max_body_size参数
    • 验证OSS Bucket权限策略
  2. 定时任务不执行

    • 检查@Scheduled注解配置
    • 验证Spring Boot Actuator端点/actuator/scheduledtasks
  3. 跨域问题

    • 前端配置axios.defaults.baseURL
    • 后端添加CORS配置:
      1. @Configuration
      2. public class CorsConfig implements WebMvcConfigurer {
      3. @Override
      4. public void addCorsMappings(CorsRegistry registry) {
      5. registry.addMapping("/**")
      6. .allowedOriginPatterns("*")
      7. .allowedMethods("GET", "POST", "PUT", "DELETE", "OPTIONS")
      8. .allowedHeaders("*")
      9. .allowCredentials(true)
      10. .maxAge(3600);
      11. }
      12. }

通过上述标准化部署方案,开发者可在云服务器环境快速构建稳定高效的RuoYi系统。实际部署中需根据业务规模动态调整资源配置,建议初期采用2核4G+10GB云盘配置,日均访问量超过5000时升级至4核8G实例。定期进行压力测试(建议使用JMeter模拟200并发用户),持续优化系统性能。

相关文章推荐

发表评论

活动