高效运维:宝塔面板与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 | 宝塔面板 | 建议安装后修改端口 |
| 888 | phpMyAdmin | 数据库管理 |
| 80 | HTTP | Web服务 |
| 443 | HTTPS | 安全Web服务 |
| 3306 | MySQL | 数据库服务 |
| 6379 | Redis | 缓存服务 |
| 8080 | 应用默认端口 | Ruoyi后端常用端口 |
2. Ruoyi后端部署优化
Ruoyi后端基于SpringBoot框架,部署时需要特别注意配置文件的调整和依赖管理。以下是关键步骤:
数据库准备:
- 在宝塔面板中创建MySQL数据库
- 导入Ruoyi提供的SQL脚本(通常包括ry_xxxx.sql和quartz.sql)
- 确保字符集为utf8mb4以支持完整Unicode字符
配置文件调整: 修改
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- 日志配置: 在
logback.xml中配置日志路径,确保服务器上有对应目录:
<property name="log.path" value="/home/ruoyi/logs" />- 打包与上传: 使用Maven打包项目,推荐使用以下命令确保生产环境配置:
mvn clean package -Pprod -DskipTests上传生成的ruoyi-admin.jar到服务器后,通过宝塔的Java项目管理器进行部署:
关键配置项:
- 项目类型:SpringBoot
- JDK版本:推荐1.8或与开发环境一致
- 项目端口:与application.yml中配置一致
- 开机自启:建议开启
3. 前端部署与Nginx优化
Ruoyi前端基于Vue.js,部署时需要特别注意生产环境配置和Nginx优化。
- 前端打包: 修改
.env.production中的API地址:
VUE_APP_BASE_API = 'http://your-domain.com/prod-api'执行构建命令:
npm run build:prod- 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"; } }- 性能优化技巧:
- 开启Brotli压缩(比Gzip更高效)
- 配置HTTP/2提升加载速度
- 使用CDN加速静态资源
- 配置合适的缓存策略
4. 持续集成与自动化部署
要实现真正的DevOps流程,可以配置自动化部署方案。以下是基于宝塔Webhook和Git的自动化部署实现:
- 宝塔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- Git仓库配置: 在项目的
.git/hooks/post-receive中添加:
#!/bin/sh curl -X POST http://your-server-ip:8888/hook?token=your_webhook_token- 备份策略: 使用宝塔的计划任务配置自动备份:
- 数据库每日全量备份
- 项目代码每周备份
- 备份文件同步到云存储
5. 监控与故障排查
完善的监控系统是运维的重要保障。宝塔面板提供基础监控,但对于生产环境建议增加以下监控项:
基础资源监控:
- CPU、内存、磁盘使用率
- 网络流量
- 进程状态
应用性能监控:
- JVM内存使用情况
- GC日志分析
- SQL执行效率
日志分析: 配置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- 常见问题排查:
- 端口冲突:使用
netstat -tunlp检查 - 内存不足:调整JVM参数
-Xms512m -Xmx1024m - 数据库连接池耗尽:优化Druid配置
- 端口冲突:使用
6. 安全加固措施
部署完成后,必须进行安全加固:
服务器安全:
- 修改SSH默认端口
- 禁用root远程登录
- 配置fail2ban防止暴力破解
宝塔面板安全:
- 修改默认8888端口
- 设置复杂密码
- 开启BasicAuth二次验证
应用安全:
- 定期更新依赖库
- 配置WAF防火墙规则
- 启用HTTPS加密
数据库安全:
- 限制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 }