文章目录
版本说明
RabbitMq 3.8.3 版本对应Erlang 22.3
RabbitMq-3.8.3及Erlang 22.3
链接: https://pan.baidu.com/s/1_TY4drZjXjGcOQedSpRpBA?pwd=6tsd
提取码: 6tsd
一、安装 Erlang
1、下载 Erlang 22.3
[root@root mq]# wget http://erlang.org/download/otp_src_22.3.tar.gz
2、解压并编译安装
# 解压erlang安装包
[root@root mq]# tar -zxvf otp_src_22.3.tar.gz
进入目录
cd otp_src_22.3/
编译安装
[root@root otp_src_22.3]# ./otp_build autoconf
[root@root otp_src_22.3]# ./configure && make && sudo make install

等待安装完成,如果在 ./configure && make && sudo make install 安装过程中 碰到
configure: error: No curses library functions found
ERROR: /usr/local/waves/mq/otp_src_22.3/erts/configure failed!
已杀死、
原因:编译 Erlang 源码时缺少 curses 库,该库用于构建 Erlang 的交互式终端界面和文档生成工具。在 Kylin Linux V10 中,curses 开发库一般由 ncurses-devel 包提供。
安装 curses 即可,重新编译安装即可
# 安装 curses
[root@root otp_src_22.3]# sudo yum install -y ncurses-devel
# 再次执行,等待安装完成
[root@root otp_src_22.3]# ./configure && make && sudo make install

3、安装完成验证
[root@root lib]# erl -version
Erlang (SMP,ASYNC_THREADS,HIPE) (BEAM) emulator version 10.7
[root@root lib]# erl
Erlang/OTP 22 [erts-10.7] [source] [64-bit] [smp:4:4] [ds:4:4:10] [async-threads:1] [hipe]
Eshell V10.7 (abort with ^G)
1>
二、安装RabbMq
1、下载RabbitMq
#直接访问链接下载上传Linux服务器
https://github.com/rabbitmq/rabbitmq-server/releases/download/v3.8.3/rabbitmq-server-generic-unix-3.8.3.tar.xz
#或者直接
wget https://github.com/rabbitmq/rabbitmq-server/releases/download/v3.8.3/rabbitmq-server-generic-unix-3.8.3.tar.xz
注意: 下载的是xz格式的文件,xz 是一种高效的压缩文件格式,基于 LZMA2 压缩算法,具有较高的压缩比,常用于压缩源代码、文档等文件。压缩后的文件体积通常比 zip、tar.gz 等格式更小,但压缩和解压过程对 CPU 资源消耗相对较高。在 Unix/Linux 系统中较为常见,许多开源软件的安装包(如 RabbitMQ 安装包)会采用这种格式发布。
2、解压与安装
# 解压 rabbitmq 安装包
xz -d rabbitmq-server-generic-unix-3.8.3.tar.xz
tar -xvf rabbitmq-server-generic-unix-3.8.3.tar

配置Mq 环境变量
编辑profile 增加Mq 路径
vim /etc/profile
# 在文件最后添加
export PATH=$PATH:/usr/local/lib/erlang/bin:/usr/local/waves/mq/rabbitmq_server-3.8.3/sbin
#添加后
Esc
:wq! #保存并退出
# 刷新配置文件
source /etc/profile
3、开启web端插件
[root@root ~]# rabbitmq-plugins enable rabbitmq_management
Enabling plugins on node rabbit@root:
rabbitmq_management
The following plugins have been configured:
rabbitmq_management
rabbitmq_management_agent
rabbitmq_web_dispatch
Applying plugin configuration to rabbit@root...
The following plugins have been enabled:
rabbitmq_management
rabbitmq_management_agent
rabbitmq_web_dispatch
set 3 plugins.
Offline change; changes will take effect at broker restart.
[root@root ~]#
4、启动RabbitMq
# 前台运行
[root@root sbin]# ./rabbitmq-server
# 后台运行
[root@root sbin]# ./rabbitmq-server -detached

5、验证是否启动
[root@root sbin]# ps -ef | grep rabbitmq
root 63045 62132 0 16:26 pts/1 00:00:00 /bin/sh /usr/local/waves/mq/rabbitmq_server-3.8.3/sbin/rabbitmq-server
root 63199 63045 3 16:26 pts/1 00:00:05 /usr/local/lib/erlang/erts-10.7/bin/beam.smp -W w -A 64 -MBas ageffcbf -MHas ageffcbf -MBlmbcs 512 -MHlmbcs 512 -MMmcs 30 -P 1048576 -t 5000000 -stbt db -zdbbl 128000 -K true -B i -- -root /usr/local/lib/erlang -progname erl -- -home /root -- -pa /usr/local/waves/mq/rabbitmq_server-3.8.3/ebin -noshell -noinput -s rabbit boot -sname rabbit@root -boot start_sasl -kernel inet_default_connect_options [{nodelay,true}] -sasl errlog_type error -sasl sasl_error_logger false -rabbit lager_log_root "/usr/local/waves/mq/rabbitmq_server-3.8.3/var/log/rabbitmq" -rabbit lager_default_file "/usr/local/waves/mq/rabbitmq_server-3.8.3/var/log/rabbitmq/rabbit@root.log" -rabbit lager_upgrade_file "/usr/local/waves/mq/rabbitmq_server-3.8.3/var/log/rabbitmq/rabbit@root_upgrade.log" -rabbit feature_flags_file "/usr/local/waves/mq/rabbitmq_server-3.8.3/var/lib/rabbitmq/mnesia/rabbit@root-feature_flags" -rabbit enabled_plugins_file "/usr/local/waves/mq/rabbitmq_server-3.8.3/etc/rabbitmq/enabled_plugins" -rabbit plugins_dir "/usr/local/waves/mq/rabbitmq_server-3.8.3/plugins" -rabbit plugins_expand_dir "/usr/local/waves/mq/rabbitmq_server-3.8.3/var/lib/rabbitmq/mnesia/rabbit@root-plugins-expand" -os_mon start_cpu_sup false -os_mon start_disksup false -os_mon start_memsup false -mnesia dir "/usr/local/waves/mq/rabbitmq_server-3.8.3/var/lib/rabbitmq/mnesia/rabbit@root" -ra data_dir "/usr/local/waves/mq/rabbitmq_server-3.8.3/var/lib/rabbitmq/mnesia/rabbit@root/quorum" -kernel inet_dist_listen_min 25672 -kernel inet_dist_listen_max 25672 --
root 63758 2272 0 16:28 pts/0 00:00:00 grep --color=auto rabbitmq
6、使用命令添加用户
命令添加用户的条件Mq必须正在运行。例如添加 admin
#添加用户
#rabbitmqctl add_user 账号 密码
rabbitmqctl add_user admin admin
[root@root sbin]# ./rabbitmqctl add_user admin admin
Adding user "admin" ...
#分配用户标签,给admin账号分配 administrator 标签
rabbitmqctl set_user_tags admin administrator
[root@root sbin]# ./rabbitmqctl set_user_tags admin administrator
Setting tags for user "admin" to [administrator] ...
#设置访问权限
rabbitmqctl set_permissions -p "/" admin ".*" ".*" ".*"
[root@root sbin]# ./rabbitmqctl set_permissions -p "/" admin ".*" ".*" ".*"
Setting permissions for user "admin" in vhost "/" ...
最后使用admin 账号登录进行测试

三、开放防火墙端口
# 查询已开放的端口
[root@root sbin]# firewall-cmd --list-ports
3306/tcp
# 开放 15672端口,web管理端访问端口
[root@root sbin]# firewall-cmd --add-port=15672/tcp --permanent
success
# 开放 5672 ,Java等程序连接端口
[root@root sbin]# firewall-cmd --add-port=5672/tcp --permanent
success
# 重载防火墙配置
[root@root sbin]# firewall-cmd --reload
success
四、配置开机自启
在 /etc/systemd/system 新建 rabbitmq-server.service
写入一下内容
[root@root system]# vim rabbitmq-server.service
[Unit]
Description=RabbitMQ Messaging Server
After=network.target
[Service]
Type=forking
User=root
Group=root
# erlang 安装地址
Environment="PATH=/usr/local/erlang/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
# rabbitmq 安装地址
ExecStart=/usr/local/waves/mq/rabbitmq_server-3.8.3/sbin/rabbitmq-server -detached
ExecStop=/usr/local/waves/mq/rabbitmq_server-3.8.3/sbin/rabbitmqctl stop
Restart=on-failure
TimeoutStopSec=60
TimeoutStartSec=60
LimitNOFILE=65536
[Install]
WantedBy=multi-user.target
补充点:
配置了Type=forking , mq 需要用后台方式启动运行,启动命令后需加上
-detached,否则会造成mq循环一直重启。
循环重启日志:
10月 31 15:35:05 root rabbitmq-server[220589]: ###### ##
10月 31 15:35:05 root rabbitmq-server[220589]: ########## Licensed under the MPL 1.1. Website: https://rabbitmq.com
10月 31 15:35:05 root rabbitmq-server[220589]: Doc guides: https://rabbitmq.com/documentation.html
10月 31 15:35:05 root rabbitmq-server[220589]: Support: https://rabbitmq.com/contact.html
10月 31 15:35:05 root rabbitmq-server[220589]: Tutorials: https://rabbitmq.com/getstarted.html
10月 31 15:35:05 root rabbitmq-server[220589]: Monitoring: https://rabbitmq.com/monitoring.html
10月 31 15:35:05 root rabbitmq-server[220589]: Logs: /usr/local/waves/mq/rabbitmqServer383/var/log/rabbitmq/rabbit@root.log
10月 31 15:35:05 root rabbitmq-server[220589]: /usr/local/waves/mq/rabbitmqServer383/var/log/rabbitmq/rabbit@root_upgrade.log
10月 31 15:35:05 root rabbitmq-server[220589]: Config file(s): /usr/local/waves/mq/rabbitmqServer383/etc/rabbitmq/rabbitmq.conf
10月 31 15:35:05 root rabbitmq-server[220589]: Starting broker... completed with 5 plugins.
^C
[root@root system]# systemctl status rabbitmq-server.service
● rabbitmq-server.service - RabbitMQ Messaging Server
Loaded: loaded (/etc/systemd/system/rabbitmq-server.service; enabled; vendor preset: disabled)
Active: activating (start) since Fri 2025-10-31 15:34:59 CST; 1min 2s ago
Cntrl PID: 220421 (rabbitmq-server)
Tasks: 92
Memory: 94.9M
CGroup: /system.slice/rabbitmq-server.service
├─220421 /bin/sh /usr/local/waves/mq/rabbitmqServer383/sbin/rabbitmq-server
├─220530 /usr/local/lib/erlang/erts-10.7/bin/epmd -daemon
├─220589 /usr/local/lib/erlang/erts-10.7/bin/beam.smp -W w -A 64 -MBas ageffcbf -MHas ageffcbf -MBlmbcs 512 -MHlmbcs 512 -MMmcs 30 -P 1048576 -t 5000000 -stbt db -zdbbl 128000 -K true -B i -- -root /usr/local/lib/erl>
├─220693 erl_child_setup 65536
├─220817 inet_gethost 4
└─220818 inet_gethost 4
10月 31 15:35:05 root rabbitmq-server[220589]: ###### ##
10月 31 15:35:05 root rabbitmq-server[220589]: ########## Licensed under the MPL 1.1. Website: https://rabbitmq.com
10月 31 15:35:05 root rabbitmq-server[220589]: Doc guides: https://rabbitmq.com/documentation.html
10月 31 15:35:05 root rabbitmq-server[220589]: Support: https://rabbitmq.com/contact.html
10月 31 15:35:05 root rabbitmq-server[220589]: Tutorials: https://rabbitmq.com/getstarted.html
10月 31 15:35:05 root rabbitmq-server[220589]: Monitoring: https://rabbitmq.com/monitoring.html
10月 31 15:35:05 root rabbitmq-server[220589]: Logs: /usr/local/waves/mq/rabbitmqServer383/var/log/rabbitmq/rabbit@root.log
10月 31 15:35:05 root rabbitmq-server[220589]: /usr/local/waves/mq/rabbitmqServer383/var/log/rabbitmq/rabbit@root_upgrade.log
10月 31 15:35:05 root rabbitmq-server[220589]: Config file(s): /usr/local/waves/mq/rabbitmqServer383/etc/rabbitmq/rabbitmq.conf
10月 31 15:35:05 root rabbitmq-server[220589]: Starting broker... completed with 5 plugins.
...skipping...
● rabbitmq-server.service - RabbitMQ Messaging Server
Loaded: loaded (/etc/systemd/system/rabbitmq-server.service; enabled; vendor preset: disabled)
Active: activating (start) since Fri 2025-10-31 15:34:59 CST; 1min 2s ago
Cntrl PID: 220421 (rabbitmq-server)
Tasks: 92
Memory: 94.9M
CGroup: /system.slice/rabbitmq-server.service
├─220421 /bin/sh /usr/local/waves/mq/rabbitmqServer383/sbin/rabbitmq-server
├─220530 /usr/local/lib/erlang/erts-10.7/bin/epmd -daemon
├─220589 /usr/local/lib/erlang/erts-10.7/bin/beam.smp -W w -A 64 -MBas ageffcbf -MHas ageffcbf -MBlmbcs 512 -MHlmbcs 512 -MMmcs 30 -P 1048576 -t 5000000 -stbt db -zdbbl 128000 -K true -B i -- -root /usr/local/lib/erl>
├─220693 erl_child_setup 65536
├─220817 inet_gethost 4
└─220818 inet_gethost 4
10月 31 15:35:05 root rabbitmq-server[220589]: ###### ##
10月 31 15:35:05 root rabbitmq-server[220589]: ########## Licensed under the MPL 1.1. Website: https://rabbitmq.com
10月 31 15:35:05 root rabbitmq-server[220589]: Doc guides: https://rabbitmq.com/documentation.html
10月 31 15:35:05 root rabbitmq-server[220589]: Support: https://rabbitmq.com/contact.html
10月 31 15:35:05 root rabbitmq-server[220589]: Tutorials: https://rabbitmq.com/getstarted.html
10月 31 15:35:05 root rabbitmq-server[220589]: Monitoring: https://rabbitmq.com/monitoring.html
10月 31 15:35:05 root rabbitmq-server[220589]: Logs: /usr/local/waves/mq/rabbitmqServer383/var/log/rabbitmq/rabbit@root.log
10月 31 15:35:05 root rabbitmq-server[220589]: /usr/local/waves/mq/rabbitmqServer383/var/log/rabbitmq/rabbit@root_upgrade.log
10月 31 15:35:05 root rabbitmq-server[220589]: Config file(s): /usr/local/waves/mq/rabbitmqServer383/etc/rabbitmq/rabbitmq.conf
10月 31 15:35:05 root rabbitmq-server[220589]: Starting broker... completed with 5 plugins.
为什么没配置 -detached 会一直重启?
ExecStart 不带 -detached 时,rabbitmq-server 脚本默认以 “前台模式” 运行:
1.启动流程:rabbitmq-server 脚本(父进程)会直接启动 RabbitMQ 的核心 Erlang 进程 beam.smp(子进程),但 父进程不会退出,而是一直阻塞在前台,等待子进程运行(类似 “命令行直接执行程序,不退出终端”)。
2.与 Type=forking 的冲突:此时父进程未退出,违反了 Type=forking 对 “父进程必须退出” 的要求。systemd 会一直等待父进程退出,超过你配置的 TimeoutStartSec=600 秒后,判定 “启动超时”,强制终止所有相关进程(包括父进程和子进程),再按 Restart=on-failure 重启,导致循环重启。
为什么配置 -detached 后不再重启?
-detached 是 RabbitMQ 提供的 “后台启动” 参数,它的作用是:
启动流程:rabbitmq-server 脚本(父进程)启动 beam.smp 子进程后,立即退出(不再阻塞前台),子进程 beam.smp 作为独立后台进程运行。
符合 Type=forking 要求:父进程退出 + 子进程通过 PIDFile 被 systemd 识别,此时 systemd 会判定 “启动成功”,服务状态变为 active (running),不会触发超时重启。
重新加载配置
#重载配置 在 /etc/systemd/system 目录下 执行
[root@root system]# systemctl daemon-reload
# 启用服务(设置开机自启)
[root@root system]# systemctl enable rabbitmq-server
#启动服务
[root@root system]# systemctl start rabbitmq-server
#查看服务状态
[root@root system]# systemctl status rabbitmq-server
#查看rabbitmq-server 的 systemctl 实时跟踪 日志, Ctrl + C 退出实时跟踪
[root@root system]# journalctl -u rabbitmq-server -f
#查看systemctl 启动 rabbitmq-server 的所有日志,包含启动过程
[root@root system]# journalctl -u rabbitmq-server.service
#若只需查看最近的启动相关日志(如最近 100 行),用 -n 限制行数:
[root@root system]# journalctl -u rabbitmq-server.service -n 100


3058

被折叠的 条评论
为什么被折叠?



