环境准备:JDK21+Node+MySQL+RabbitMQ 一站式安装

举报
哈基米 发表于 2026/10/31 19:32:33 2026/10/31
【摘要】 上一篇聊完技术选型,这篇终于要动手搭环境了。我写这篇的时候,刚把三台云服务器的开发环境重装了一遍,踩坑数量够开一本《环境配置血泪史》。这篇文章把我装 JDK21、Node.js、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 用起来。

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0)

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。