若依前后端分离系统在Linux生产环境下的高效部署指南
1. 环境准备与依赖安装在Linux服务器上部署若依前后端分离系统前需要确保基础环境配置到位。我遇到过不少因为环境缺失导致的部署失败案例这里把关键要点梳理成可复用的检查清单。JDK安装建议选择OpenJDK 1.8版本实测与若依系统兼容性最好。通过以下命令安装后记得配置JAVA_HOME环境变量sudo apt-get install openjdk-8-jdk echo export JAVA_HOME/usr/lib/jvm/java-8-openjdk-amd64 ~/.bashrcMySQL数据库推荐8.0以上版本创建数据库时要注意字符集设置。有次我忘记指定utf8mb4导致中文乱码后来用这个命令重建才解决CREATE DATABASE ry_vue CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;Redis安装有个容易踩的坑——内存策略配置。生产环境建议修改redis.conf中的maxmemory-policy为allkeys-lru避免内存溢出sudo apt-get install redis-server sudo sed -i s/# maxmemory-policy noeviction/maxmemory-policy allkeys-lru/g /etc/redis/redis.confNginx选择官方LTS版本最稳定。上次用最新主线版遇到HTTP/2兼容问题后来改用这个安装命令才稳定sudo apt-get install nginx-extras2. 系统配置深度优化2.1 数据库连接池调优若依默认使用Druid连接池生产环境需要根据服务器配置调整参数。在我的4核8G服务器上这些参数效果最佳# application-druid.yml initialSize: 5 maxActive: 20 minIdle: 5 maxWait: 600002.2 端口规划策略不同于开发环境随意用端口生产环境需要系统规划。我通常这样分配后端服务18080-18100区间前端服务18000-18080区间管理接口18100以上修改后端端口时要注意两处同步# application.yml server: port: 18081// vue.config.js devServer: { port: 18080, proxy: { /prod-api: { target: http://localhost:18081 } } }3. 构建与部署实战3.1 后端打包进阶技巧使用Maven打包时加上-Pprod参数激活生产配置mvn clean package -Pprod -DskipTests遇到过jar包冲突的问题后来发现用这个命令能有效排查mvn dependency:tree -Dverbose -Dincludescom.alibaba3.2 前端构建优化Vue项目构建时开启多核压缩能大幅提升速度npm install --save-dev thread-loader # 在vue.config.js中配置 parallel: require(os).cpus().length 1静态资源CDN配置示例module.exports { publicPath: process.env.NODE_ENV production ? https://cdn.yourdomain.com/ : / }4. Nginx配置全解析4.1 高性能代理配置这是我的生产环境Nginx模板经过百万PV验证server { listen 443 ssl http2; server_name yourdomain.com; ssl_certificate /path/to/cert.pem; ssl_certificate_key /path/to/key.pem; location / { root /var/www/ruoyi-ui/dist; try_files $uri $uri/ /index.html; expires 30d; add_header Cache-Control public; } location /prod-api/ { proxy_pass http://127.0.0.1:18081/; proxy_connect_timeout 60s; proxy_read_timeout 300s; proxy_send_timeout 300s; proxy_set_header X-Forwarded-Proto $scheme; } }4.2 安全加固措施在Nginx配置中添加这些安全头add_header X-Frame-Options SAMEORIGIN; add_header X-XSS-Protection 1; modeblock; add_header X-Content-Type-Options nosniff; add_header Referrer-Policy strict-origin;5. 系统监控与维护5.1 启动脚本增强版改进后的启动脚本包含健康检查功能#!/bin/bash JAR_NAMEruoyi-admin.jar LOG_FILEnohup.out # 检查旧进程 PID$(pgrep -f $JAR_NAME) if [ -n $PID ]; then echo Killing existing process $PID kill -9 $PID fi # 启动新进程 nohup java -Xms512m -Xmx2048m -jar $JAR_NAME $LOG_FILE 21 # 健康检查 for i in {1..30}; do if grep -q 若依启动成功 $LOG_FILE; then echo Application started successfully exit 0 fi sleep 2 done echo Startup failed, check $LOG_FILE for details exit 15.2 日志管理方案使用logrotate实现日志自动切割# /etc/logrotate.d/ruoyi /var/log/ruoyi/*.log { daily missingok rotate 30 compress delaycompress notifempty create 644 root root postrotate /usr/bin/killall -HUP java endscript }6. 故障排查指南当遇到启动失败时我通常按这个顺序排查检查数据库连接telnet mysql_host 3306验证Redis连通性redis-cli ping查看端口占用netstat -tulnp | grep 18081分析启动日志tail -n 100 nohup.out常见错误解决方案数据库时区问题在连接串添加serverTimezoneAsia/Shanghai前端路由404检查Nginx的try_files配置静态资源加载失败确认publicPath配置