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能跑容器了,JDK和Maven也配好了,IDEA装上了趁手的插件。接下来,咱们就可以开始真正搭建推荐平台的核心组件了。