本文由 简悦 SimpRead 转码, 原文地址 blog.csdn.net
- 操作系统: Centos7
- RabbitMQ:3.8.18
- Erlang: 23.3.4
虽然我们可以直接通过 yum 进行安装 RabbitMQ,但是这种按照方式按照的 RabbitMQ 版本相对比较老.
如果想安装最新版本的 RabbitMQ, 我们需要安装一个镜像仓库。
1.1 安装 PackageCloud 软件包
PackageCloud可提供带有 RabbitMQ 软件包的 Yum 存储库, 也可以用于通过 yum 安装最新的 Erlang 版本.
安装命令如下所示:
## Uses a PackageCloud-provided Yum repository setup script.
## Always verify what is downloaded before piping it to a privileged shell!
curl -s https://packagecloud.io/install/repositories/rabbitmq/rabbitmq-server/script.rpm.sh | sudo bash
执行成功后显示The repository is setup! You can now install packages
效果如下图所示:
1.2 验证 PackageCloud 软件包签名
验证 PackageCloud 软件包签名可以输入如下命令:
## primary RabbitMQ signing key
rpm --import https://github.com/rabbitmq/signing-keys/releases/download/2.0/rabbitmq-release-signing-key.asc
## modern Erlang repository
rpm --import https://packagecloud.io/rabbitmq/erlang/gpgkey
## RabbitMQ server repository
rpm --import https://packagecloud.io/rabbitmq/rabbitmq-server/gpgkey
1.3 安装 Erlang 和 RabbitMQ
新建一个文件 rabbitmq.repo
vi /etc/yum.repos.d/rabbitmq.repo
编辑内容如下:
# In /etc/yum.repos.d/rabbitmq.repo
##
## Zero dependency Erlang
##
[rabbitmq_erlang]
name=rabbitmq_erlang
baseurl=https://packagecloud.io/rabbitmq/erlang/el/7/$basearch
repo_gpgcheck=1
gpgcheck=1
enabled=1
# PackageCloud's repository key and RabbitMQ package signing key
gpgkey=https://packagecloud.io/rabbitmq/erlang/gpgkey
https://github.com/rabbitmq/signing-keys/releases/download/2.0/rabbitmq-release-signing-key.asc
sslverify=1
sslcacert=/etc/pki/tls/certs/ca-bundle.crt
metadata_expire=300
[rabbitmq_erlang-source]
name=rabbitmq_erlang-source
baseurl=https://packagecloud.io/rabbitmq/erlang/el/7/SRPMS
repo_gpgcheck=1
gpgcheck=0
enabled=1
# PackageCloud's repository key and RabbitMQ package signing key
gpgkey=https://packagecloud.io/rabbitmq/erlang/gpgkey
sslverify=1
sslcacert=/etc/pki/tls/certs/ca-bundle.crt
metadata_expire=300
##
## RabbitMQ server
##
[rabbitmq_server]
name=rabbitmq_server
baseurl=https://packagecloud.io/rabbitmq/rabbitmq-server/el/7/$basearch
repo_gpgcheck=1
gpgcheck=0
enabled=1
gpgkey=https://packagecloud.io/rabbitmq/rabbitmq-server/gpgkey
sslverify=1
sslcacert=/etc/pki/tls/certs/ca-bundle.crt
metadata_expire=300
[rabbitmq_server-source]
name=rabbitmq_server-source
baseurl=https://packagecloud.io/rabbitmq/rabbitmq-server/el/7/SRPMS
repo_gpgcheck=1
gpgcheck=0
enabled=1
gpgkey=https://packagecloud.io/rabbitmq/rabbitmq-server/gpgkey
sslverify=1
sslcacert=/etc/pki/tls/certs/ca-bundle.crt
metadata_expire=300
以上内容仅供 Centos7 使用,如果是 Centos8 请移步:github.com/rabbitmq/er…
1.3.1 更新 Yum 软件包
yum -y upgrade
如果是 Centos8 执行完成后需要再执行一步
yum -q makecache -y --disablerepo='*' --enablerepo='rabbitmq_erlang' --enablerepo='rabbitmq_server'
1.3.2 安装软件包
RabbitMQ 依赖三个包:
- Erlang
- socat
- logrotate
安装 Erlang 23.3.4
yum install -y erlang-23.3.4
从标准库安装一些其他两个依赖:
## install these dependencies from standard OS repositories
yum install socat logrotate -y
1.3.3 安装 RabbitMQ
RabbitMQ 是 C/S 架构,我们需要安装 RabbitMQ Server 端
安装命令如下:
yum install rabbitmq-server -y
开机启动
systemctl enable rabbitmq-server.service
1.3 开启 rabbitmq 插件管理
rabbitmq-plugins enable rabbitmq_management
1.4 启动 RabbitMQ
service rabbitmq-server start
1.5 列出 RabbitMQ 用户列表
rabbitmqctl list_users
RabbitMQ 默认账号: guest
RabbitMQ 默认密码: guest
值得注意的是默认的 guest 账号只能本地访问,无法远程访问。
1.6 配置支持远程访问
1.6.1 创建新的用户并设置密码
rabbitmqctl add_user admin 123456
admin 是新添加的账号名称 123456 是新添加账号的密码 (密码不要带特殊字符, 不然会设置失败, 导致后续会无法登录成功)
执行成功提示如下
Adding user "admin" ...
Done. Don't forget to grant the user permissions to some virtual hosts! See 'rabbitmqctl help set_permissions' to learn more.
1.6.2 授予用户权限
rabbitmqctl set_permissions -p "/" admin ".*" ".*" ".*"
执行成功提示如下:
Setting permissions for user "admin" in vhost "/" ...
1.6.3 修改用户角色
rabbitmqctl set_user_tags admin administrator
执行成功提示如下:
Setting tags for user "admin" to [administrator] ...
1.6.4 访问 RabbitMQ 后台
使用本地电脑的 Chrome 或 Firefox 浏览器访问网址:http://域名:15672 或 http://服务器公网 IP:15672, 就进入登录首页
值得注意的是,这里必须是 IP 加端口, 如果是域名加端口访问不起。
1.6.5 代码中配置链接
值得注意的是,
15672是 RabbitMQ Web 控制台开放的端口- 代码中默认连接应该使用的是
5672端口而不是15672
代码配置示例如下:
spring:
rabbitmq:
host: 127.0.0.1
port: 5672
username: admin
password: 123456
- QA 如果报错
2.1 Q: oaded (/usr/lib/systemd/system/rabbitmq-server.service; enabled; vendor preset: disabled) 报错?
[root@iZ8vb11868fcocr28hrspaZ yum.repos.d]# service rabbitmq-server status -l
Redirecting to /bin/systemctl status -l rabbitmq-server.service
● rabbitmq-server.service - RabbitMQ broker
Loaded: loaded (/usr/lib/systemd/system/rabbitmq-server.service; enabled; vendor preset: disabled)
Active: inactive (dead)
Jul 01 17:49:10 iZ8vb11868fcocr28hrspaZ rabbitmq-server[20434]: 17:49:10.334 [error] CRASH REPORT Process <0.250.0> with 0 neighbours crashed with reason: no match of right hand value {error,{file_error,"/var/lib/rabbitmq/mnesia/rabbit@iZ8vb11868fcocr28hrspaZ/quorum/rabbit@iZ8vb11868fcocr28hrspaZ/names.dets",eacces}} in ra_directory:init/1 line 45
Jul 01 17:49:10 iZ8vb11868fcocr28hrspaZ rabbitmq-server[20434]: 17:49:10.334 [error] Supervisor ra_sup had child ra_system_sup started with ra_system_sup:start_link() at undefined exit with reason {shutdown,{failed_to_start_child,ra_log_ets,{{badmatch,{error,{file_error,"/var/lib/rabbitmq/mnesia/rabbit@iZ8vb11868fcocr28hrspaZ/quorum/rabbit@iZ8vb11868fcocr28hrspaZ/names.dets",eacces}}},[{ra_directory,init,1,[{file,"src/ra_directory.erl"},{line,45}]},{ra_log_ets,init,1,[{file,"src/ra_log_ets.erl"},{line,68}]},{gen_server,init_it,2,[{file,"gen_server.erl"},{line,417}]},{gen_server,init_it,6,[{file,"gen_server.erl"},{line,385}]},{proc_lib,init_p_do_apply,3,[{file,"proc_lib.erl"},{line,226}]}]}}} in context start_error
Jul 01 17:49:10 iZ8vb11868fcocr28hrspaZ rabbitmq-server[20434]: 17:49:10.334 [error] CRASH REPORT Process <0.243.0> with 0 neighbours exited with reason: {{shutdown,{failed_to_start_child,ra_system_sup,{shutdown,{failed_to_start_child,ra_log_ets,{{badmatch,{error,{file_error,"/var/lib/rabbitmq/mnesia/rabbit@iZ8vb11868fcocr28hrspaZ/quorum/rabbit@iZ8vb11868fcocr28hrspaZ/names.dets",eacces}}},[{ra_directory,init,1,[{file,"src/ra_directory.erl"},{line,45}]},{ra_log_ets,init,1,[{file,"src/ra_log_ets.erl"},{line,68}]},{gen_server,init_it,2,[{file,"gen_server.erl"},{line,417}]},{gen_server,init_it,6,[{file,"gen_server.erl"},{line,385}]},{proc_lib,init_p_do_apply,...}]}}}}},...} in application_master:init/4 line 138
Jul 01 17:49:11 iZ8vb11868fcocr28hrspaZ rabbitmq-server[20434]: {"Kernel pid terminated",application_controller,"{application_start_failure,ra,{{shutdown,{failed_to_start_child,ra_system_sup,{shutdown,{failed_to_start_child,ra_log_ets,{{badmatch,{error,{file_error,\"/var/lib/rabbitmq/mnesia/rabbit@iZ8vb11868fcocr28hrspaZ/quorum/rabbit@iZ8vb11868fcocr28hrspaZ/names.dets\",eacces}}},[{ra_directory,init,1,[{file,\"src/ra_directory.erl\"},{line,45}]},{ra_log_ets,init,1,[{file,\"src/ra_log_ets.erl\"},{line,68}]},{gen_server,init_it,2,[{file,\"gen_server.erl\"},{line,417}]},{gen_server,init_it,6,[{file,\"gen_server.erl\"},{line,385}]},{proc_lib,init_p_do_apply,3,[{file,\"proc_lib.erl\"},{line,226}]}]}}}}},{ra_app,start,[normal,[]]}}}"}
Jul 01 17:49:11 iZ8vb11868fcocr28hrspaZ rabbitmq-server[20434]: Kernel pid terminated (application_controller) ({application_start_failure,ra,{{shutdown,{failed_to_start_child,ra_system_sup,{shutdown,{failed_to_start_child,ra_log_ets,{{badmatch,{error,{file_error,
Jul 01 17:49:11 iZ8vb11868fcocr28hrspaZ systemd[1]: rabbitmq-server.service: main process exited, code=exited, status=1/FAILURE
Jul 01 17:49:11 iZ8vb11868fcocr28hrspaZ systemd[1]: Failed to start RabbitMQ broker.
Jul 01 17:49:11 iZ8vb11868fcocr28hrspaZ systemd[1]: Unit rabbitmq-server.service entered failed state.
Jul 01 17:49:11 iZ8vb11868fcocr28hrspaZ systemd[1]: rabbitmq-server.service failed.
Jul 01 17:49:13 iZ8vb11868fcocr28hrspaZ systemd[1]: Stopped RabbitMQ broker.
可能 RabbitMQ Server 没有启动
A: 修复方案
service rabbitmq-server start
2.2 常用维护命令
rabbitmq-server
sudo systemctl start rabbitmq-server
sudo systemctl stop rabbitmq-server
sudo systemctl restart rabbitmq-server
sudo systemctl status rabbitmq-server
- 参考资料 =======