望乡客 發表於 2023-8-31 11:03:00

CentOS 安装 RabbitMQ

<h2 id="安装">安装:</h2>
<blockquote>
<p>https://www.rabbitmq.com/download.html</p>
</blockquote>
<h3 id="1环境">1、环境</h3>
<p>查看系统版本</p>
<pre><code class="language-bash"># lsb_release -a
# cat /etc/centos-release
</code></pre>
<p>操作系统:CentOS 7.9 64位;</p>
<blockquote>
<p>注意:如果操作系统是最小化安装,需要额外安装环境依赖:<code>yum install build-essential openssl openssl-devel unixODBC unixODBC-devel make gcc gcc-c++ kernel-devel m4 ncurses-devel tk tc xz</code></p>
</blockquote>
<h3 id="2安装包下载">2、安装包下载</h3>
<p>下载后的文件:</p>
<ul>
<li>
<p>erlang-23.3.4.11-1.el7.x86_64.rpm</p>
</li>
<li>
<p>socat-1.7.3.2-2.el7.x86_64.rpm</p>
</li>
<li>
<p>rabbitmq-server-3.9.9-1.el7.noarch.rpm</p>
</li>
</ul>
<h4 id="21-rabbitmq"><strong>2.1 RabbitMQ</strong></h4>
<p>下载地址:<code>https://packagecloud.io/rabbitmq/</code></p>
<p><img src="https://img2023.cnblogs.com/blog/2137920/202308/2137920-20230831105023428-549494699.png" alt="" loading="lazy"><br>
<img src="https://img2023.cnblogs.com/blog/2137920/202308/2137920-20230831105102414-2052394883.png" alt="" loading="lazy"></p>
<p>根据自己的操作系统选择版本,我的操作系统是 CentOS 7 ,所以版本为 el/7。<br>
<img src="https://img2023.cnblogs.com/blog/2137920/202308/2137920-20230831105228447-1043432880.png" alt="" loading="lazy"><br>
<img src="https://img2023.cnblogs.com/blog/2137920/202308/2137920-20230831105412363-1556433745.png" alt="" loading="lazy"></p>
<h4 id="22-erlang"><strong>2.2 Erlang</strong></h4>
<p>下载地址:<code>https://packagecloud.io/rabbitmq</code> 版本号选择el/7<br>
<img src="https://img2023.cnblogs.com/blog/2137920/202308/2137920-20230831105702738-1426608762.png" alt="" loading="lazy"></p>
<h4 id="23-socat"><strong>2.3 socat</strong></h4>
<p>下载地址:<code>http://www.rpmfind.net/linux/rpm2html/search.php?query=socat&amp;submit=Search+...&amp;system=centos&amp;arch=</code><br>
<img src="https://img2023.cnblogs.com/blog/2137920/202308/2137920-20230831110052567-965122081.png" alt="" loading="lazy"></p>
<blockquote>
<p>注意:下载后缀带有 X86_64 的文件</p>
</blockquote>
<h3 id="3软件安装">3、软件安装</h3>
<h3 id="31上传文件">3.1、上传文件</h3>
<p>SSH 登录服务器上传下载到的文件。连接工具我用的是 MobaXterm,下载地址:https://mobaxterm.mobatek.net/</p>
<h3 id="32安装文件">3.2、安装文件</h3>
<pre><code class="language-bash">rpm -ivh erlang-23.3.4.11-1.el7.x86_64.rpm
rpm -ivh socat-1.7.3.2-2.el7.x86_64.rpm
rpm -ivh rabbitmq-server-3.9.9-1.el7.noarch.rpm
</code></pre>
<blockquote>
<p>特别注意:由于 RabbitMQ 是基于 Erlang 语言开发的,<strong>所以必须先安装Erlang。请按照顺序依次安装。</strong></p>
</blockquote>
<h3 id="32rabbitmq-配置">3.2、Rabbitmq 配置</h3>
<blockquote>
<p>注意:rabbitmq配置文件的后置是conf rabbitmq.conf</p>
</blockquote>
<p>创建文件 /etc/rabbitmq/rabbitmq.con,下载官方模板进行配置。</p>
<p>官网地址:<code>https://github.com/rabbitmq/rabbitmq-server/blob/v3.8.x/deps/rabbit/docs/rabbitmq.conf.example</code></p>
<h3 id="4常用命令">4、常用命令</h3>
<pre><code class="language-bash">### 启动相关[ enable开机启动 | disable禁止开机启动 | start启动 | restart重启 | stop停止 | status状态 ]
# 开机启动RabbitMQ服务
systemctl enable rabbitmq-server

# 禁止开机启动RabbitMQ服务
systemctl disable rabbitmq-server

# 服务启动
systemctl start rabbitmq-server

# 服务重启
systemctl restart rabbitmq-server

# 服务关闭
systemctl stop rabbitmq-server

# 服务状态
systemctl status rabbitmq-server

### 管理命令行 用来在不使用web管理界面情况下命令操作RabbitMQ
# 查看帮助
rabbitmqctl help

### 插件管理命令行[ enable开启 | list列表 | disable禁用 ]
# 开启
rabbitmqplugins enable

# 列表
rabbitmqplugins list

# 禁用
rabbitmqplugins disable


### 添加管理用户角色命令:
# 查看当前用户列表
rabbitmqctl list_users

# 修改密码
rabbitmqctl change_password Username Newpassword

# 删除用户
rabbitmqctl        delete_user Username

### 新增用户授权访问
# 1、新增一个用户 语法:rabbitmqctl add_user {useame} {password}
rabbitmqctl add_user root root

# 2、设置用户角色 语法:rabbitmqctl set_user_tags {useame} {tag...}
设置root为超级管理员rabbitmqctl set_user_tags root administrator

# 3、设置用户权限 语法是 rabbitmqctl set_permissions [-p vhost] {user}{conf}{write}{read}
# rabbitmq默认的虚拟主机host为"/"
rabbitmqctl set_permissions -p "/" root ".*" ".*" ".*"

### 角色有四种:
administrator:可以登录控制台、查看所有信息、并对rabbitmq进行管理
monToring:监控者;登录控制台,查看所有信息
policymaker:策略制定者;登录控制台指定策略
managment:普通管理员;登录控制
</code></pre>
<h3 id="5web管理插件">5、Web管理插件</h3>
<h4 id="51开启插件">5.1、开启插件</h4>
<pre><code class="language-bash">rabbitmq-plugins enable rabbitmq_management
</code></pre>
<blockquote>
<p>注意:先开启 rabbitmq-server,再执行。</p>
<p>访问地址::15672</p>
<p>注意:rabbitmq的默认账号仅限于本机localhost进行访问,所以需要添加一个远程登录的用户</p>
</blockquote>
<h3 id="rabbitmq端口的意义">RabbitMQ端口的意义</h3>
<ul>
<li>5672:rabbitmq的同学端口</li>
<li>25672:rabbitmq的节点间的CLI通讯端口</li>
<li>15672:rabbitmq HTTP_API的端口,管理员才能访问,用于管理RabbitMQ,需要启动Management插件。</li>
<li>1883、8883:MQTT插件启动时的端口</li>
<li>61613、61614:STOMP客户端插件启用的时候的端口</li>
<li>15674/15675:基于websocket的STOMP端口和MOTT端口</li>
</ul>
<h3 id="端口号修改">端口号修改</h3>
<p><strong>rabbitmq默认端口和activemq同时启用冲突问题</strong></p>
<h5 id="1默认5672端口号修改">1.默认5672端口号修改</h5>
<p>https://www.rabbitmq.com/configure.html</p>
<p>第一种方法:</p>
<p>在/etc/rabbitmq/rabbitmq.conf配置文件中加上如下配置:</p>
<pre><code>listeners.tcp.default = 5673
</code></pre>
<p>或者</p>
<pre><code>[
{
        rabbit, [
      {tcp_listeners, }
    ]
}
]
</code></pre>
<p>上面的示例将更改RabbitMQ监听AMQP0-9-1和AMQP 1.0协议客户端的连接端口从5672到5673</p>
<p>第二种方法:</p>
<p>在/etc/rabbitmq/rabbitmq-env.conf配置文件中添加如下配置:</p>
<pre><code>NODE_PORT=5673
</code></pre>
<blockquote>
<p>rabbitmq-env.conf配置文件中的配置优先级高于rabbitmq.conf配置文件中的配置</p>
</blockquote>
<h5 id="2默认15672端口号更改">2.默认15672端口号更改</h5>
<p>在/etc/rabbitmq/rabbitmq.conf配置文件中加上如下配置:</p>
<pre><code>management.tcp.port = 15673
</code></pre>
<h5 id="3默认25672端口号更改">3.默认25672端口号更改</h5>
<blockquote>
<p>25672端口用于节点间和CLI工具通信(Erlang分发服务器端口),并从动态范围分配(默认情况下仅限于单个端口,计算方式为AMQP 0-9-1和AMQP 1.0端口+20000),默认情况下通过 RABBITMQ_NODE_PORT 计算是25672,也可以通过RABBITMQ_DIST_PORT环境变量配置</p>
</blockquote>
<p>在/etc/rabbitmq/rabbitmq-env.conf配置文件中添加如下配置:</p>
<pre><code>DIST_PORT=25674
</code></pre>
<p>也可以通过设置 RABBITMQ_NODE_PORT计算 RABBITMQ_DIST_PORT 端口:</p>
<pre><code>NODE_PORT=5674
</code></pre>
<p>上面两种方案一种是直接设置节点和CLI工具通信的分发端口,另外一种是通过设置RabbitMQ服务器和客户端之间通信端口并计算得到25674端口号。</p>
<h5 id="4默认4369端口号更改">4.默认4369端口号更改</h5>
<p>EPMD默认端口号是4369,但是可以使用ERL_EPMD_PORT环境变量更改。</p>
<p>列出在当前运行的epmd中绑定注册的端口号及监听的分发端口:</p>
<pre><code># epmd -names
epmd: up and running on port 4369 with data:
name rabbit at port 25672
</code></pre>
<p>修改epmd守护进程绑定的端口号:</p>
<pre><code>export ERL_EPMD_PORT=4365
</code></pre>
<p>杀死epmd守护进程指令:</p>
<pre><code>epmd -kill
</code></pre>
<blockquote>
<p>当然直接在系统中使用export命令设置环境变量是可以生效的,但是只要系统重启环境变量就失效;可以在/etc/profile或/root/.bashrc文件配置系统环境变量,然后source 文件名就可以永久生效了。</p>
</blockquote>
<h3 id="报错">报错:</h3>
<h4 id="启动报错查看日志">启动报错查看日志:</h4>
<p><strong>1、使用命令 journalctl -xe ,定位到详细的报错日志信息。</strong><br>
<strong>2、执行 rabbitmq-server -detached,重新编译并运行rabbitmq服务,会打印出更标准的日志信息。</strong>出现Starting broker... completed with 3 plugins 说明执行成功了。</p>
<h4 id="报错信息">报错信息:</h4>
<p>1、ERROR: could not bind to distribution port 25672, it is in use by another node: rabbit@centos7</p>
<p>分析:</p>
<p>检查一下端口25672被谁占用了 <code>lsof -i:25672</code></p>
<p>这个不是杀死进程就可以解决的。</p>
<p>解决:</p>
<p>执行命令 <code>rabbitmqctl stop</code>,表示正在停止和停止节点rabbit@xx</p>
<p>再重新启动服务就不会报这个错误了。</p><br><br>
来源:https://www.cnblogs.com/caibaotimes/p/17669061.html
頁: [1]
查看完整版本: CentOS 安装 RabbitMQ