查看“RabbitMQ:安装部署”的源代码
←
RabbitMQ:安装部署
跳到导航
跳到搜索
因为以下原因,您没有权限编辑本页:
您请求的操作仅限属于该用户组的用户执行:
用户
您可以查看和复制此页面的源代码。
[[category:RabbitMQ]] == 关于 == RabbitMQ 快速搭建开发环境,因为 RabbitMQ 使用 Erlang 开发,常规方式安装需要先安装 '''Erlang''',再安装 RabbitMQ 比较麻烦,所以这里推荐使用 '''Docker''' 方式部署,一条命令搞定。 == CentOS 安装 == 两种方法可以在 RPM 发行版上安装 RabbitMQ 的最新版本:【转自官网: https://www.rabbitmq.com/install-rpm.html】 # '''在线安装''':使用 [https://www.rabbitmq.com/install-rpm.html#cloudsmith Cloudsmith.io] 或 [https://www.rabbitmq.com/install-rpm.html#package-cloud PackageCloud] 上的 Yum 存储库安装包。(强烈建议使用此选项) # '''离线安装''':下载软件包并用 rpm 安装。(需要手动安装所有包依赖项) * RabbitMQ RPM 包需要 '''sudo''' 权限才能安装和管理。在 sudo 不可用的环境中,可以考虑使用通用二进制构建。 === 在线安装:使用 Cloudsmith 上的 YUM 库 === ---- Cloudsmith 提供了带有 RabbitMQ 包的Yum存储库,还可以通过 yum 安装最新的 Erlang 版本。 ==== 安装Yum存储库文件 ==== 设置存储库的一种快速方法是使用 Cloudsmith 提供的'''脚本''': : 【这不是必须的,但是可以考虑使用,因为它将生成的脚本从公共互联网传输到特定的shell】 : <syntaxhighlight lang="bash" highlight=""> ## Uses a Cloudsmith-provided Yum repository setup script. ## Always verify what is downloaded before piping it to a privileged shell! curl -1sLf 'https://dl.cloudsmith.io/public/rabbitmq/rabbitmq-erlang/setup.rpm.sh' | sudo -E bash </syntaxhighlight> 传统的库文件安装方式:【使用上述的命令,可以替代以下步骤】 # Yum 将验证其安装的任何包的签名,因此该过程的第一步是导入签名密钥: #: <syntaxhighlight lang="bash" highlight=""> ## 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://dl.cloudsmith.io/public/rabbitmq/rabbitmq-erlang/gpg.E495BB49CC4BBE5B.key' ## RabbitMQ server repository rpm --import 'https://dl.cloudsmith.io/public/rabbitmq/rabbitmq-server/gpg.9F4587F226208342.key' </syntaxhighlight> # 为 RabbitMQ 和 Modern Erlang 添加 Yum 存储库: #: 为了使用Yum存储库,必须在 '''/etc/Yum.repos.d/''' 目录下添加一个 '''.repo''' 文件(例如“rabbitmq.repo”): #: 【.repo 文件根据发行版不同而略有差异,以 CentOS 7 为例】 #: <syntaxhighlight lang="bash" highlight=""> # In /etc/yum.repos.d/rabbitmq.repo [rabbitmq_erlang] name=rabbitmq_erlang baseurl=https://dl.cloudsmith.io/public/rabbitmq/rabbitmq-erlang/rpm/el/7/$basearch repo_gpgcheck=1 enabled=1 # Cloudsmith's repository key and RabbitMQ package signing key gpgkey=https://dl.cloudsmith.io/public/rabbitmq/rabbitmq-erlang/gpg.E495BB49CC4BBE5B.key https://github.com/rabbitmq/signing-keys/releases/download/2.0/rabbitmq-release-signing-key.asc gpgcheck=1 sslverify=1 sslcacert=/etc/pki/tls/certs/ca-bundle.crt metadata_expire=300 pkg_gpgcheck=1 autorefresh=1 type=rpm-md [rabbitmq_erlang-noarch] name=rabbitmq_erlang-noarch baseurl=https://dl.cloudsmith.io/public/rabbitmq/rabbitmq-erlang/rpm/el/7/noarch repo_gpgcheck=1 enabled=1 # Cloudsmith's repository key and RabbitMQ package signing key gpgkey=https://dl.cloudsmith.io/public/rabbitmq/rabbitmq-erlang/gpg.E495BB49CC4BBE5B.key https://github.com/rabbitmq/signing-keys/releases/download/2.0/rabbitmq-release-signing-key.asc gpgcheck=1 sslverify=1 sslcacert=/etc/pki/tls/certs/ca-bundle.crt metadata_expire=300 pkg_gpgcheck=1 autorefresh=1 type=rpm-md [rabbitmq_erlang-source] name=rabbitmq_erlang-source baseurl=https://dl.cloudsmith.io/public/rabbitmq/rabbitmq-erlang/rpm/el/7/SRPMS repo_gpgcheck=1 enabled=1 gpgkey=https://dl.cloudsmith.io/public/rabbitmq/rabbitmq-erlang/gpg.E495BB49CC4BBE5B.key gpgcheck=0 sslverify=1 sslcacert=/etc/pki/tls/certs/ca-bundle.crt metadata_expire=300 pkg_gpgcheck=1 autorefresh=1 type=rpm-md ## ## RabbitMQ server ## [rabbitmq-server] name=rabbitmq_server baseurl=https://dl.cloudsmith.io/public/rabbitmq/rabbitmq-server/rpm/el/7/$basearch repo_gpgcheck=1 enabled=1 # Cloudsmith's repository key and RabbitMQ package signing key gpgkey=https://dl.cloudsmith.io/public/rabbitmq/rabbitmq-server/gpg.9F4587F226208342.key https://github.com/rabbitmq/signing-keys/releases/download/2.0/rabbitmq-release-signing-key.asc gpgcheck=1 sslverify=1 sslcacert=/etc/pki/tls/certs/ca-bundle.crt metadata_expire=300 pkg_gpgcheck=1 autorefresh=1 type=rpm-md [rabbitmq_server-noarch] name=rabbitmq_server-noarch baseurl=https://dl.cloudsmith.io/public/rabbitmq/rabbitmq-server/rpm/el/7/noarch repo_gpgcheck=1 enabled=1 # Cloudsmith's repository key and RabbitMQ package signing key gpgkey=https://dl.cloudsmith.io/public/rabbitmq/rabbitmq-server/gpg.9F4587F226208342.key https://github.com/rabbitmq/signing-keys/releases/download/2.0/rabbitmq-release-signing-key.asc gpgcheck=1 sslverify=1 sslcacert=/etc/pki/tls/certs/ca-bundle.crt metadata_expire=300 pkg_gpgcheck=1 autorefresh=1 type=rpm-md [rabbitmq_server-source] name=rabbitmq_server-source baseurl=https://dl.cloudsmith.io/public/rabbitmq/rabbitmq-server/rpm/el/7/SRPMS repo_gpgcheck=1 enabled=1 gpgkey=https://dl.cloudsmith.io/public/rabbitmq/rabbitmq-server/gpg.9F4587F226208342.key gpgcheck=0 sslverify=1 sslcacert=/etc/pki/tls/certs/ca-bundle.crt metadata_expire=300 pkg_gpgcheck=1 autorefresh=1 type=rpm-md </syntaxhighlight> ==== 用Yum安装包 ==== 【操作根据发行版不同而略有差异,以 CentOS 7 为例】 # 更新 Yum 软件包元数据: #: <syntaxhighlight lang="bash" highlight=""> yum update -y </syntaxhighlight> # 然后安装软件包: #: <syntaxhighlight lang="bash" highlight=""> yum install socat logrotate -y yum install erlang rabbitmq-server -y </syntaxhighlight> #* logrotate 程序是一个日志文件管理工具。用于分割日志文件,删除旧的日志文件,并创建新的日志文件,起到“转储”作用,可以节省磁盘空间。 === 在线安装:使用 PackageCloud 上的 YUM 库 === ---- PackageCloud 提供了包含 RabbitMQ 包的Yum存储库,也可以用于通过 yum 安装最新的 Erlang 版本。 使用示例:[https://blog.csdn.net/weixin_40584261/article/details/106826044 CSDN:Centos7安装RabbitMQ最新版3.8.5,史上最简单实用安装步骤] ==== 安装Yum存储库文件 ==== 设置存储库的一种快速方法是使用 PackageCloud 提供的'''脚本''': : 【这不是必须的,但是可以考虑使用,因为它将生成的脚本从公共互联网传输到特定的shell】 : <syntaxhighlight lang="bash" highlight=""> ## 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 </syntaxhighlight> 传统的库文件安装方式:【使用上述的命令,可以替代以下步骤】 # Yum 将验证其安装的任何包的签名,因此该过程的第一步是导入签名密钥: #: <syntaxhighlight lang="bash" highlight=""> ## 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 </syntaxhighlight> # 为 RabbitMQ 和 Modern Erlang 添加 Yum 存储库: #: 为了使用Yum存储库,必须在 '''/etc/Yum.repos.d/''' 目录下添加一个 '''.repo''' 文件(例如“rabbitmq.repo”): #: 【.repo 文件根据发行版不同而略有差异,以 CentOS 7 为例】 #: <syntaxhighlight lang="bash" highlight=""> # 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 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=1 enabled=1 # PackageCloud's repository key and RabbitMQ package signing key gpgkey=https://packagecloud.io/rabbitmq/rabbitmq-server/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_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 </syntaxhighlight> ==== 用Yum安装包 ==== 【操作根据发行版不同而略有差异,以 CentOS 7 为例】 # 更新 Yum 软件包元数据: #: <syntaxhighlight lang="bash" highlight=""> yum update -y </syntaxhighlight> # 然后安装软件包: #: <syntaxhighlight lang="bash" highlight=""> ## install these dependencies from standard OS repositories yum install socat logrotate -y yum install --repo rabbitmq_erlang --repo rabbitmq_server erlang rabbitmq-server -y </syntaxhighlight> #* logrotate 程序是一个日志文件管理工具。用于分割日志文件,删除旧的日志文件,并创建新的日志文件,起到“转储”作用,可以节省磁盘空间。 === 离线安装 === ---- 离线安装的最大问题就是需要自行解决依赖项,以及选择兼容的版本。 注意: * RabbitMQ 依赖于 '''Erlang''',而 Erlang 内存管理依赖 '''Socat''',因此要首先安装 Erlang 与 socat; * Erlang 与 RabbitMQ 版本需要兼容,可以在“'''[https://www.rabbitmq.com/which-erlang.html https://www.rabbitmq.com/which-erlang.html]'''”查看。 * 离线安装的包,可以自行下载然后上传到服务器,也可以通过服务器的 '''wget''' 工具直接下载: *# '''rabbitmq-server包'''下载地址:“'''[https://github.com/rabbitmq/rabbitmq-server/releases https://github.com/rabbitmq/rabbitmq-server/releases]'''” *# '''erlang包'''下载地址:“'''[https://github.com/rabbitmq/erlang-rpm/releases https://github.com/rabbitmq/erlang-rpm/releases]'''” *# '''socat包'''下载地址:“'''[https://pkgs.org/download/socat https://pkgs.org/download/socat]'''” 【socat 使用 yum 安装最新版本即可】 * 对于基于RPM的发行版,现代 Erlang 提供了三种替代来源:(Erlang 在默认的 yum 存储库中不可用) *# '''RabbitMQ团队''':只提供运行 RabbitMQ 所需的组件,官方称'''零依赖项''',容易安装。【如果Erlang只是用来提供运行RabbitMQ的,推荐使用】 *# '''Erlang官方''':通常是相当最新的,并且涉及潜在的过多依赖关系列表的安装。【如果还需要Erlang做相关开发或运行环境,可选择使用】 *# '''EPEL源''':这些版本通常已经过时,不能用于运行最新的 RabbitMQ 版本。【不推荐】 *#* P.S.:如果要使用 EPEL 存储库,需要通过 yum 安装先安装 EPEL 存储库: *#*: <syntaxhighlight lang="bash" highlight=""> # 先安装epel存储库 yum -y install epel-release # 再安装 Erlang、socat yum -y install erlang socat </syntaxhighlight> 步骤如下:【参照 Erlang 与 RabbitMQ 版本要求,以“erlang-23.3.1-1.el7.x86_64.rpm”与“rabbitmq-server-3.8.14-1.el7.noarch.rpm”为例】 # 安装 Erlang: #: <syntaxhighlight lang="bash" highlight=""> wget https://github.com/rabbitmq/erlang-rpm/releases/download/v23.3.1/erlang-23.3.1-1.el7.x86_64.rpm rpm -ivh erlang-23.3.1-1.el7.x86_64.rpm </syntaxhighlight> #: 查看 Erlang 版本: #: <syntaxhighlight lang="bash" highlight=""> erl -version </syntaxhighlight> # 安装 Socat: #: <syntaxhighlight lang="bash" highlight=""> wget http://mirror.centos.org/centos/7/os/x86_64/Packages/socat-1.7.3.2-2.el7.x86_64.rpm rpm -ivh socat-1.7.3.2-2.el7.x86_64.rpm # 或者: yum install socat </syntaxhighlight> # 安装 RabbitMQ: #: <syntaxhighlight lang="bash" highlight=""> # 首先导入密钥 rpm -import https://github.com/rabbitmq/rabbitmq-server/releases/download/v3.8.14/rabbitmq-server-3.8.14-1.el7.noarch.rpm.asc # 下载、安装 wget https://github.com/rabbitmq/rabbitmq-server/releases/download/v3.8.14/rabbitmq-server-3.8.14-1.el7.noarch.rpm rpm -ivh rabbitmq-server-3.8.14-1.el7.noarch.rpm </syntaxhighlight> === 启动 === <syntaxhighlight lang="bash" highlight=""> #启动服务 systemctl start rabbitmq-server #查看状态 systemctl status rabbitmq-server #设置为开机启动 systemctl enable rabbitmq-server </syntaxhighlight> === 升级 === 如果是 rabbitmq-server 的版本升级跨越稍微比较大,那么erlang版本就可能也需要升级。 * 升级 rabbitmq-sever 服务前,先停止 rabbitmq 服务和升级 erlang 版本。 安装服务的命令参数是 '''-i''' 即 install,而升级服务的命令参数为 '''-U''' 即 upgrade: <syntaxhighlight lang="bash" highlight=""> rabbitmqctl stop # 升级erlang版本 rpm -Uvh erlang-23.3.1-1.el7.x86_64.rpm rpm -Uvh rabbitmq-server-3.8.14-1.el7.noarch.rpm </syntaxhighlight> === 配置 === ==== 查看日志 ==== RabbitMQ 日志文件位于'''/var/log/rabbitmq'''目录下: : [[File:RabbitMQ:查看日志.png|400px]] * RabbitMQ启动时,会在'''/etc/rabbitmq'''下寻找'''rabbitmq.config'''文件。 *: 可以自己创建这个文件,或下载 RabbitMQ 的配置文件模板然后按照需求更改; ==== 启用管理平台插件 ==== RabbitMQ 安装后默认是不启动管理模块的,所以需要配置将管理模块启动: # 查看安装的插件: #: <syntaxhighlight lang="bash" highlight=""> rabbitmq-plugins list </syntaxhighlight> # 启用插件: #: <syntaxhighlight lang="bash" highlight=""> rabbitmqctl start_app rabbitmq-plugins enable rabbitmq_management rabbitmqctl stop #重启rabbitmq systemctl restart rabbitmq </syntaxhighlight> # 防火墙允许远程访问端口: #: <syntaxhighlight lang="bash" highlight=""> firewall-cmd --zone=public --add-port=80/tcp --permanent firewall-cmd --reload </syntaxhighlight> 再访问:[http://localhost:15672 http://localhost:15672] 就能进入管理平台了(默认账号和密码:guest / guest)。 ==== 开启用户远程访问 ==== 默认情况下,RabbitMQ 的默认的guest用户只允许本机访问。 : 即:如果使用 guest 登录:[http://xxxx.xxxx.xxxx.xxxx:15672 http://xxxx.xxxx.xxxx.xxxx:15672] 会提示“login failed”。 开启远程访问: # 拷贝 rabbitmq 默认配置文件: #: <syntaxhighlight lang="bash" highlight=""> cp /usr/share/doc/rabbitmq-server-3.6.6/rabbitmq.config.example /etc/rabbit/rabbitmq.config </syntaxhighlight> # 把 rabbitmq.config 文件里的 “{loopback_users, []}” 打开,重启服务即可: #: <syntaxhighlight lang="bash" highlight=""> vim /etc/rabbitmq/rabbitmq.config ... ... {loopback_users, []} ... ... </syntaxhighlight> # (重启服务器) 如此,新添加的用户,直接就可以从远程访问。 如果想让指定用户只能本地访问,可以将其用户名添加到上面的列表。如只允许 admin 用户本机访问: <syntaxhighlight lang="bash" highlight=""> vim /etc/rabbitmq/rabbitmq.config ... ... {loopback_users, ["admin"]} ... ... </syntaxhighlight> === 用户管理 === 用户管理相关命令: <syntaxhighlight lang="bash" highlight=""> # 添加用户 rabbitmqctl add_user username password # 设置用户权限:默认vhost的所有权限(/ 表示默认vhost) rabbitmqctl set_permissions -p / username ".*" ".*" ".*" # 设置用户角色:管理员 rabbitmqctl set_user_tags username administrator # 查看用户列表 rabbitmqctl list_users # 修改用户密码 rabbitmqctl change_password username newpassword # 删除用户 rabbitmqctl delete_user username </syntaxhighlight> '''用户角色''',大致可分为五类: # '''超级管理员(administrator)''':可登陆管理控制台(启用 management plugin 的情况下),可查看所有的信息,并且可以对用户,策略(policy)进行操作。 # '''监控者(monitoring)''':可登陆管理控制台(启用 management plugin 的情况下),同时可以查看 rabbitmq 节点的相关信息(进程数,内存使用情况,磁盘使用情况等)。 # '''策略制定者(policymaker)''':可登陆管理控制台(启用 management plugin 的情况下),同时可以对 policy 进行管理;但无法查看节点的相关信息。 # '''普通管理者(management)''':仅可登陆管理控制台(启用 management plugin 的情况下),无法看到节点信息,也无法对策略进行管理。 # '''其他''':无法登陆管理控制台,通常就是普通的'''生产者'''和'''消费者'''。 '''用户权限''',指的是用户对 '''exchange''','''queue''' 的操作权限,包括 # 配置权限:会影响到 exchange,queue 的声明和删除; # 读写权限:影响到从 queue 里取消息,向 exchange 发送消息以及 queue 和 exchange 的绑定(bind)操作。 相关命令: <syntaxhighlight lang="bash" highlight=""> # 设置用户权限 rabbitmqctl set_permissions -p VHostPath username ConfP WriteP ReadP # 查看(指定hostpath)所有用户的权限信息 rabbitmqctl list_permissions [-p VHostPath] # 查看指定用户的权限信息 rabbitmqctl list_user_permissions username # 清除用户的权限信息 rabbitmqctl clear_permissions [-p VHostPath] username </syntaxhighlight> == Docker方式部署 == 可以到docker官方镜像仓库找最新版本:'''[https://hub.docker.com/_/rabbitmq https://hub.docker.com/_/rabbitmq]''' === 安装 === <syntaxhighlight lang="bash" highlight=""> docker run -d --name rabbitmq -p 5672:5672 -p 15672:15672 rabbitmq:3-management </syntaxhighlight> 其中: * 下载并且启动了一个 rabbitmq 容器实例; * 开放了两个端口:5672(代码访问使用)和 15672(管理后台使用); * 使用的是 3-management 版本; === 容器维护 === # 关闭 RabbitMQ 容器: #: <syntaxhighlight lang="bash" highlight=""> docker stop rabbitmq </syntaxhighlight> # 启动 RabbitMQ 容器: #: <syntaxhighlight lang="bash" highlight=""> docker start rabbitmq </syntaxhighlight>
返回至“
RabbitMQ:安装部署
”。
导航菜单
个人工具
登录
命名空间
页面
讨论
大陆简体
已展开
已折叠
查看
阅读
查看源代码
查看历史
更多
已展开
已折叠
搜索
导航
首页
最近更改
随机页面
MediaWiki帮助
笔记
服务器
数据库
后端
前端
工具
《To do list》
日常
阅读
电影
摄影
其他
Software
Windows
WIKIOE
所有分类
所有页面
侧边栏
站点日志
工具
链入页面
相关更改
特殊页面
页面信息