3、核心依赖安装:JDK 11/17 安装与配置、MySQL 8.0 数据库安装与调优、Redis 6.x 缓存服务部署
好,咱们进入正题。一个在线学习系统,说白了就是「数据进来、存起来、再快速取出去」。这三板斧,全靠 JDK、MySQL 和 Redis 撑着。我这些年部署过的项目,十有八九的坑都出在这三个家伙身上。今天咱们就把它捋顺了。
核心逻辑图: 下面这张图,是我自己画的一个依赖关系。你看一眼,心里就有谱了。
3.1 JDK 11/17 安装与配置
先说 JDK。为什么我推荐 11 或 17?因为这两个都是 LTS 版本,稳定、社区支持好。我个人习惯用 17,新特性多,性能也有提升。但如果你项目里有些老框架,11 更稳妥。
安装步骤(以 CentOS 7 为例):
- 下载:去 Oracle 官网或 Adoptium 下载 tar.gz 包。我一般用 Adoptium,开源免费。
- 解压:
tar -zxvf jdk-17_linux-x64.tar.gz -C /usr/local/ - 配置环境变量:编辑
/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
- 生效并验证:
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,别犹豫。
安装步骤:
- 添加官方 YUM 源:
rpm -Uvh https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm - 安装:
yum install mysql-community-server -y - 启动并设置开机自启:
systemctl start mysqld && systemctl enable mysqld - 获取临时密码:
grep 'temporary password' /var/log/mysqld.log - 安全配置:
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 协议。对于咱们这个在线学习系统,主要用它来缓存用户会话、课程列表、热点数据。
安装步骤:
- 下载源码:
wget https://download.redis.io/releases/redis-6.2.6.tar.gz - 编译安装:
tar -zxvf redis-6.2.6.tar.gz
cd redis-6.2.6
make && make install PREFIX=/usr/local/redis
- 配置:复制
redis.conf到安装目录,修改以下关键项:
daemonize yes
bind 0.0.0.0
requirepass your_strong_password
maxmemory 2gb
maxmemory-policy allkeys-lru
- 启动:
/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 是快递员。三者配合好了,系统才能跑得稳、跑得快。下一节咱们聊聊应用部署,到时候这些配置都会用上。