ICOOLKJ 前后端分离项目完整部署文档(MySQL8.4+Redis+JDK21+Nginx+HTTPS+自动同步演示库) 📅 2026/7/18 16:44:21 一、环境总览操作系统Linux x86_64数据库MySQL 8.4.10 二进制手动部署忽略表名大小写缓存中间件Redis 最新稳定版二进制部署开机自启运行环境JDK 21 LTSTemurin 开源免费商用Web服务Nginx 源码编译支持SSL、反向代理、静态资源项目架构Vue前端 SpringBoot后端 前后端分离正式域名企业级多租户管理平台自动化能力每日凌晨2点自动将正式库同步覆盖演示库二、MySQL 8.4.10 部署关键忽略表名大小写1. 核心特性初始化强制开启lower_case_table_names1彻底忽略表名大小写解决Linux大小写敏感问题。2. 目录规范安装目录/opt/software/mysql-8.4.10-linux-glibc2.28-x86_64数据目录/data/mysql配置文件/etc/my.cnf3. my.cnf 核心配置必须初始化前配置不可后期修改[mysqld] lower_case_table_names1 usermysql port3306 basedir/opt/software/mysql-8.4.10-linux-glibc2.28-x86_64 datadir/data/mysql socket/tmp/mysql.sock pid-file/data/mysql/ICOOLKJ.pid character-set-serverutf8mb4 collation-serverutf8mb4_unicode_ci log_error/data/mysql/mysql-error.log slow_query_log1 long_query_time24. 初始化与密码重置初始化后通过skip-grant-tables免密重置 root 密码为自定义密码保证可正常登录。数据库库名规范正式业务库icoolkj_platform演示测试库icoolkj_platform_dev三、Redis 中间件部署1. 部署方式采用 Linux 二进制/源码编译部署配置密码、开机自启、后台常驻适配 SpringBoot 项目缓存、登录会话、验证码缓存需求。2. 基础环境依赖yum install -y gcc gcc-c make3. 安装目录规范安装目录/usr/local/redis配置文件/usr/local/redis/redis.conf数据持久化目录/data/redis4. 核心配置优化生产可用修改redis.conf关键参数# 后台运行 daemonize yes # 绑定本机安全加固 bind 127.0.0.1 # 关闭保护模式 protected-mode no # 端口 port 6379 # 设置自定义密码 requirepass test # 持久化开启 appendonly yes # 数据目录 dir /data/redis5. Systemd 开机自启配置文件路径/etc/systemd/system/redis.service[Unit] DescriptionRedis Service Afternetwork.target [Service] Typeforking ExecStart/usr/local/redis/redis-server /usr/local/redis/redis.conf ExecStop/usr/local/redis/redis-cli -a test shutdown Restarton-failure [Install] WantedBymulti-user.target6. 服务管理命令systemctl daemon-reload systemctl start redis systemctl enable redis systemctl status redis # 连接测试 redis-cli -a test7. 项目适配说明SpringBoot 项目默认配置连接本地 Redis密码对应上述自定义密码无需远程开放端口安全可控。四、JDK21 部署Temurin 开源版1. 安装方式采用清华镜像 JDK21 免编译压缩包适配所有Linux系统无版权风险。2. 目录/usr/local/jdk/jdk213. 环境变量 /etc/profile# JDK21 export JAVA_HOME/usr/local/jdk/jdk21 export PATH$JAVA_HOME/bin:$PATH export CLASSPATH.:$JAVA_HOME/lib生效命令source /etc/profile验证java -version五、Nginx 源码编译部署支持SSL1. 编译模块包含ssl、gzip、status 监控模块2. 目录规范安装目录/usr/local/nginx站点配置/usr/local/nginx/conf/vhost/SSL证书目录/usr/local/nginx/conf/ssl3. systemd 开机自启已配置 systemd 托管支持 start/stop/restart/enable六、前后端分离项目统一部署规范1. 项目统一目录/opt/project/├── frontend # 前端dist打包静态资源├── backend # SpringBoot jar包└── logs # 项目日志2. 后端 SpringBoot 部署包名icoolkj-admin-api-1.0.0-SNAPSHOT.jar端口8080运行方式systemd 常驻服务开机自启、失败自动重启依赖组件MySQL8.4 Redis后端服务文件/etc/systemd/system/icoolkj-admin-api.service[Unit] Descriptionicoolkj-admin-api Backend Service Afternetwork.target mysqld.service redis.service [Service] Userroot EnvironmentJAVA_HOME/usr/local/jdk/jdk21 WorkingDirectory/opt/project/backend ExecStart/usr/local/jdk/jdk21/bin/java -Xms512m -Xmx1024m -jar icoolkj-admin-api-1.0.0-SNAPSHOT.jar ExecStop/bin/kill -15 $MAINPID Restarton-failure RestartSec5 [Install] WantedBymulti-user.target3. 前端部署前端打包 dist 内所有文件直接放入/opt/project/frontend前端生产环境接口地址VITE_API_URL/api七、Nginx 完整 HTTPS 生产配置适配正式域名功能80强制跳转443、SSL加密、Vue history路由、接口反向代理、静态缓存、跨域统一处理绑定域名platform.px.icoolkj.com文件/usr/local/nginx/conf/vhost/icoolkj.conf# HTTP 强制跳转 HTTPS server { listen 80 default_server; server_name platform.px.icoolkj.com; return 301 https://$host$request_uri; } # HTTPS 主站点 server { listen 443 ssl default_server; server_name platform.px.icoolkj.com; ssl_certificate /usr/local/nginx/conf/ssl/platform.icoolkj.com.crt; ssl_certificate_key /usr/local/nginx/conf/ssl/platform.icoolkj.com.key; ssl_protocols TLSv1.2 TLSv1.3; ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE; ssl_prefer_server_ciphers on; ssl_session_cache shared:SSL:10m; ssl_session_timeout 10m; root /opt/project/frontend; index index.html; location / { try_files $uri $uri/ /index.html; } location /api/ { proxy_pass http://127.0.0.1:8080/api/; 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_set_header X-Forwarded-Proto $scheme; } client_max_body_size 20M; location ~* \.(js|css|png|jpg|jpeg|gif|ico|svg)$ { expires 7d; } access_log /opt/project/logs/icoolkj-access.log; error_log /opt/project/logs/icoolkj-error.log; }主配置引入nginx.conf http{} 内添加 include vhost/*.conf;生效命令nginx -t nginx -s reload八、演示环境自动同步方案核心特色需求每日凌晨 2:00 自动使用正式库 icoolkj_platform 完全覆盖演示库 icoolkj_platform_dev保证演示环境永远是最新正式数据。1. 自动同步脚本路径/opt/script/sync_platform_dev.sh#!/bin/bash # 数据库配置 DB_USERroot DB_PASS你的MySQL密码 DB_HOST127.0.0.1 DB_PRODicoolkj_platform DB_DEVicoolkj_platform_dev TMP_SQL/opt/script/platform_prod_dump.sql LOG_FILE/opt/script/sync_dev_log.log MYSQL_PATH/opt/software/mysql-8.4.10-linux-glibc2.28-x86_64/bin echo $(date %Y-%m-%d %H:%M:%S) 开始同步 $LOG_FILE # 导出正式库完整数据、存储过程、触发器 $MYSQL_PATH/mysqldump -u${DB_USER} -p${DB_PASS} -h${DB_HOST} -R --triggers --routines ${DB_PROD} $TMP_SQL if [ $? -ne 0 ];then echo ❌ 正式库导出失败 $LOG_FILE exit 1 fi # 删除重建演示库 $MYSQL_PATH/mysql -u${DB_USER} -p${DB_PASS} -h${DB_HOST} EOF DROP DATABASE IF EXISTS ${DB_DEV}; CREATE DATABASE ${DB_DEV} DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; EOF # 导入数据到演示库 $MYSQL_PATH/mysql -u${DB_USER} -p${DB_PASS} -h${DB_HOST} ${DB_DEV} $TMP_SQL if [ $? -eq 0 ];then echo ✅ 同步完成${DB_PROD} 已覆盖 ${DB_DEV} $LOG_FILE else echo ❌ 导入dev库失败 $LOG_FILE fi2. 授权与测试chmod x /opt/script/sync_platform_dev.sh bash /opt/script/sync_platform_dev.sh3. 定时任务 crontabcrontab -e0 2 * * * /opt/script/sync_platform_dev.sh含义每天凌晨 02:00 自动执行覆盖同步九、防火墙/安全组放行端口firewall-cmd --add-port80/tcp --permanent firewall-cmd --add-port443/tcp --permanent firewall-cmd --reload云服务器安全组必须放行80、443内网端口3306、6379 仅本地监听无需对外开放保障安全十、项目访问地址正式访问域名https://platform.px.icoolkj.com后端接口Nginx 自动代理/api请求至后端8080端口演示库机制每日凌晨2点自动同步正式库全量数据十一、日常维护命令汇总1. 后端服务systemctl start/stop/restart/status icoolkj-admin-api journalctl -u icoolkj-admin-api -f2. Nginxnginx -t nginx -s reload3. Redis 服务systemctl start/stop/restart/status redis redis-cli -a test4. 数据库同步日志查看tail -f /opt/script/sync_dev_log.log十二、常见问题总结Nginx显示默认页面缺少 default_server、server_name 不匹配、未引入vhost配置接口404proxy_pass 斜杠配置错误、后端服务端口不一致502异常后端jar服务未启动、端口未监听脚本执行二进制错误Windows换行符导致执行 dos2unix 修复脚本格式MySQL同步报错mysqldump 参数顺序错误、数据库密码配置错误项目缓存/登录异常Redis未启动、密码配置不匹配十三、全套软件官方/高速下载地址本次部署对应版本1. Nginx 1.26.2稳定版源码官网下载页https://nginx.org/en/download.html一键wget下载wget https://nginx.org/download/nginx-1.26.2.tar.gz2. JDK21 Temurin开源免费商用、清华镜像高速镜像下载页Index of /Adoptium/21/ | 清华大学开源软件镜像站 | Tsinghua Open Source Mirror本次部署对应版本一键下载wget https://mirrors.tuna.tsinghua.edu.cn/Adoptium/21/jdk/x64/linux/OpenJDK21U-jdk_x64_linux_hotspot_21.0.11_9.tar.gz3. MySQL 8.4.10glibc2.28 x86_64 官方二进制包官方下载页https://dev.mysql.com/downloads/mysql/8.4.html4. Redis 稳定版官方源码官网https://redis.io/所有稳定版本https://download.redis.io/releases/5. HTTPS 免费证书申请工具 acme.sh项目地址https://github.com/acmesh-official/acme.sh一键安装curl https://get.acme.sh | sh