一、安装方式的选择
linux环境安装软件目前常用三种方式。
1.yum方式
不太推荐,安装必须联网或者是本地仓库存在安装依赖的情况下才能完成安装,出于安全考虑,一般开发环境都是内网开发,
比如外包银行、政府部门等等没有连接互联网的权限。
外包同学深刻体会。。。。。。。
2.rpm方式
虽然rpm方式安装方式很方便,但是缺点也显而易见,缺点一是版本更新较慢,缺点二是不能选择安装目录。
3.二进制安装方式
安装步骤麻烦,但是弥补了rpm安装的缺点
二、下载二进制安装包
1.rabbitmq与erlang对应版本选择
对比地址:https://www.rabbitmq.com/which-erlang.html
2.下载erlang语言环境安装包
下载地址:https://www.erlang.org/downloads
3.下载rabbitmq二进制安装包
下载地址:https://www.rabbitmq.com/download.html
三、安装相关工具
这里使用到了yum,这些工具也可以使用rpm安装。
yum -y install gcc glibc-devel make ncurses-devel openssl-devel xmlto perl wget xz
三、安装erlang运行环境
1.解压
tar -zvxf otp_src_24.2.tar.gz
2.进入erlang解压目录后设置安装目录然后编译安装
cd otp_src_24.2
./configure --prefix=/usr/local/software/erlang --with-ssl --enable-threads --enable-smp-support --enable-kernel-poll --enable-hipe --without-javac
make && make install
3.设置erlang环境变量
vim /etc/profile
添加环境变量
ERLANG_HOME=ERLANG_HOME=/usr/local/software/erlang
PATH=$PATH:$ERLANG_HOME/bin
4.查看erlang语言环境是否安装成功
输入指令 erl 后回车
[root@localhost ~]# erl
Erlang/OTP 24 [erts-12.2] [source] [64-bit] [smp:2:2] [ds:2:2:10] [async-threads:1]
Eshell V12.2 (abort with ^G)
1>
看到如上信息代表安装成功
四、安装rabbitmq
1.解压
确定一定要先安装xz软件
yum install -y xz
(1)xz解压
xz -d rabbitmq-server-generic-unix-3.9.15.tar.xz
(2)tar解压
tar -xvf rabbitmq-server-generic-unix-3.9.15.tar
2.拷贝到安装的指定目录
(1)将rabbitmq的目录拷贝到/usr/local 目录下 (这一步看自己需求)
sudo mv ./rabbitmq_server-3.7.6/ /usr/local
3.设置系统环境变量
vim /etc/profile
添加rabbitmq变量
ERLANG_HOME=ERLANG_HOME=/usr/local/software/erlang
PATH=$PATH:$ERLANG_HOME/bin
4.启动rabbitmq
前台启动 rabbitmq-server
[root@localhost ~]# rabbitmq-server
## ## RabbitMQ 3.10.2
## ##
########## Copyright (c) 2007-2022 VMware, Inc. or its affiliates.
###### ##
########## Licensed under the MPL 2.0. Website: https://rabbitmq.com
Erlang: 24.2 [emu]
TLS Library: OpenSSL - OpenSSL 1.0.2k-fips 26 Jan 2017
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/software/rabbitmq/var/log/rabbitmq/rabbit@localhost.log
/usr/local/software/rabbitmq/var/log/rabbitmq/rabbit@localhost_upgrade.log
<stdout>
Config file(s): (none)
Starting broker... completed with 3 plugins.
后台启动 rabbitmq-server -detached
[root@localhost ~]# rabbitmq-server -detached
[root@localhost ~]#
5.停止rabbitmq
rabbitmqctl stop
五、将rabbitmq设置为服务
编辑系统自启动脚本 vim /usr/lib/systemd/system/rabbitmq.service 添加以下内容
#rabbitmq 启动脚本
[Unit]
Description=rabbitmq
After=syslog.target network.target
[Service]
#Type=forking
User=root
Group=root
WorkingDirectory=/usr/local/software/rabbitmq
ExecStart=/usr/local/software/rabbitmq/sbin/rabbitmq-server
ExecReload=/usr/local/software/rabbitmq/sbin/rabbitmq-server restart
ExecStop=/usr/local/software/rabbitmq/sbin/rabbitmq-server stop
PrivateTmp=true
[Install]
WantedBy=multi-user.target
编辑完文件一定要重新加载后台服务systemctl daemon-reload
[root@localhost system]# systemctl daemon-reload
[root@localhost system]#
启动rabbitmq服务
这一步骤在不同版本和选择不同的安装目录不一致可能使启动程序找不到erlang环境,需要改动启动脚本
systemctl start rabbitmq
运行systemctl start rabbitmq一直无法启动, 提示'/usr/local/software/rabbitmq/sbin/rabbitmq-server: line 73: exec: erl: not found'? 解决方法: 是因为环境变量不同,导致无法找到相应命令,按照指引将erlang的erl软连接到/usr/bin目录下,运行以下命令。
[root@rabbitmqserver bin]# ln -s $ERLANG_HOME/bin/erl /usr/bin/erl
查看启动状态
systemctl status rabbitmq
停止rabbitmq服务
systemctl stop rabbitmq
重启rabbitmq服务
systemctl restart rabbitmq
六、放开防火墙默认15672 web端口与5672 client端口
有三种实现方式
1.暂时关闭防火墙,当服务器重启后失效
systemctl stop firewalld
2.永久关闭防火墙
systemctl disable firewalld.service
3.放行指定端口(企业级推荐)
放行端口15672和5672
firewall-cmd --zone=public --add-port=15672/tcp --permanent (--permanent永久生效,没有此参数重启后失效)
firewall-cmd --zone=public --add-port=5672/tcp --permanent (--permanent永久生效,没有此参数重启后失效)
[root@localhost system]# firewall-cmd --zone=public --add-port=15672/tcp --permanent
success
[root@localhost system]#
[root@localhost system]# firewall-cmd --zone=public --add-port=5672/tcp --permanent
success
[root@localhost system]#
重新载入防火墙
firewall-cmd --reload
查看所有放开端口
firewall-cmd --zone=public --list-ports
[root@localhost system]# firewall-cmd --zone=public --list-ports
5672/tcp 15672/tcp
查看指定端口有没有放开
firewall-cmd --zone=public --query-port=15672/tcp
[root@localhost system]# firewall-cmd --zone=public --query-port=15672/tcp
yes
[root@localhost system]#
七、开启rabbitmq web控制台插件
1.确定rabbitmq是否已经启动
[root@localhost system]# systemctl status rabbitmq
● rabbitmq.service - rabbitmq
Loaded: loaded (/usr/lib/systemd/system/rabbitmq.service; enabled; vendor preset: disabled)
Active: active (running) since Mon 2023-03-27 20:27:17 CST; 8s ago
Process: 7411 ExecStop=/usr/local/software/rabbitmq/sbin/rabbitmq-server stop (code=exited, status=0/SUCCESS)
Main PID: 7974 (rabbitmq-server)
CGroup: /system.slice/rabbitmq.service
├─7974 /bin/sh /usr/local/software/rabbitmq/sbin/rabbitmq-server
├─7979 /usr/local/software/erlang/lib/erlang/erts-12.2/bin/beam.smp -W w -MBas ageffcbf -MHas ageffcbf -MBlmbcs 512 -MHlmbcs 512 -MMmcs 30 -P 1048576 -t 5000000 -...
├─7986 erl_child_setup 1024
├─8030 inet_gethost 4
└─8031 inet_gethost 4
Mar 27 20:27:22 localhost.localdomain rabbitmq-server[7974]: TLS Library: OpenSSL - OpenSSL 1.0.2k-fips 26 Jan 2017
Mar 27 20:27:22 localhost.localdomain rabbitmq-server[7974]: Doc guides: https://rabbitmq.com/documentation.html
Mar 27 20:27:22 localhost.localdomain rabbitmq-server[7974]: Support: https://rabbitmq.com/contact.html
Mar 27 20:27:22 localhost.localdomain rabbitmq-server[7974]: Tutorials: https://rabbitmq.com/getstarted.html
Mar 27 20:27:22 localhost.localdomain rabbitmq-server[7974]: Monitoring: https://rabbitmq.com/monitoring.html
Mar 27 20:27:22 localhost.localdomain rabbitmq-server[7974]: Logs: /usr/local/software/rabbitmq/var/log/rabbitmq/rabbit@localhost.log
Mar 27 20:27:22 localhost.localdomain rabbitmq-server[7974]: /usr/local/software/rabbitmq/var/log/rabbitmq/rabbit@localhost_upgrade.log
Mar 27 20:27:22 localhost.localdomain rabbitmq-server[7974]: <stdout>
Mar 27 20:27:22 localhost.localdomain rabbitmq-server[7974]: Config file(s): (none)
Mar 27 20:27:23 localhost.localdomain rabbitmq-server[7974]: Starting broker... completed with 3 plugins.
2.通过指令rabbitmq-plugins开启web控制台插件 rabbitmq-plugins enable rabbitmq_management
[root@localhost system]# rabbitmq-plugins enable rabbitmq_management
Enabling plugins on node rabbit@localhost:
rabbitmq_management
The following plugins have been configured:
rabbitmq_management
rabbitmq_management_agent
rabbitmq_web_dispatch
Applying plugin configuration to rabbit@localhost...
Plugin configuration unchanged.
[root@localhost system]#
3.通过指令查看web控制台插件是否已经开启
已经开启标志([E] rabbitmq_management)*
[root@localhost system]# rabbitmq-plugins list
Listing plugins with pattern ".*" ...
Configured: E = explicitly enabled; e = implicitly enabled
| Status: * = running on rabbit@localhost
|/
[ ] rabbitmq_amqp1_0 3.10.2
[ ] rabbitmq_auth_backend_cache 3.10.2
[ ] rabbitmq_auth_backend_http 3.10.2
[ ] rabbitmq_auth_backend_ldap 3.10.2
[ ] rabbitmq_auth_backend_oauth2 3.10.2
[ ] rabbitmq_auth_mechanism_ssl 3.10.2
[ ] rabbitmq_consistent_hash_exchange 3.10.2
[ ] rabbitmq_event_exchange 3.10.2
[ ] rabbitmq_federation 3.10.2
[ ] rabbitmq_federation_management 3.10.2
[ ] rabbitmq_jms_topic_exchange 3.10.2
[E*] rabbitmq_management 3.10.2
[e*] rabbitmq_management_agent 3.10.2
[ ] rabbitmq_mqtt 3.10.2
[ ] rabbitmq_peer_discovery_aws 3.10.2
[ ] rabbitmq_peer_discovery_common 3.10.2
[ ] rabbitmq_peer_discovery_consul 3.10.2
[ ] rabbitmq_peer_discovery_etcd 3.10.2
[ ] rabbitmq_peer_discovery_k8s 3.10.2
[ ] rabbitmq_prometheus 3.10.2
[ ] rabbitmq_random_exchange 3.10.2
[ ] rabbitmq_recent_history_exchange 3.10.2
[ ] rabbitmq_sharding 3.10.2
[ ] rabbitmq_shovel 3.10.2
[ ] rabbitmq_shovel_management 3.10.2
[ ] rabbitmq_stomp 3.10.2
[ ] rabbitmq_stream 3.10.2
[ ] rabbitmq_stream_management 3.10.2
[ ] rabbitmq_top 3.10.2
[ ] rabbitmq_tracing 3.10.2
[ ] rabbitmq_trust_store 3.10.2
[e*] rabbitmq_web_dispatch 3.10.2
[ ] rabbitmq_web_mqtt 3.10.2
[ ] rabbitmq_web_mqtt_examples 3.10.2
[ ] rabbitmq_web_stomp 3.10.2
[ ] rabbitmq_web_stomp_examples 3.10.2
[root@localhost system]#
4.浏览器查看 ip:15672
八、设置rabbit服务自启动
将服务设置为自启动服务systemctl enable rabbitmq.service
[root@localhost system]# systemctl enable rabbitmq.service
[root@localhost system]#