在Linux下安装RabbitMQ

2023-05-16

获取erlang(RabbitMQ依赖erlang)

erlang网站主页:https://www.erlang.org/
下载地址:https://erlang.org/download/otp_src_25.0.tar.gz

 获取RabbitMQ

RabbitMQ网站主页: https://www.rabbitmq.com/
下载地址: https://github.com/rabbitmq/rabbitmq-server/releases/download/v3.10.4/rabbitmq-server-generic-unix-3.10.4.tar.xz

安装 erlang 的依赖工具

[root@bogon local]# yum -y install make gcc gcc-c++ kernel-devel m4 ncurses-devel openssl-devel unixODBC-devel

进入erlang 安装包解压文件对 erlang 进行安装环境的配置

 新建一个文件夹

[root@bogon local]# mkdir erlang

对 erlang 进行安装环境的配置

[root@bogon local]# cd otp_src_25.0
[root@bogon otp_src_25.0]# ./configure --prefix=/usr/local/erlang --without-javac

编译安装

[root@bogon otp_src_25.0]# make && make install

验证一下 erlang 是否安装成功了

[root@bogon otp_src_25.0]# ./bin/erl

运行下面的语句输出“hello world” 

io:format("hello world~n", []).

大功告成,我们的 erlang 已经安装完成。

配置 erlang 环境变量

echo 'export PATH=$PATH:/usr/local/erlang/bin' >> /etc/profile

运行下列命令使配置文件profile生效 

 [root@bogon etc]# source /etc/profile

 输入 erl 查看 erlang 环境变量是否配置正确

 [root@bogon etc]# erl

 
安装RabbitMQ


1.解压 RabbitMQ : tar -xvf rabbitmq-server-generic-unix-3.10.4.tar.xz

    默认地址 /usr/local/rabbitmq/

2.修改环境变量:

echo 'export PATH=$PATH:/usr/local/rabbitmq/sbin' >> /etc/profile

 执行如下命令,使环境变量立即生效

source /etc/profile

3.启动 RabbitMQ
切换至 RabbitMQ 安装目录:cd /usr/local/rabbitmq/sbin
启动 RabbitMQ : ./rabbitmq-server
如果有如下报错 :

./rabbitmq-server: 第 73 行:exec: erl: 未找到

是由于 erlang 的环境变量配置问题,临时配置 erlang 的环境变量,执行命令,路径为 erlang 的安装路径下的bin目录: export PATH=$PATH:/usr/local/erlang/bin,再次启动,启动成功提示如下:

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/var/log/rabbitmq/rabbit@localhost.log
     /usr/local/rabbitmq/var/log/rabbitmq/rabbit@localhost_upgrade.log
 <stdout>
Config file(s): (none)
Starting broker... completed with 0 plugins.


日志路径:/usr/local/rabbitmq/var/log/rabbitmq/rabbit@localhost.log
4.查看启动的 RabbitMQ : netstat -nap | grep 5672

tcp        0      0 0.0.0.0:25672           0.0.0.0:*               LISTEN      1495/beam.smp       
tcp6       0      0 :::5672                 :::*                    LISTEN      1495/beam.smp

5.关闭 RabbitMQ : ./rabbitmqctl stop
提示如下:

Stopping and halting node rabbit@localhost ...

可以通过命令 rabbitmq-server erl,来直接启动 RabbitMQ 和 erlang
6.后台启动 RabbitMQ : rabbitmq-server -detached
7.查看后台是否启动成功:ps -ef | grep rabbitmq

root      1737      1  0 7月06 ?       00:00:31 /usr/local/erlang/lib/erlang/erts-13.0/bin/beam.smp -W w -MBas ageffcbf -MHas ageffcbf -MBlmbcs 512 -MHlmbcs 512 -MMmcs 30 -P 1048576 -t 5000000 -stbt db -zdbbl 128000 -sbwt none -sbwtdcpu none -sbwtdio none -B i -- -root /usr/local/erlang/lib/erlang -bindir /usr/local/erlang/lib/erlang/erts-13.0/bin -progname erl -- -home /root -- -pa  -noshell -noinput -s rabbit boot -boot start_sasl -syslog logger [] -syslog syslog_error_logger false -kernel prevent_overlapping_partitions false -noshell -noinput
root      2686  1426  0 00:07 pts/0    00:00:00 grep --color=auto rabbit

8.开启插件
  
​​​​​​​rabbitmq-plugins enable rabbitmq_management

 9.创建账号

        9.1 查看所有用户   

rabbitmqctl list_users

        9.2 添加用户        

rabbitmqctl add_user admin 123456

         9.3 配置权限               

rabbitmqctl set_permissions -p "/" admin ".*" ".*" ".*"

        9.4 查看用户权限

rabbitmqctl list_user_permissions admin

        9.5 设置tag

rabbitmqctl set_user_tags admin administrator

10.开放端口

firewall-cmd --zone=public --add-port=15672/tcp --permanent

11.重启防火墙

firewall-cmd --reload

##后者关闭防火墙
systemctl stop firewalld

http://ip:15672   //访问RabbitMQ管理界面

开始配置集群

1.配置两台机器的hosts

vim /etc/hosts  ##修改后使用:wq!保存并退出

2、停止服务 

rabbitmqctl stop

3、设置erlang cookie 

这里将 node1 的该文件复制到 node2,由于这个文件权限是 400为方便传输,先修改权限,所以需要先修改 node2中的该文件权限为 777。

集群各节点的cookie必须保持一致,否则无法通信。

erlang是通过主机名来连接服务,必须保证各个主机名之间可以ping通。可以通过编辑/etc/hosts来手工添加主机名和IP对应关系。如果主机名ping不通,rabbitmq服务启动会失败。

A、设置777权限

slave1&slave2:

chmod 777 /root/.erlang.cookie

注意.erlang.cookie的目录,也有可能在/var/lib/rabbitmq/.erlang.cookie

B、拷贝cookie文件

将master节点上的cookie拷贝至slave1&slave2

scp /root/.erlang.cookie slave1:/root/

拷贝过程中会输yes和密码

C、最后将权限和所属用户/组修改回来

slave1&slave2:

chmod 400 /root/.erlang.cookie

chown root /root/.erlang.cookie

chgrp root /root/.erlang.cookie

2.运行各节点

master&slave1&slave2:

rabbitmqctl stop

rabbitmq-server –detached

3.组成集群

将slave1&slave2加入集群

rabbitmqctl stop_app

rabbitmqctl join_cluster rabbit@master

rabbitmqctl start_app

验证集群 

 集群搭建成功!

 项目中配置集群访问

spring:
  rabbitmq:
    addresses: 172.31.163.91:5672,172.31.163.90:5672,172.31.163.92:5672
    username: admin
    password: 123456
    virtual-host: /test

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在Linux下安装RabbitMQ 的相关文章

  • :: 右侧的非法标记

    我有以下模板声明 template
  • 让“git pull”在拉取不同分支时要求确认

    当同时处理许多项目和分支时 我偶尔会犯一些愚蠢的错误 比如拉入错误的分支 例如在分支上master I did git pull origin dangerous code并且有一段时间没有注意到这一点 这个小错误造成了很大的混乱 当我尝试
  • 从 gitlab docker runner 启动声纳扫描仪

    我有一个 CI 工作流程 集成了 linting 作业和代码质量作业 我的 Linting 工作是一个 docker runner 从应用程序代码启动我的 eslint 脚本 然后我的代码质量工作应该启动声纳扫描仪泊坞窗实例 检查我的代码并
  • 访问 Linux 线程(pthreads)的本地堆栈

    我目前正在实现一个使用多线程但对总内存消耗有要求的应用程序 我希望有一个主线程执行 I O 并有几个工作线程执行计算 目前 我在主堆栈上有几个可供工作人员访问的数据结构 我使用 OpenMP 进行工作分配 由于主 工作者模式不能很好地与 O
  • 如何使用sprof?

    请举例说明 从邮件中找到here http sources redhat com ml libc alpha 2003 07 msg00029 html and here http sourceware org ml binutils 20
  • 是否有我可以运行的操作系统命令来确定是否在基于 Xen 的虚拟机内运行

    我可以在基于 Xen 的虚拟机中运行一个操作系统命令来告诉我它是一个虚拟机而不是物理机 我听说内核对此有一些自我意识智能 例如就像 ps 输出中的额外列之类的 我知道 vmstat 提供了 st 列 但我在运行 Linux 内核 2 6 1
  • 如何“grep”连续流?

    可以用吗grep在连续的流中 我的意思是有点tail f
  • RabbitMQ 管理插件窗口呈现为空白页面

    I have installed Erlang RabbitMQ and configured the management plugin as per the instructions on the website https www r
  • bash双括号问题

    我对 bash 脚本非常陌生 在使用双括号时遇到了问题 我似乎无法让它们在 Ubuntu Server 11 10 中工作 我的下面的脚本位于 if test sh 中 bin bash if 14 14 then echo FOO fi
  • 如何删除树莓派的相机预览

    我在我的 raspberryPi 上安装了 SimpleCv 并安装了用于使用相机板的驱动程序 uv4l 驱动程序 现在我想使用它 当我在 simpleCV shell Camera 0 getImage save foo jpg 上键入时
  • jpackage linux 创建的桌面文件不足

    我刚刚开始使用 jpackage 它是一个非常棒的工具 只要迈出一步 我的肩上的工作就减轻了很多 我对看起来硬编码且无法定制的东西越感到惊讶 JPackage 自动生成启动器 lib
  • xdotool 类型需要很长时间并导致整个桌面冻结

    我一直在使用xdotool type过去只能在快捷方式上输入耸肩xdotool type 这可行 但总是需要相当长的时间 并导致整个桌面冻结 完全冻结 而不仅仅是输入 几秒钟 不过并没有太打扰我 现在我需要一种方法来从文件中读取内容 对其进
  • 使用 sed 将 old-link-url 替换为 new-link-url

    我正在 bash 中编写一个脚本 将 old link url 替换为 new link url 我的问题是 sed 由于斜杠而无法替换 url 如果我只输入一些文字就可以了 my code sed e s old link new lin
  • 如何使用 bash 脚本关闭所有终端,在每个终端中有效地按 Ctrl+Shift+Q

    我经常打开许多终端 其中一些正在运行重要的进程 例如服务器 而另一些则没有运行任何东西并且可以关闭 如果您按 重要 则会弹出确认提示Cntrl Shift Q在其中 如下所示 我想要一个 bash 脚本 它可以关闭所有终端 但将 重要 终端
  • 使用netcat将unix套接字传输到tcp套接字

    我正在尝试使用以下命令将 unix 套接字公开为 tcp 套接字 nc lkv 44444 nc Uv var run docker sock 当我尝试访问时localhost 44444 containers json从浏览器中 它不会加
  • 原生 Linux 应用程序可像 ResHacker 一样编辑 Win32 PE

    我想运行自动修改 dll服务 用户提交特定的 dll 我在服务器上修改它 然后用户可以下载 dll的修改版本 是否有任何本机 Linux 应用程序提供常见的 Win32 PE 修改功能 例如图标 字符串 加速器 对话等 至少提供命令行或脚本
  • Docker DNS 设置

    我尝试使用自定义网络和 dos 设置创建 docker 容器 docker网络创建 driver bridge opt com docker network bridge enable ip masquerade true opt com
  • 在 Ubuntu 上纯粹通过 bash 脚本安装 mysql 5.7

    我想要一个无需任何手动输入即可安装 MySQL 5 7 实例的 bash 脚本 我正在关注数字海洋教程 https www digitalocean com community tutorials how to install mysql
  • 通过 SSH 将变量传递给远程脚本

    我正在通过 SSH 从本地服务器在远程服务器上运行脚本 首先使用 SCP 复制该脚本 然后在传递一些参数时调用该脚本 如下所示 scp path to script server example org another path ssh s
  • 如何在两个不同帐户之间设置无密码身份验证

    我们可以在两台机器的两种不同用途之间设置无密码身份验证吗 例如 计算机A有用户A 计算机B有用户B 我们可以设置密码 ssh 以便计算机 A 上的用户 A 使用其用户帐户 A 登录计算机 B 谢谢你 如果我理解你的问题 你能设置一下吗ssh

随机推荐