环境准备:JDK21+Node+MySQL+RabbitMQ 一站式安装
上一篇聊完技术选型,这篇终于要动手搭环境了。我写这篇的时候,刚把三台云服务器的开发环境重装了一遍,踩坑数量够开一本《环境配置血泪史》。这篇文章把我装 JDK21、Node.js、MySQL 和 RabbitMQ 的完整流程和踩坑点整理出来,尽量让你一次过。
JDK21:别再用淘宝镜像了
我在 Oracle 官网下 JDK21 压缩包的时候,默认选了 x64 的 .tar.gz。解压后把 JAVA_HOME 和 PATH 配到 /etc/profile 里, source 生效。
sudo mkdir -p /usr/lib/jvm
sudo tar -xzf jdk-21_linux-x64_bin.tar.gz -C /usr/lib/jvm/
echo 'export JAVA_HOME=/usr/lib/jvm/jdk-21' | sudo tee -a /etc/profile
echo 'export PATH=$JAVA_HOME/bin:$PATH' | sudo tee -a /etc/profile
source /etc/profile
java -version
踩坑点:tar 解压路径如果写成 /usr/lib/jvm/ 而不是 /usr/lib/jvm/,会在里面再套一层目录,导致 java 命令找不到。我第一次装的时候就犯了这个错,排了半小时。
另一个坑:Ubuntu 22.04 自带的 openjdk-17-jdk 没卸干净,update-alternatives 还指向 17。java -version 显示 21,但 javac -version 还是 17。解决办法是用 update-alternatives --config java 手动选一次,或者直接 apt remove openjdk-17-*。
Node.js:LTS 就够了,别追最新
我一般选 LTS 版本,现在 20.x 是长期支持线。用 nvm 装最方便,能随时切版本。
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash
source ~/.bashrc
nvm install --lts
nvm use --lts
node -v
npm -v
踩坑点:nvm 安装脚本跑完后,SSH 重新登录发现 nvm 命令不存在。原因是 source ~/.bashrc 没生效,或者你用的是 zsh 而不是 bash。nvm 会把初始化代码加到 ~/.bashrc 里,但你用的是 zsh 的话,需要手动把那段 export NVM_DIR 变量赋值的代码复制到 zsh 的 rc 文件里。我当时没注意 shell 类型,查了半天。
还有,npm 全局安装的包默认在 ~/.npm-global,如果不在 PATH 里,vue、vite 这些命令会报 command not found。解决方案是 npm config set prefix '~/.npm-global',然后加到 PATH。
MySQL:8.0 的认证插件坑死人
MySQL 我习惯用 apt 装,简单直接。Ubuntu 22.04 源里一般是 8.0 版本。
sudo apt update
sudo apt install mysql-server
sudo systemctl start mysql
sudo mysql_secure_installation
踩坑点:MySQL 8.0 默认的认证插件是 caching_sha2_password,但老版本的 Java 驱动(比如 5.x 的 mysql-connector)认不出来,连接报 Authentication plugin 'caching_sha2_password' cannot be loaded。
解决办法有两个:要么升级 Java 驱动到 8.0.33+,要么改用户认证方式。我选了改用户:
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '你的密码';
FLUSH PRIVILEGES;
另外提醒一句,mysql_secure_installation 会让你设置 root 密码、删匿名用户、禁远程登录。开发环境建议全选 YES,省得后面被扫。
RabbitMQ:Erlang 版本要对上
RabbitMQ 依赖 Erlang,版本必须匹配。我一般直接装官方源里的包,别用 apt 默认的,版本太老。
sudo apt install erlang-nox
echo "deb https://packagecloud.io/rabbitmq/rabbitmq-server/ubuntu/ $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/rabbitmq.list
curl -fsSL https://packagecloud.io/rabbitmq/rabbitmq-server/gpgkey | sudo apt-key add -
sudo apt update
sudo apt install rabbitmq-server
sudo systemctl enable --now rabbitmq-server
sudo rabbitmq-plugins enable rabbitmq_management
踩坑点:Erlang 版本和 RabbitMQ 版本不匹配的时候,rabbitmq-server 启动直接失败,journalctl -u rabbitmq-server 里报 beam.smp 相关错误。RabbitMQ 官方文档有版本对应表,一定要先看。我上次图快装了最新 RabbitMQ,结果 Erlang 版本差了一级,启动不了。
还有,开启管理插件后,浏览器访问 http://localhost:15672,默认账号密码都是 guest,但 3.8+ 版本后 guest 只能从 localhost 访问。如果你要在虚拟机里用宿主机浏览器访问,需要新建一个用户,或者改配置允许 guest 远程登录。
一键验证脚本
四个都装完,我用这个小脚本来验证环境是否就绪:
#!/bin/bash
echo "=== Java ===" && java -version 2>&1 | head -1
echo "=== Node ===" && node -v && npm -v
echo "=== MySQL ===" && mysql --version
echo "=== RabbitMQ ===" && rabbitmqctl status | grep "RabbitMQ" | head -1
跑一遍,四个都输出版本号就说明没问题。如果某个命令报 command not found,大概率是 PATH 没配对,回头检查 profile 文件的 source 有没有生效。
写在最后
环境装不好,后面写代码的心情都会受影响。我建议把安装步骤写成脚本,下次换机器直接跑。这篇文章的代码块都是我实际用过的,不是文档复制粘贴,踩坑点也都是我亲身经历过的。如果中间某个环节卡住了,大概率是版本不匹配,先查官方文档的兼容表,比 Google 快。
下一篇文章,我们正式开始 Spring Boot 项目初始化,把今天装好的 JDK21 用起来。
- 点赞
- 收藏
- 关注作者
评论(0)