Ubuntu22.04(Linux)源码编译安装 RocketMQ 和 RocketMQ-Dashboard

2,619 阅读5分钟

本文基于腾讯云新加坡 2H4G 服务器。连接服务器的软件用的是 termius

⚠️警告 Warning:

由于克隆仓库最新的源码编译安装 RocketMQ,可能有潜在的Bug或风险,建议不要在生产环境这么做。我只是用来学习,所以即使有潜在的 Bug 我也没什么损失😎

编译安装 RocketMQ

克隆 RocketMQ Github 仓库 github.com/apache/rock…

git clone https://github.com/apache/rocketmq.git

安装 Java 环境

sudo apt update
sudo apt install openjdk-11-jdk

安装完成后,配置 Java 环境变量。

nano ~/.bashrc

ALT + / 跳转到最后,在最后几行添加

export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64         
export PATH=$PATH:$JAVA_HOME/bin

Ctrl + X,然后输入 y,再按回车保存退出。

接着更新一下环境变量

source ~/.bashrc

安装 Maven

sudo apt install maven

进入刚刚 clone 下来的 rocketmq 目录,并用 maven 编译。关于 build 命令的更多问题可以看 官方GitHub仓库Build说明

cd rocketmq/
mvn -Prelease-all -DskipTests clean install -U

接下来就是等待编译完成,当看到像下图一样的时候就是编译成功了。

image.png

~/rocketmq/distribution/target/rocketmq-5.0.1-SNAPSHOT/rocketmq-5.0.1-SNAPSHOT/ 目录下可以看到编译结果。将这个文件夹复制到用户根目录下,并重命名为rocketmq-5.0.1。

cd ~
cp -r ~/rocketmq/distribution/target/rocketmq-5.0.1-SNAPSHOT/rocketmq-5.0.1-SNAPSHOT ~/rocketmq-5.0.1

接下来将这个 rocketmq-5.0.1 文件夹添加到环境变量

nano ~/.bashrc

ALT + / ,在最后几行加入

export ROCKETMQ_HOME=~/rocketmq-5.0.1
export PATH=$PATH:$ROCKETMQ_HOME/bin

Ctrl + X ,按y,然后回车保存。

然后更新一下环境变量

source ~/.bashrc

验证刚刚配置的环境变量是否生效

echo $ROCKETMQ_HOME

像下图这样就是生效了。

image.png

启动 NameServer

建立一个新的 screen 使 mqnamesrv 后台运行,命名为 mqname

screen -S mqname

在新的 screen 中 cd 进入刚刚复制过来的 rocketmq-5.0.1 文件夹中的 bin 目录

cd rocketmq-5.0.1/bin/

启动 Name Server 服务

sh mqnamesrv

出现以下报错

image.png

原因是 mqnamesrv 默认配置的 jvm 虚拟机内存比较大,我这台 4G 内存的服务器就不能直接运行。接下来

nano runserver.sh

找到下图这两个地方,将它们改成 512m

image.png

改完后 Ctrl + X ,按y,然后回车保存

改完之后是下图这样的

image.png

再次启动 Name Server 服务

sh mqnamesrv

如下图所示, Name Server 成功启动 image.png

Ctrl + A + D 退出 mqname 这个 screen

通过下面命令查看 NameServer 运行状态(Tip:jps 是 jdk 提供的一个查看当前 java 进程的小工具)

jps -l

image.png

启动 Broker

同样的,建立一个新的 screen 使 mqbroker 后台运行,命名为 mqbroker

screen -S mqbroker

然后

cd ~/rocketmq-5.0.1/bin/
sh mqbroker -n localhost:9876

出现以下报错,原因同样是默认配置的 jvm 虚拟机内存比较大:

image.png

输入命令

nano runbroker.sh

找到下图这个地方,将它改成 512m ,改完后Ctrl + X ,按y,然后回车保存。

image.png

更改后应该像下图这样:

image.png

再次启动Broker

sh mqbroker -n localhost:9876

从下图可以看到 Broker 成功启动。

image.png

最后,按 Ctrl + A + D 退出这个 screen

额外提一嘴:可以用 screen -list 命令查看刚才创建的两个 screen,像下图这样:

image.png

要想返回某个 screen 可以用 screen -r 你起的名称 命令,比如我想返回 mqname 这个 screen ,可以 screen -r mqname

如果你不习惯用 screen ,用 nohup 也是可以的,就是在启动 NameServerBroker 的命令分别换成 nohup sh mqnamesrv &nohup sh mqbroker -n localhost:9876 &

此外,还可以用下面的命令查看日志

tail -f ~/logs/rocketmqlogs/broker.log

模拟发送消息和消费消息验证功能是否正常

再次通过下面命令查看 NameServer 和 Broker 运行状态

jps -l

image.png

目前我们 NameServer 和 Broker 都已经启动成功,应该可以进行发送和消费消息了。RocketMQ 默认提供了一个模拟发送消息和消费消息的测试类,我们来验证一下。

cd rocketmq-5.0.1/bin/
sh tools.sh org.apache.rocketmq.example.quickstart.Producer

又出现报错了 image.png

这时候需要我们设置一个临时环境变量(或者直接加到 ~/.bashrc 文件后面)

Ctrl + C 终止脚本,然后执行下面的命令

export NAMESRV_ADDR=localhost:9876

然后再次启动 Producer(生产者)

sh tools.sh org.apache.rocketmq.example.quickstart.Producer

看到下图这样就是说明消息投递成功。

image.png

接下来就是启动 Consumer(消费者)

sh tools.sh org.apache.rocketmq.example.quickstart.Consumer

像下图这样就是消费成功了。

image.png

加餐:安装Dashboard

Dashboard 是由 RocketMQ 官方提供的组件,它能够给我们的集群提供一个可视化的界面,来帮我们更好的运维、监控整个集群。

rocket-dashboard 的前身是在 rocketmq-externals 里的 rocketmq-console,现在,rocketmq-console 这个项目已经被重命名、并且挪到了新的仓库中去了。

分别执行以下几行命令

git clone https://github.com/apache/rocketmq-dashboard.git
cd rocketmq-dashboard/
mvn clean package -Dmaven.test.skip=true

然后等待编译完成,像下图这样:

image.png

然后新建一个 screen,命名为 dashboard

screen -S dashboard

然后执行以下命令。如果运行不了,检查一下当前是不是在 ~/rocketmq-dashboard 目录下

java -jar target/rocketmq-dashboard-1.0.1-SNAPSHOT.jar

出现下图这样的 Spring 标志说明启动成功。

image.png

默认端口是 8080,去腾讯云服务器控制台中的 防火墙 将端口 8080 添加进规则,然后在浏览器输入 你的公网IP:8080 访问 Dashboard

(Tip:英语不好的小伙伴不用怕,右上角可以更换成中文)

最终看到下图这样就安装成功啦!

image.png

点进 集群,可以看到刚刚测试的 1000 条消息。

image.png

给 Dashboard 添加登录验证

cd ~/rocketmq-dashboard/
nano src/main/resources/application.yml

找到下图中的 loginRequired,将 false 改成 trueimage.png

然后添加管理员

格式:每行定义一个用户,username=password[,N]

N 是可选项,可以为 0(普通用户); 1(管理员)

image.png

修改完后保存退出。然后重新编译。

mvn clean package -Dmaven.test.skip=true

再启动

java -jar target/rocketmq-dashboard-1.0.1-SNAPSHOT.jar

这时候就需要账号密码才能进仪表盘了。

image.png

都看到这里了,点个赞再走呗。