一、环境总览
- 操作系统:Linux x86_64
- 数据库:MySQL 8.4.10 二进制手动部署(忽略表名大小写)
- 缓存中间件:Redis 最新稳定版(二进制部署,开机自启)
- 运行环境:JDK 21 LTS(Temurin 开源免费商用)
- Web服务:Nginx 源码编译(支持SSL、反向代理、静态资源)
- 项目架构:Vue前端 + SpringBoot后端 前后端分离
- 正式域名 :企业级多租户管理平台
- 自动化能力:每日凌晨2点自动将正式库同步覆盖演示库
二、MySQL 8.4.10 部署(关键:忽略表名大小写)
1. 核心特性
初始化强制开启:lower_case_table_names=1,彻底忽略表名大小写,解决Linux大小写敏感问题。
2. 目录规范
- 安装目录:/opt/software/mysql-8.4.10-linux-glibc2.28-x86_64
- 数据目录:/data/mysql
- 配置文件:/etc/my.cnf
3. my.cnf 核心配置
必须初始化前配置,不可后期修改
bash
[mysqld]
lower_case_table_names=1
user=mysql
port=3306
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-server=utf8mb4
collation-server=utf8mb4_unicode_ci
log_error=/data/mysql/mysql-error.log
slow_query_log=1
long_query_time=2
4. 初始化与密码重置
初始化后通过 skip-grant-tables 免密重置 root 密码为自定义密码,保证可正常登录。
数据库库名规范
- 正式业务库:icoolkj_platform
- 演示测试库:icoolkj_platform_dev
三、Redis 中间件部署
1. 部署方式
采用 Linux 二进制/源码编译部署,配置密码、开机自启、后台常驻,适配 SpringBoot 项目缓存、登录会话、验证码缓存需求。
2. 基础环境依赖
bash
yum install -y gcc gcc-c++ make
3. 安装目录规范
- 安装目录:/usr/local/redis
- 配置文件:/usr/local/redis/redis.conf
- 数据持久化目录:/data/redis
4. 核心配置优化(生产可用)
修改 redis.conf 关键参数
bash
# 后台运行
daemonize yes
# 绑定本机,安全加固
bind 127.0.0.1
# 关闭保护模式
protected-mode no
# 端口
port 6379
# 设置自定义密码
requirepass test
# 持久化开启
appendonly yes
# 数据目录
dir /data/redis
5. Systemd 开机自启配置
文件路径:/etc/systemd/system/redis.service
bash
[Unit]
Description=Redis Service
After=network.target
[Service]
Type=forking
ExecStart=/usr/local/redis/redis-server /usr/local/redis/redis.conf
ExecStop=/usr/local/redis/redis-cli -a test shutdown
Restart=on-failure
[Install]
WantedBy=multi-user.target
6. 服务管理命令
bash
systemctl daemon-reload
systemctl start redis
systemctl enable redis
systemctl status redis
# 连接测试
redis-cli -a test
7. 项目适配说明
SpringBoot 项目默认配置连接本地 Redis,密码对应上述自定义密码,无需远程开放端口,安全可控。
四、JDK21 部署(Temurin 开源版)
1. 安装方式
采用清华镜像 JDK21 免编译压缩包,适配所有Linux系统,无版权风险。
2. 目录
/usr/local/jdk/jdk21
3. 环境变量 /etc/profile
bash
# 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 源码编译部署(支持SSL)
1. 编译模块
包含:ssl、gzip、status 监控模块
2. 目录规范
- 安装目录:/usr/local/nginx
- 站点配置:/usr/local/nginx/conf/vhost/
- SSL证书目录:/usr/local/nginx/conf/ssl
3. 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
bash
[Unit]
Description=icoolkj-admin-api Backend Service
After=network.target mysqld.service redis.service
[Service]
User=root
Environment="JAVA_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
Restart=on-failure
RestartSec=5
[Install]
WantedBy=multi-user.target
3. 前端部署
前端打包 dist 内所有文件直接放入:/opt/project/frontend
前端生产环境接口地址:VITE_API_URL=/api
七、Nginx 完整 HTTPS 生产配置(适配正式域名)
功能:80强制跳转443、SSL加密、Vue history路由、接口反向代理、静态缓存、跨域统一处理
文件:/usr/local/nginx/conf/vhost/icoolkj.conf
bash
# 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
bash
#!/bin/bash
# 数据库配置
DB_USER="root"
DB_PASS="你的MySQL密码"
DB_HOST="127.0.0.1"
DB_PROD="icoolkj_platform"
DB_DEV="icoolkj_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
fi
2. 授权与测试
bash
chmod +x /opt/script/sync_platform_dev.sh
bash /opt/script/sync_platform_dev.sh
3. 定时任务 crontab
crontab -e
bash
0 2 * * * /opt/script/sync_platform_dev.sh
含义:每天凌晨 02:00 自动执行覆盖同步
九、防火墙/安全组放行端口
bash
firewall-cmd --add-port=80/tcp --permanent
firewall-cmd --add-port=443/tcp --permanent
firewall-cmd --reload
云服务器安全组必须放行:80、443
内网端口:3306、6379 仅本地监听,无需对外开放,保障安全
十、项目访问地址
- 正式访问域名 :https://platform.px.icoolkj.com
- 后端接口:Nginx 自动代理 /api 请求至后端8080端口
- 演示库机制:每日凌晨2点自动同步正式库全量数据
十一、日常维护命令汇总
1. 后端服务
bash
systemctl start/stop/restart/status icoolkj-admin-api
journalctl -u icoolkj-admin-api -f
2. Nginx
bash
nginx -t
nginx -s reload
3. Redis 服务
bash
systemctl start/stop/restart/status redis
redis-cli -a test
4. 数据库同步日志查看
bash
tail -f /opt/script/sync_dev_log.log
十二、常见问题总结
- Nginx显示默认页面:缺少 default_server、server_name 不匹配、未引入vhost配置
- 接口404:proxy_pass 斜杠配置错误、后端服务端口不一致
- 502异常:后端jar服务未启动、端口未监听
- 脚本执行二进制错误:Windows换行符导致,执行 dos2unix 修复脚本格式
- MySQL同步报错:mysqldump 参数顺序错误、数据库密码配置错误
- 项目缓存/登录异常:Redis未启动、密码配置不匹配
十三、全套软件官方/高速下载地址(本次部署对应版本)
1. Nginx 1.26.2(稳定版源码)
官网下载页:https://nginx.org/en/download.html
一键wget下载:
bash
wget https://nginx.org/download/nginx-1.26.2.tar.gz
2. JDK21 Temurin(开源免费商用、清华镜像高速)
镜像下载页:Index of /Adoptium/21/ | 清华大学开源软件镜像站 | Tsinghua Open Source Mirror
本次部署对应版本一键下载:
bash
wget https://mirrors.tuna.tsinghua.edu.cn/Adoptium/21/jdk/x64/linux/OpenJDK21U-jdk_x64_linux_hotspot_21.0.11_9.tar.gz
3. MySQL 8.4.10(glibc2.28 x86_64 官方二进制包)
官方下载页:https://dev.mysql.com/downloads/mysql/8.4.html
4. Redis 稳定版(官方源码)
所有稳定版本:https://download.redis.io/releases/
5. HTTPS 免费证书申请工具 acme.sh
项目地址:https://github.com/acmesh-official/acme.sh
一键安装:
bash
curl https://get.acme.sh | sh