3、核心依赖安装:JDK 11/17 安装与配置、MySQL 8.0 数据库安装与调优、Redis 6.x 缓存服务部署

好,咱们进入正题。一个在线学习系统,说白了就是「数据进来、存起来、再快速取出去」。这三板斧,全靠 JDK、MySQL 和 Redis 撑着。我这些年部署过的项目,十有八九的坑都出在这三个家伙身上。今天咱们就把它捋顺了。

核心逻辑图: 下面这张图,是我自己画的一个依赖关系。你看一眼,心里就有谱了。

在线学习系统核心依赖架构 JDK 11 / 17 Java 运行环境 MySQL 8.0 持久化存储 Redis 6.x 缓存加速 应用层基石 数据持久化 高性能缓存 三者协同,缺一不可

3.1 JDK 11/17 安装与配置

先说 JDK。为什么我推荐 11 或 17?因为这两个都是 LTS 版本,稳定、社区支持好。我个人习惯用 17,新特性多,性能也有提升。但如果你项目里有些老框架,11 更稳妥。

安装步骤(以 CentOS 7 为例):

  1. 下载:去 Oracle 官网或 Adoptium 下载 tar.gz 包。我一般用 Adoptium,开源免费。
  2. 解压tar -zxvf jdk-17_linux-x64.tar.gz -C /usr/local/
  3. 配置环境变量:编辑 /etc/profile,在末尾加上:
export JAVA_HOME=/usr/local/jdk-17
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
  1. 生效并验证source /etc/profile && java -version

我的小技巧: 配置完环境变量后,记得用 echo $JAVA_HOME 检查一下。我曾经遇到过明明配了,但路径写错了,结果编译时一直报错,找了半天才发现是少了个斜杠。

避坑指南: 如果你系统里装了多个 JDK 版本,一定要用 alternatives --config java 设置默认版本。否则你调用的可能是旧版,新项目跑不起来。

3.2 MySQL 8.0 数据库安装与调优

MySQL 8.0 比 5.7 强在哪?默认字符集是 utf8mb4,支持窗口函数,性能也有提升。我建议直接上 8.0,别犹豫。

安装步骤:

  1. 添加官方 YUM 源rpm -Uvh https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm
  2. 安装yum install mysql-community-server -y
  3. 启动并设置开机自启systemctl start mysqld && systemctl enable mysqld
  4. 获取临时密码grep 'temporary password' /var/log/mysqld.log
  5. 安全配置mysql_secure_installation,按提示设置新密码、删除匿名用户等。

调优参数(核心):

参数名 推荐值 说明
innodb_buffer_pool_size 物理内存的 70% InnoDB 缓存池,越大越好
innodb_log_file_size 512M 事务日志大小,减少刷盘频率
max_connections 500 最大连接数,根据并发调整
query_cache_type 0 8.0 已废弃,直接关闭

重点: 修改 /etc/my.cnf 后,一定要重启 MySQL:systemctl restart mysqld。我见过有人改了配置不重启,然后说「怎么没效果?」——嗯,你想想看,配置都没加载,怎么可能有效果?

3.3 Redis 6.x 缓存服务部署

Redis 6.x 引入了多线程 I/O、ACL 权限控制,还有 RESP3 协议。对于咱们这个在线学习系统,主要用它来缓存用户会话、课程列表、热点数据。

安装步骤:

  1. 下载源码wget https://download.redis.io/releases/redis-6.2.6.tar.gz
  2. 编译安装
tar -zxvf redis-6.2.6.tar.gz
cd redis-6.2.6
make && make install PREFIX=/usr/local/redis
  1. 配置:复制 redis.conf 到安装目录,修改以下关键项:
daemonize yes
bind 0.0.0.0
requirepass your_strong_password
maxmemory 2gb
maxmemory-policy allkeys-lru
  1. 启动/usr/local/redis/bin/redis-server /usr/local/redis/redis.conf

我的经验: 设置 maxmemory-policy allkeys-lru 很重要。为什么呢?因为如果不设置,内存满了 Redis 会直接报错,拒绝写入。我遇到过线上服务突然挂掉,查了半天发现是 Redis 内存满了,所有写请求都失败了。从那以后,我每次部署都会检查这个参数。

安全提醒: 生产环境一定要设置 requirepass,并且不要用弱密码。另外,bind 0.0.0.0 只在你确定网络环境安全时使用,否则建议绑定内网 IP。

好了,三个核心依赖装完了。JDK 是地基,MySQL 是仓库,Redis 是快递员。三者配合好了,系统才能跑得稳、跑得快。下一节咱们聊聊应用部署,到时候这些配置都会用上。