2. 开发环境准备:Linux基础、Docker与Docker Compose安装、JDK与Maven配置、IDE推荐与插件

说实话,做实时推荐平台,环境搭不好,后面全是坑。我见过太多人代码写得很漂亮,结果部署时环境不一致,跑都跑不起来。这一章,咱们就把地基打牢。

2.1 Linux基础:你不需要成为运维专家

实时推荐平台几乎都跑在Linux上。你不需要精通内核调优,但下面这些操作得顺手。

核心技能清单:

  • 文件操作:ls、cd、cp、mv、rm、find
  • 权限管理:chmod、chown、useradd
  • 进程管理:ps、top、kill、systemctl
  • 网络排查:netstat、curl、ping、ss
  • 文本处理:grep、awk、sed、vim

我个人习惯用Ubuntu 20.04 LTS或CentOS 7。如果你用Mac,大部分命令也通用。Windows用户建议装个WSL2,体验会好很多。

避坑指南:我曾经在生产环境上因为rm -rf手滑删了数据目录。从那以后,我所有危险操作前都先ls确认一遍,再mv到回收站目录,而不是直接删。

2.2 Docker与Docker Compose安装

Docker是咱们这套平台的基石。为什么?因为实时推荐涉及多个组件——Kafka、Redis、Flink、MongoDB……一个个手动装,你会疯掉的。Docker Compose一键搞定。

2.2.1 安装Docker

官方推荐用脚本安装,干净利落:

# 卸载旧版本(如果有)
sudo apt-get remove docker docker-engine docker.io containerd runc

# 安装依赖
sudo apt-get update
sudo apt-get install ca-certificates curl gnupg lsb-release

# 添加Docker官方GPG密钥
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg

# 设置稳定版仓库
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

# 安装Docker Engine
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io

# 验证安装
sudo docker run hello-world

看到Hello World输出,说明装好了。然后记得把当前用户加入docker组,省得每次敲sudo:

sudo usermod -aG docker $USER
# 退出重新登录,或者执行 newgrp docker

2.2.2 安装Docker Compose

Docker Compose是编排工具。咱们后面会用docker-compose.yml一次性拉起整个集群。

# 下载最新稳定版
sudo curl -L "https://github.com/docker/compose/releases/download/v2.20.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

# 赋予执行权限
sudo chmod +x /usr/local/bin/docker-compose

# 验证
docker-compose --version

注意:Docker Compose V2已经集成到Docker CLI中,可以用docker compose(无横杠)命令。但我建议你显式安装独立版本,兼容性更好。我在项目中遇到过V1和V2语法差异导致的坑,所以统一用V2。

2.3 JDK与Maven配置

实时推荐平台后端用Java/Scala开发,JDK是必须的。Maven用来管理依赖和构建。

2.3.1 安装JDK 8/11

推荐用JDK 8或11。Flink和Kafka对JDK 8支持最好,但JDK 11性能更优。我建议你两个都装,用update-alternatives切换。

# 安装OpenJDK 8
sudo apt-get install openjdk-8-jdk

# 安装OpenJDK 11
sudo apt-get install openjdk-11-jdk

# 配置默认版本
sudo update-alternatives --config java

# 验证
java -version

设置JAVA_HOME环境变量:

# 编辑 ~/.bashrc 或 ~/.zshrc
export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64
export PATH=$JAVA_HOME/bin:$PATH

# 生效
source ~/.bashrc

个人经验:我习惯在/opt下建一个jdk8和jdk11目录,把解压后的JDK放进去。这样切换版本时只需要改JAVA_HOME指向,干净又灵活。

2.3.2 配置Maven

Maven用来编译、打包、管理依赖。咱们的推荐平台依赖很多第三方库,Maven是标配。

# 下载Maven 3.8.x
wget https://dlcdn.apache.org/maven/maven-3/3.8.8/binaries/apache-maven-3.8.8-bin.tar.gz

# 解压到 /opt
sudo tar -zxvf apache-maven-3.8.8-bin.tar.gz -C /opt
sudo mv /opt/apache-maven-3.8.8 /opt/maven

# 配置环境变量
export MAVEN_HOME=/opt/maven
export PATH=$MAVEN_HOME/bin:$PATH

# 验证
mvn -version

然后配置阿里云镜像,不然下载依赖慢到怀疑人生:

<!-- ~/.m2/settings.xml -->
<mirrors>
    <mirror>
        <id>aliyunmaven</id>
        <mirrorOf>*</mirrorOf>
        <name>阿里云公共仓库</name>
        <url>https://maven.aliyun.com/repository/public</url>
    </mirror>
</mirrors>

注意:Maven的settings.xml有两个位置:全局$MAVEN_HOME/conf/settings.xml和用户级~/.m2/settings.xml。用户级优先级更高。我建议你配用户级的,不影响其他同事。

2.4 IDE推荐与插件

IDE我推荐IntelliJ IDEA,没有之一。Eclipse也能用,但IDEA对Scala、Flink、Spring Boot的支持好太多。

2.4.1 安装IntelliJ IDEA

下载Community版(免费)或Ultimate版(付费,学生免费)。咱们做实时推荐,Ultimate版对Spring Boot和数据库支持更好,但Community版也够用。

# 下载IDEA Community版
wget https://download.jetbrains.com/idea/ideaIC-2023.2.5.tar.gz

# 解压到 /opt
sudo tar -zxvf ideaIC-2023.2.5.tar.gz -C /opt

# 启动
/opt/idea-IC-232.10227.8/bin/idea.sh

2.4.2 必装插件

这些插件能让你效率翻倍:

插件名称 用途 推荐指数
Lombok 减少getter/setter样板代码 ⭐⭐⭐⭐⭐
Scala Scala语言支持(Flink开发必备) ⭐⭐⭐⭐⭐
Rainbow Brackets 括号着色,嵌套代码一眼看清 ⭐⭐⭐⭐
GitToolBox Git状态显示、分支管理增强 ⭐⭐⭐⭐
Docker 在IDEA内管理Docker容器 ⭐⭐⭐⭐
Maven Helper 分析依赖冲突,一键排除 ⭐⭐⭐⭐⭐

核心建议:Maven Helper一定要装。实时推荐平台的依赖树很复杂,Kafka、Flink、Hadoop各版本之间经常冲突。这个插件能帮你快速定位是哪个jar包在捣乱。

2.5 本章知识体系总览

下面这张图把咱们这章的内容串起来了。你对照着看,心里就有谱了。

开发环境准备知识体系 Linux基础 Docker & Compose JDK & Maven IntelliJ IDEA 文件操作 权限管理 进程管理 网络排查 Docker Engine Docker Compose docker-compose.yml JDK 8/11 JAVA_HOME Maven 阿里云镜像 Lombok Scala插件 Maven Helper Docker插件 💡 核心思路 环境一致性是实时推荐 平台稳定运行的基石 Docker + Maven 统一管理

嗯,到这步,你的开发环境就准备好了。Linux基础操作顺手了,Docker能跑容器了,JDK和Maven也配好了,IDEA装上了趁手的插件。接下来,咱们就可以开始真正搭建推荐平台的核心组件了。