CentOS 安装最新 RabbitMQ
CentOS 7 安装 RabbitMQ
什么是RabbitMQ
RabbitMQ就是当前最主流的消息中间件之一。RabbitMQ是一个开源的AMQP实现,服务器端用Erlang语言编写,支持多种客户端,如:Python、Ruby、.NET、Java、JMS、C、PHP、ActionScript、XMPP、STOMP等,支持AJAX。用于在分布式系统中存储转发消息,在易用性、扩展性、高可用性等方面表现不俗。
安装 RabbitMQ
-
下载 Erlang 并安装
-
我们这里下载安装包安装(otp_src_25.2.3.tar.gz)
QQ截图20230228110718.png
-
上传到 服务器 (首先要安装 yum install lrzsz),并安装
- 上传文件(我是放在 /usr/local/ 目录下的)
r z
QQ截图20230228111655.png
- 解压文件
tar -zvxf otp_src_25.2.3.tar.gz
- 安装
# 进入程序目录 cd otp_src_25.2.3/ # 这里要新建一个erlang文件夹,因为erlang编译安装默认是装在/usr/local下的bin和lib中,这里我们将他统一装到/usr/local/erlang中,方便查找和使用。 mkdir -p /usr/local/erlang # 在编译之前,必须安装以下依赖包 yum install -y make gcc gcc-c++ m4 openssl openssl-devel ncurses-devel unixODBC unixODBC-devel java java-devel ./configure --prefix=/usr/local/erlang
- 上传文件(我是放在 /usr/local/ 目录下的)
-
报错 WARNING: No OpenGL headers found, wx will NOT be usable
QQ截图20230228115315.png
-
不影响正常编译,直接编译
make && make install #进行编译安装
- 添加环境变量
vim /etc/profile ######### 添加如下内容 ############### PATH=$PATH:/usr/local/erlang/bin ######################################## source /etc/profile</pre>
-
安装 RabbitMQ
-
安装之前,需要去官网查看一下rabbitmq版本对erlang版本的一个支持情况
-
QQ截图20230228120625.png
QQ截图20230228133423.png
-
rabbitmq-server-generic-unix-3.11.9.tar.xz ,(上传,解压)
-
解压这个文件需要安装 xz
yum install xz
-
解压
tar -xvf rabbitmq-server-generic-unix-3.11.9.tar.xz -C /usr/local/
-
添加环境变量
# 添加环境变量 vim /etc/profile ------ 添加如下内容 ------ PATH=$PATH:/usr/local/rabbitmq_server-3.11.9/sbin # 重载一下环境变量 source /etc/profile # 添加web管理插件 rabbitmq-plugins enable rabbitmq_management
-
启动服务(3.11.9版本也不像网上说的要配置配置文件)
rabbitmq-server -detached
-
查看启动状态
rabbitmqctl status
-
因为我们部署在阿里云(所以要开通端口)
QQ截图20230228150019.png
QQ截图20230228151417.png
-
访问页面(http://106...1*9:15672/)
QQ截图20230228151446.png
- 如果服务器防火墙开着,就要开启对应端口,否则也会导致无法访问
# 开放端口 firewall-cmd --add-port=15672/tcp --permanent firewall-cmd --reload</pre>
-
-
设置 RabbitMQ 开机自启动
-
设置自启动
-
在/etc/init.d 目录下新建一个 rabbitmq
vi rabbitmq
-
填入以下内容
- 版本一(启动可以,自启动不行)
#!/bin/bash # # chkconfig: 2345 80 05 # description: rabbitmq # processname: rabbitmq #RabbitMQ安装目录 RABBITMQ_HOME=/usr/local/rabbitmq_server-3.11.9 export RABBITMQ_HOME case "$1" in start) echo "Starting RabbitMQ ..." cd $RABBIT_HOME/sbin rabbitmq-server -detached ;; stop) echo "Stopping RabbitMQ ..." cd $RABBIT_HOME/sbin rabbitmqctl stop ;; status) echo "Status RabbitMQ ..." cd $RABBIT_HOME/sbin rabbitmqctl status ;; restart) echo "Restarting RabbitMQ ..." cd $RABBIT_HOME/sbin rabbitmq-server -detached ;; *) echo "Usage: $prog {start|stop|status|restart}" ;; esac exit 0</pre>
- 版本二(这个是可以的)
#!/bin/bash #chkconfig:2345 61 61 export HOME=/usr/local/rabbitmq_server-3.11.9/ export PATH=$PATH:/usr/local/erlang/bin export PATH=$PATH:/usr/local/rabbitmq_server-3.11.9/sbin case "$1" in start) echo "Starting RabbitMQ ..." rabbitmq-server -detached ;; stop) echo "Stopping RabbitMQ ..." rabbitmqctl stop ;; status) echo "Status RabbitMQ ..." rabbitmqctl status ;; restart) echo "Restarting RabbitMQ ..." rabbitmqctl stop rabbitmq-server restart ;; *) echo "Usage: $prog {start|stop|status|restart}" ;; esac exit 0</pre>
- 参考文档
-
设置步骤
- 对 rabbitmq 授予可执行权限
chmod -R 777 rabbitmq
- 添加 rabbitmq 服务到系统服务中
chkconfig --add rabbitmq
- 设置自启动
chkconfig rabbitmq on
- 查看自启动项是否设置成功
chkconfig --list rabbitmq
- 开启 rabbit 服务
./rabbitmq start
- 对 rabbitmq 授予可执行权限
-
设置详情
[root@iZuf6h4mzg64z054s6q08qZ init.d]# chmod -R 777 rabbitmq [root@iZuf6h4mzg64z054s6q08qZ init.d]# chkconfig --add rabbitmq [root@iZuf6h4mzg64z054s6q08qZ init.d]# chkconfig rabbitmq on [root@iZuf6h4mzg64z054s6q08qZ init.d]# chkconfig --list rabbitmq Note: This output shows SysV services only and does not include native systemd services. SysV configuration data might be overridden by native systemd configuration. If you want to list systemd services use 'systemctl list-unit-files'. To see services enabled on particular target use 'systemctl list-dependencies [target]'. rabbitmq 0:off 1:off 2:on 3:on 4:on 5:on 6:off [root@iZuf6h4mzg64z054s6q08qZ init.d]# ./rabbitmq start Starting RabbitMQ ... 2023-02-28 15:41:33.352670+08:00 [notice] <0.44.0> Application syslog exited with reason: stopped 2023-02-28 15:41:33.356711+08:00 [notice] <0.230.0> Logging: switching to configured handler(s); following messages may not be visible in this log output ## ## RabbitMQ 3.11.9 ## ## ########## Copyright (c) 2007-2023 VMware, Inc. or its affiliates. ###### ## ########## Licensed under the MPL 2.0. Website: https://rabbitmq.com Erlang: 25.2.3 [emu] TLS Library: OpenSSL - OpenSSL 1.0.2k-fips 26 Jan 2017 Release series support status: supported Doc guides: https://rabbitmq.com/documentation.html Support: https://rabbitmq.com/contact.html Tutorials: https://rabbitmq.com/getstarted.html Monitoring: https://rabbitmq.com/monitoring.html Logs: /usr/local/rabbitmq_server-3.11.9/var/log/rabbitmq/rabbit@iZuf6h4mzg64z054s6q08qZ.log /usr/local/rabbitmq_server-3.11.9/var/log/rabbitmq/rabbit@iZuf6h4mzg64z054s6q08qZ_upgrade.log <stdout> Config file(s): (none) Starting broker... completed with 3 plugins.
-
重启服务器,自启动成功
QQ截图20230228162433.png
-
登录设置 RabbitMQ
-
登录 RabbitMQ
- 使用默认的用户 guest / guest (此也为管理员用户)登陆,会发现无法登陆,报错:User can only log in via localhost。那是因为默认是限制了guest用户只能在本机登陆,也就是只能登陆localhost:15672
QQ截图20230228162816.png
-
可以通过修改配置文件rabbitmq.conf,取消这个限制: loopback_users这个项就是控制访问的,如果只是取消guest用户的话,只需要loopback_users.guest = false即可(这是网上的方法,我安装的是当前最新的版本,根本没有这个配置文件)
-
那去官网溜达一下,找到到如下一段话(官网地址)
QQ截图20230228170133.png
-
我们去 /usr/local/rabbitmq_server-3.11.9/etc/rabbitmq/ 新建一个 rabbitmq.conf 文件,内容就把官网的一小段复制上去
# DANGER ZONE! # # allowing remote connections for default user is highly discouraged # as it dramatically decreases the security of the system. Delete the user # instead and create a new one with generated secure credentials. loopback_users = none ```


-
我们再用 guest 去登陆一下,完美登录
QQ截图20230228170755.png
RabbitMQ 常用指令
-
常用指令说明
-
见下表
命令 说明 备注 rabbitmq-server -detached 启动 rabbitmq rabbitmqctl status 查看启动状态 chkconfig rabbitmq-server on 开机自启 rabbitmqctl stop 停止 rabbitmqctl list_users 查看角色 rabbitmq-plugins enable rabbitmq_management 开启Web端监控 rabbitmq-plugins list 查看插件 rabbitmqctl add_user jack 123456 创建jack用户 密码123456 rabbitmqctl set_user_tags jack administrator 设置jack用户为管理员角色 rabbitmqctl set_permissions -p / jack '.' '.' '.*' 设置jack角色所有权限
-